Changeset 7782970


Ignore:
Timestamp:
Aug 19, 2009 11:44:19 PM (11 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
9225d01b
Parents:
6f05328 (diff), 7a88f59 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

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

to branch 'i2p.i2p' (head e2ee75916f2ff6bd698585808a81071b44c978b1)

Files:
2 added
106 edited

Legend:

Unmodified
Added
Removed
  • apps/BOB/nbproject/private/private.xml

    r6f05328 r7782970  
    22<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
    33    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
     4    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
     5        <file>file:/usblv/NetBeansProjects/wi2p.i2p/apps/BOB/src/net/i2p/BOB/BOB.java</file>
     6    </open-files>
    47</project-private>
  • apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java

    r6f05328 r7782970  
    8686        out.write(HEADER);
    8787        out.write("</head><body>");
    88         out.write("<center><div class=\"page\"><table border=\"0\" width=\"100%\"><tr><td align=\"center\" class=\"snarkTitle\"><a href=\"" + req.getRequestURI() + peerString + "\" title=\"I2PSnark (Manual Page Refresh)\"><img src=\"/themes/console/images/i2psnark.png\" alt=\"I2PSnark Anonymous BitTorrent Client\" border=\"0\" class=\"snarklogo\"></a></table>");
    89         out.write("<div class=\"snarknavbar\"><a href=\"http://forum.i2p/viewforum.php?f=21\" class=\"snarkRefresh\" target=\"_blank\">Forum</a>\n");
     88        out.write("<center><div class=\"page\">");
     89        out.write("<div class=\"snarknavbar\"><a href=\"" + req.getRequestURI() + peerString + "\" title=\"Refresh page\" class=\"snarkRefresh\">I2PSnark</a> <a href=\"http://forum.i2p/viewforum.php?f=21\" class=\"snarkRefresh\" target=\"_blank\">Forum</a>\n");
    9090        Map trackers = _manager.getTrackers();
    9191        for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) {
     
    113113        if (_manager.util().connected() && snarks.size() > 0) {
    114114            if (peerParam != null)
    115                 out.write("(<a href=\"" + req.getRequestURI() + "\">Hide Peers</a>)<br />\n");
     115                out.write("(<a href=\"" + req.getRequestURI() + "\">Hide Peers</a>)<br>\n");
    116116            else
    117                 out.write("(<a href=\"" + req.getRequestURI() + "?p=1" + "\">Show Peers</a>)<br />\n");
     117                out.write("(<a href=\"" + req.getRequestURI() + "?p=1" + "\">Show Peers</a>)<br>\n");
    118118        }
    119119        out.write(TABLE_HEADER2);
    120         out.write("<th align=\"left\">");
     120        out.write("<th align=\"center\">");
    121121        if (_manager.util().connected())
    122122            out.write("<a href=\"" + uri + "?action=StopAll&nonce=" + _nonce +
    123                       "\" title=\"Stop all torrents and the i2p tunnel\">Stop All</a>");
     123                      "\" title=\"Stop all torrents and the I2P tunnel\">Stop All</a>");
    124124        else if (snarks.size() > 0)
    125125            out.write("<a href=\"" + uri + "?action=StartAll&nonce=" + _nonce +
    126                       "\" title=\"Start all torrents and the i2p tunnel\">Start All</a>");
     126                      "\" title=\"Start all torrents and the I2P tunnel\">Start All</a>");
    127127        else
    128128            out.write("&nbsp;");
     
    461461                if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
    462462                    err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "&hellip;";
    463                 statusString = "TrackerErr<br />(" + err + ")";
     463                statusString = "TrackerErr<br>(" + err + ")";
    464464            }
    465465        } else if (remaining <= 0) {
     
    493493        String rowClass = (row % 2 == 0 ? "snarkTorrentEven" : "snarkTorrentOdd");
    494494        out.write("<tr class=\"" + rowClass + "\">");
    495         out.write("<td align=\"left\" class=\"snarkTorrentStatus " + rowClass + "\">");
     495        out.write("<td align=\"center\" class=\"snarkTorrentStatus " + rowClass + "\">");
    496496        out.write(statusString + "</td>\n\t");
    497497        out.write("<td align=\"left\" class=\"snarkTorrentName " + rowClass + "\">");
     
    527527        out.write("</td>\n\t");
    528528       
    529         out.write("<td align=\"right\" class=\"snarkTorrentETA " + rowClass + "\">");
     529        out.write("<td align=\"center\" class=\"snarkTorrentETA " + rowClass + "\">");
    530530        if(isRunning && remainingSeconds > 0)
    531531            out.write(DataHelper.formatDuration(remainingSeconds*1000)); // (eta 6h)
     
    547547            out.write(formatSize(upBps) + "ps");
    548548        out.write("</td>\n\t");
    549         out.write("<td align=\"left\" class=\"snarkTorrentAction " + rowClass + "\">");
     549        out.write("<td align=\"center\" class=\"snarkTorrentAction " + rowClass + "\">");
    550550        String parameters = "&nonce=" + _nonce + "&torrent=" + Base64.encode(snark.meta.getInfoHash());
    551551        if (showPeers)
     
    559559                          + "\" title=\"Start the torrent\">Start</a> ");
    560560            out.write("<a href=\"" + uri + "?action=Remove" + parameters
    561                       + "\" title=\"Remove the torrent from the active list, deleting the .torrent file\">Remove</a><br />");
     561                      + "\" title=\"Remove the torrent from the active list, deleting the .torrent file\">Remove</a><br>");
    562562            out.write("<a href=\"" + uri + "?action=Delete" + parameters
    563563                      + "\" title=\"Delete the .torrent file and the associated data file(s)\">Delete</a> ");
     
    572572                    continue;
    573573                out.write("<tr class=\"" + rowClass + "\">");
    574                 out.write("<td class=\"snarkTorrentStatus " + rowClass + "\">");
     574                out.write("<td align=\"center\" class=\"snarkTorrentStatus " + rowClass + "\">");
    575575                out.write("</td>\n\t");
    576                 out.write("<td align=\"right\" class=\"snarkTorrentStatus " + rowClass + "\">");
     576                out.write("<td align=\"center\" class=\"snarkTorrentStatus " + rowClass + "\">");
    577577                String ch = peer.toString().substring(0, 4);
    578578                String client;
     
    593593                else
    594594                    client = "Unknown (" + ch + ')';
    595                 out.write("<font size=-1>" + client + "</font>&nbsp;&nbsp;<tt>" + peer.toString().substring(5, 9) + "</tt>");
     595                out.write("<font size=-1>" + client + "</font>&nbsp;&nbsp;" + peer.toString().substring(5, 9) + "");
    596596                if (showDebug)
    597597                    out.write(" inactive " + (peer.getInactiveTime() / 1000) + "s");
     
    661661        out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
    662662        out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
    663         out.write("<div class=\"addtorrentsection\"><span class=\"snarkConfigTitle\">Add Torrent:</span><br />\n");
     663        out.write("<div class=\"addtorrentsection\"><span class=\"snarkConfigTitle\">Add Torrent:</span><br>\n");
    664664        out.write("From URL&nbsp;: <input type=\"text\" name=\"newURL\" size=\"80\" value=\"" + newURL + "\" /> \n");
    665665        // not supporting from file at the moment, since the file name passed isn't always absolute (so it may not resolve)
    666         //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br />\n");
    667         out.write("<input type=\"submit\" value=\"Add torrent\" name=\"action\" /><br />\n");
    668         out.write("<span class=\"snarkAddInfo\">Alternately, you can copy .torrent files to " + _manager.getDataDir().getAbsolutePath() + "<br />\n");
    669         out.write("Removing that .torrent file will cause the torrent to stop.<br /></span>\n");
     666        //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
     667        out.write("<input type=\"submit\" value=\"Add torrent\" name=\"action\" /><br>\n");
     668        out.write("<span class=\"snarkAddInfo\">Alternately, you can copy .torrent files to " + _manager.getDataDir().getAbsolutePath() + "<br>\n");
     669        out.write("Removing that .torrent file will cause the torrent to stop.<br></span>\n");
    670670        out.write("</form>\n</span></div>"); 
    671671    }
     
    681681        out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
    682682        out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
    683         out.write("<span class=\"snarkConfigTitle\">Create Torrent:</span><br />\n");
    684         //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br />\n");
     683        out.write("<span class=\"snarkConfigTitle\">Create Torrent:</span><br>\n");
     684        //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
    685685        out.write("Data to seed: " + _manager.getDataDir().getAbsolutePath() + File.separatorChar
    686686                  + "<input type=\"text\" name=\"baseFile\" size=\"20\" value=\"" + baseFile
    687                   + "\" title=\"File to seed (must be within the specified path)\" /><br />\n");
     687                  + "\" title=\"File to seed (must be within the specified path)\" /><br>\n");
    688688        out.write("Tracker: <select name=\"announceURL\"><option value=\"\">Select a tracker</option>\n");
    689689        Map trackers = _manager.getTrackers();
     
    715715        out.write("<div class=\"configsection\"><span class=\"snarkConfig\">\n");
    716716        out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
    717         out.write("<span class=\"snarkConfigTitle\">Configuration:</span><br />\n");
     717        out.write("<span class=\"snarkConfigTitle\">Configuration:</span><br>\n");
    718718        out.write("Data directory: <input type=\"text\" size=\"40\" name=\"dataDir\" value=\"" + dataDir + "\" ");
    719         out.write("title=\"Directory to store torrents and data\" disabled=\"true\" /> <i>(Edit i2psnark.config and restart to change)</i><br />\n");
     719        out.write("title=\"Directory to store torrents and data\" disabled=\"true\" /> <i>(Edit i2psnark.config and restart to change)</i><br>\n");
    720720        out.write("Auto start: <input type=\"checkbox\" class=\"optbox\" name=\"autoStart\" value=\"true\" "
    721721                  + (autoStart ? "checked " : "")
     
    723723        //Auto add: <input type="checkbox" name="autoAdd" value="true" title="If true, automatically add torrents that are found in the data directory" />
    724724        //Auto stop: <input type="checkbox" name="autoStop" value="true" title="If true, automatically stop torrents that are removed from the data directory" />
    725         //out.write("<br />\n");
     725        //out.write("<br>\n");
    726726/*
    727727        out.write("Seed percentage: <select name=\"seedPct\" disabled=\"true\" >\n\t");
     
    738738        else
    739739            out.write("<option value=\"150\">150%</option>\n\t");
    740         out.write("</select><br />\n");
     740        out.write("</select><br>\n");
    741741*/
    742742        out.write("Total uploader limit: <input type=\"text\" name=\"upLimit\" value=\""
    743                   + _manager.util().getMaxUploaders() + "\" size=\"3\" maxlength=\"3\" /> peers<br />\n");
     743                  + _manager.util().getMaxUploaders() + "\" size=\"3\" maxlength=\"3\" /> peers<br>\n");
    744744        out.write("Up bandwidth limit: <input type=\"text\" name=\"upBW\" value=\""
    745                   + _manager.util().getMaxUpBW() + "\" size=\"3\" maxlength=\"3\" /> KBps <i>(Half <a href=\"/config.jsp\" target=\"blank\">available bandwidth</a> recommended.)</i><br />\n");
     745                  + _manager.util().getMaxUpBW() + "\" size=\"3\" maxlength=\"3\" /> KBps <i>(Half <a href=\"/config.jsp\" target=\"blank\">available bandwidth</a> recommended.)</i><br>\n");
    746746       
    747747        out.write("Use open trackers also: <input type=\"checkbox\" class=\"optbox\" name=\"useOpenTrackers\" value=\"true\" "
     
    749749                  + "title=\"If true, uses open trackers in addition\" /> ");
    750750        out.write("Announce URLs: <input type=\"text\" name=\"openTrackers\" value=\""
    751                   + openTrackers + "\" size=\"50\" /><br />\n");
     751                  + openTrackers + "\" size=\"50\" /><br>\n");
    752752
    753753        //out.write("\n");
     
    755755                  + _manager.util().getEepProxyHost() + "\" size=\"15\" /> ");
    756756        out.write("port: <input type=\"text\" name=\"eepPort\" value=\""
    757                   + _manager.util().getEepProxyPort() + "\" size=\"5\" maxlength=\"5\" /><br />\n");
     757                  + _manager.util().getEepProxyPort() + "\" size=\"5\" maxlength=\"5\" /><br>\n");
    758758        out.write("I2CP host: <input type=\"text\" name=\"i2cpHost\" value=\""
    759759                  + _manager.util().getI2CPHost() + "\" size=\"15\" /> ");
    760760        out.write("port: <input type=\"text\" name=\"i2cpPort\" value=\"" +
    761                   + _manager.util().getI2CPPort() + "\" size=\"5\" maxlength=\"5\" /> <br />\n");
     761                  + _manager.util().getI2CPPort() + "\" size=\"5\" maxlength=\"5\" /> <br>\n");
    762762        StringBuilder opts = new StringBuilder(64);
    763763        Map options = new TreeMap(_manager.util().getI2CPOptions());
     
    769769        }
    770770        out.write("I2CP opts: <input type=\"text\" name=\"i2cpOpts\" size=\"80\" value=\""
    771                   + opts.toString() + "\" /><br />\n");
     771                  + opts.toString() + "\" /><br>\n");
    772772        out.write("<input type=\"submit\" value=\"Save configuration\" name=\"action\" />\n");
    773773        out.write("</span>\n");
     
    796796    private static final String TABLE_HEADER = "<table border=\"0\" class=\"snarkTorrents\" width=\"100%\" cellpadding=\"0 10px\">\n" +
    797797                                               "<thead>\n" +
    798                                                "<tr><th align=\"left\">Status \n";
     798                                               "<tr><th align=\"center\">Status \n";
    799799
    800800    private static final String TABLE_HEADER2 = "</th>\n" +
    801801                                               "    <th align=\"left\">Torrent</th>\n" +
    802                                                "    <th align=\"right\">ETA</th>\n" +
     802                                               "    <th align=\"center\">ETA</th>\n" +
    803803                                               "    <th align=\"right\">Downloaded</th>\n" +
    804804                                               "    <th align=\"right\">Uploaded</th>\n" +
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java

    r6f05328 r7782970  
    346346                out.write(targetRequest.getBytes());
    347347                if (usingWWWProxy)
    348                     out.write(("<br>WWW proxy: " + wwwProxy).getBytes());
     348                    out.write(("<br />WWW proxy: " + wwwProxy).getBytes());
    349349            }
    350350            out.write("</div>".getBytes());
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java

    r6f05328 r7782970  
    389389                                    out.write(header);
    390390                                    out.write(("To visit the destination in your host database, click <a href=\"" + trustedURL + "\">here</a>. To visit the conflicting addresshelper link by temporarily giving it a random alias, click <a href=\"" + conflictURL + "\">here</a>.<P/>").getBytes());
    391                                     out.write("</div><div class=\"proxyfooter\"><p><i>I2P HTTP Proxy Server<br>Generated on: ".getBytes());
     391                                    out.write("</div><div class=\"proxyfooter\"><p><i>I2P HTTP Proxy Server<br />Generated on: ".getBytes());
    392392                                    out.write(new Date().toString().getBytes());
    393393                                    out.write("</i></div></body></html>\n".getBytes());
     
    706706                out.write(uri.getBytes());
    707707                out.write("</a>".getBytes());
    708                 if (usingWWWProxy) out.write(("<br>WWW proxy: " + wwwProxy).getBytes());
     708                if (usingWWWProxy) out.write(("<br />WWW proxy: " + wwwProxy).getBytes());
    709709                if (showAddrHelper) {
    710                     out.write("<br><br>Click a link below to look for an address helper by using a \"jump\" service:<br>".getBytes());
     710                    out.write("<br /><br />Click a link below to look for an address helper by using a \"jump\" service:<br />".getBytes());
    711711                    for (int i = 0; i < jumpServers.length; i++) {
    712712                        // Skip jump servers we don't know
     
    720720                        }
    721721
    722                         out.write("<br><a href=\"".getBytes());
     722                        out.write("<br /><a href=\"".getBytes());
    723723                        out.write(jumpServers[i].getBytes());
    724724                        out.write(uri.getBytes());
     
    730730                }
    731731            }
    732             out.write("</div><div class=\"proxyfooter\"><p><i>I2P HTTP Proxy Server<br>Generated on: ".getBytes());
     732            out.write("</div><div class=\"proxyfooter\"><p><i>I2P HTTP Proxy Server<br />Generated on: ".getBytes());
    733733            out.write(new Date().toString().getBytes());
    734734            out.write("</i></div></body></html>\n".getBytes());
  • apps/i2ptunnel/jsp/editClient.jsp

    r6f05328 r7782970  
    193193        <div id="tunnelAdvancedNetworking" class="panel">
    194194            <div class="header">
    195                 <h4>Advanced networking options</h4>
     195                <h4>Advanced networking options</h4><br />
    196196                <span class="comment">(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)</span>
    197197            </div>
     
    336336                <td><input value="1" type="radio" id="startOnLoad" name="newDest" title="New Destination"
    337337                     <%=(editBean.getNewDest(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />               
    338                 <td valign="center">Enable
     338                <td>Enable
    339339                <td><input value="0" type="radio" id="startOnLoad" name="newDest" title="New Destination"
    340340                     <%=(editBean.getNewDest(curTunnel) || editBean.getPersistentClientKey(curTunnel) ? "" : " checked=\"checked\"")%> class="tickbox" />               
    341                 <td valign="center">Disable
     341                <td>Disable
    342342                </table>
    343343            </div>
     
    412412            <div class="footer">
    413413                <div class="toolbox">
    414                     <span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted</span>
     414                    <span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted.</span>
     415                     <div class="separator"><hr /></div>
    415416                    <input type="hidden" value="true" name="removeConfirm" />
    416417                    <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><span class="accessKey">S</span>ave</button>
  • apps/i2ptunnel/jsp/editServer.jsp

    r6f05328 r7782970  
    400400            <div class="footer">
    401401                <div class="toolbox">
    402                     <span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted</span>
     402                    <span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted.</span>
     403                    <div class="separator"><hr /></div>
    403404                    <input type="hidden" value="true" name="removeConfirm" />
    404405                    <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><span class="accessKey">S</span>ave</button>
  • apps/i2ptunnel/jsp/index.jsp

    r6f05328 r7782970  
    55<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    66<head>
    7     <title>I2PTunnel Webmanager - List</title>
     7    <title>I2P Tunnel Manager - List</title>
    88   
    99    <meta htt
     
    107107            <%
    108108            } else if (indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
    109           %><span class="text">Base32 Address:<br><%=indexBean.getDestHashBase32(curServer)%>.b32.i2p</span>
     109          %><span class="text">Base32 Address:<br /><%=indexBean.getDestHashBase32(curServer)%>.b32.i2p</span>
    110110        <%
    111111            } else {
  • apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkClient.java

    r6f05328 r7782970  
    118118
    119119    /**
    120      * Fire up the client.  <code>Usage: StreamSinkClient [i2cpHost i2cpPort] sendSizeKB writeDelayMs serverDestFile [concurrentSends]</code> <br />
     120     * Fire up the client.  <code>Usage: StreamSinkClient [i2cpHost i2cpPort] sendSizeKB writeDelayMs serverDestFile [concurrentSends]</code> <br>
    121121     * <ul>
    122122     *  <li><b>sendSizeKB</b>: how many KB to send, or -1 for unlimited</li>
  • apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkSend.java

    r6f05328 r7782970  
    105105
    106106    /**
    107      * Fire up the client.  <code>Usage: StreamSinkClient sendFile writeDelayMs serverDestFile</code> <br />
     107     * Fire up the client.  <code>Usage: StreamSinkClient sendFile writeDelayMs serverDestFile</code> <br>
    108108     * <ul>
    109109     *  <li><b>sendFile</b>: filename to send</li>
  • apps/ministreaming/java/test/net/i2p/client/streaming/StreamSinkServer.java

    r6f05328 r7782970  
    156156   
    157157    /**
    158      * Fire up the streaming server.  <code>Usage: StreamSinkServer [i2cpHost i2cpPort] sinkDir ourDestFile [numHandlers]</code><br />
     158     * Fire up the streaming server.  <code>Usage: StreamSinkServer [i2cpHost i2cpPort] sinkDir ourDestFile [numHandlers]</code><br>
    159159     * <ul>
    160160     *  <li><b>sinkDir</b>: Directory to store received files in</li>
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java

    r6f05328 r7782970  
    1818    private String _config;
    1919   
     20    @Override
    2021    protected void processForm() {
    2122        if (_shouldSave) {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java

    r6f05328 r7782970  
    55import java.util.TreeSet;
    66
    7 import net.i2p.router.RouterContext;
    87
    98public class ConfigAdvancedHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java

    r6f05328 r7782970  
    2121 */
    2222public class ConfigClientsHandler extends FormHandler {
    23     private Log _log;
     23    private Log configClient_log;
    2424    private Map _settings;
    2525   
    2626    public ConfigClientsHandler() {
    27         _log = ContextHelper.getContext(null).logManager().getLog(ConfigClientsHandler.class);
     27        configClient_log = ContextHelper.getContext(null).logManager().getLog(ConfigClientsHandler.class);
    2828    }
    2929
     30    @Override
    3031    protected void processForm() {
    3132        if (_action.startsWith("Save Client")) {
     
    8182        }
    8283        ClientAppConfig ca = (ClientAppConfig) clients.get(i);
    83         LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), _log);
     84        LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), configClient_log);
    8485        addFormNotice("Client " + ca.clientName + " started.");
    8586    }
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java

    r6f05328 r7782970  
    77import java.util.TreeSet;
    88
    9 import net.i2p.router.RouterContext;
    109import net.i2p.router.startup.ClientAppConfig;
    1110
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java

    r6f05328 r7782970  
    11package net.i2p.router.web;
    22
    3 import net.i2p.I2PAppContext;
    43import net.i2p.data.DataFormatException;
    54import net.i2p.data.Hash;
     
    1413    private String _key;
    1514   
     15    @Override
    1616    protected void processForm() {
    1717        if ("Add key".equals(_action)) {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHelper.java

    r6f05328 r7782970  
    55import java.io.OutputStreamWriter;
    66
    7 import net.i2p.router.RouterContext;
    87
    98public class ConfigKeyringHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHandler.java

    r6f05328 r7782970  
    1919    private String _fileSize;
    2020   
     21    @Override
    2122    protected void processForm() {
    2223        if (_shouldSave) {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java

    r6f05328 r7782970  
    55import java.util.TreeSet;
    66
    7 import net.i2p.router.RouterContext;
    87
    98public class ConfigLoggingHelper extends HelperBase {
     
    4443            buf.append(prefix).append('=').append(level).append('\n');
    4544        }
    46         buf.append("</textarea><br />\n");
     45        buf.append("</textarea><br>\n");
    4746        buf.append("<i>Add additional logging statements above. Example: net.i2p.router.tunnel=WARN</i><br>");
    4847        buf.append("<i>Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN</i><br>");
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java

    r6f05328 r7782970  
    11package net.i2p.router.web;
    22
    3 import net.i2p.data.RouterInfo;
    43import net.i2p.router.Router;
    54import net.i2p.router.transport.FIFOBandwidthRefiller;
     
    76import net.i2p.router.transport.udp.UDPTransport;
    87import net.i2p.router.web.ConfigServiceHandler.UpdateWrapperManagerAndRekeyTask;
    9 import net.i2p.time.Timestamper;
    108
    119/**
     
    4543    private static final String PROP_HIDDEN = Router.PROP_HIDDEN_HIDDEN; // see Router for other choice
    4644   
     45    @Override
    4746    protected void processForm() {
    4847        if (_saveRequested || ( (_action != null) && ("Save changes".equals(_action)) )) {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java

    r6f05328 r7782970  
    55import net.i2p.router.CommSystemFacade;
    66import net.i2p.router.Router;
    7 import net.i2p.router.RouterContext;
    87import net.i2p.router.transport.Addresses;
    98import net.i2p.router.transport.TransportManager;
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java

    r6f05328 r7782970  
    11package net.i2p.router.web;
    22
    3 import net.i2p.I2PAppContext;
    4 import net.i2p.data.DataHelper;
    53import net.i2p.data.Hash;
    64import net.i2p.data.Base64;
    7 import net.i2p.router.Router;
    85import net.i2p.router.peermanager.PeerProfile;
    9 import net.i2p.util.Log;
    106
    117/**
     
    1713    private String _capacity;
    1814   
     15    @Override
    1916    protected void processForm() {
    2017        if ("Save Configuration".equals(_action)) {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHelper.java

    r6f05328 r7782970  
    55import java.io.OutputStreamWriter;
    66
    7 import net.i2p.router.RouterContext;
    87
    98public class ConfigPeerHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java

    r6f05328 r7782970  
    5050        if (shuttingDown) {
    5151            if (timeRemaining <= 0) {
    52                 return "<b>Shutdown imminent</b>";
     52                return "<center><b>Shutdown imminent</b></center>";
    5353            } else {
    54                 return "<b>Shutdown in " + DataHelper.formatDuration(timeRemaining) + "</b><br />"
     54                return "<center><b>Shutdown in " + DataHelper.formatDuration(timeRemaining) + "</b></center><br>"
    5555                     + buttons(urlBase, systemNonce, "shutdownImmediate,Shutdown immediately,cancelShutdown,Cancel shutdown");
    5656            }
    5757        } else if (restarting) {
    5858            if (timeRemaining <= 0) {
    59                 return "<b>Restart imminent</b>";
     59                return "<center><b>Restart imminent</b></center>";
    6060            } else {
    61                 return "<b>Restart in " + DataHelper.formatDuration(timeRemaining) + "</b><br />"
     61                return "<center><b>Restart in " + DataHelper.formatDuration(timeRemaining) + "</b></center><br>"
    6262                     + buttons(urlBase, systemNonce, "restartImmediate,Restart immediately,cancelShutdown,Cancel restart");
    6363            }
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java

    r6f05328 r7782970  
    11package net.i2p.router.web;
    22
    3 import java.io.File;
    4 import java.io.FileWriter;
    53import java.io.IOException;
    64import java.util.List;
     
    86import net.i2p.apps.systray.SysTray;
    97import net.i2p.apps.systray.UrlLauncher;
    10 import net.i2p.data.DataHelper;
    118import net.i2p.router.Router;
    129import net.i2p.router.startup.ClientAppConfig;
     
    5047    }
    5148   
     49    @Override
    5250    protected void processForm() {
    5351        if (_action == null) return;
     
    9694                if (tray != null) {
    9795                    tray.show();
    98                     addFormNotice("Systray enabled");
     96                    addFormNotice("System tray icon enabled.");
    9997                } else {
    100                     addFormNotice("Systray not supported on this platform");
     98                    addFormNotice("System tray icon feature not supported on this platform. Sorry!");
    10199                }
    102100            } catch (Throwable t) {
     
    108106                if (tray != null) {
    109107                    tray.hide();
    110                     addFormNotice("Systray disabled");
     108                    addFormNotice("System tray icon disabled.");
    111109                } else {
    112                     addFormNotice("Systray not supported on this platform");
     110                    addFormNotice("System tray icon feature not supported on this platform. Sorry!");
    113111                }
    114112            } catch (Throwable t) {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java

    r6f05328 r7782970  
    2929    }
    3030   
     31    @Override
    3132    protected void processForm() {
    3233        saveChanges();
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java

    r6f05328 r7782970  
    99import java.util.StringTokenizer;
    1010
    11 import net.i2p.router.RouterContext;
    1211import net.i2p.stat.FrequencyStat;
    1312import net.i2p.stat.Rate;
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java

    r6f05328 r7782970  
    1515 */
    1616public class ConfigTunnelsHandler extends FormHandler {
    17     private Log _log;
     17    private Log configTunnel_log;
    1818    private Map _settings;
    1919    private boolean _shouldSave;
     
    2323    }
    2424   
     25    @Override
    2526    protected void processForm() {
    2627        if (_shouldSave) {
     
    4445     */
    4546    private void saveChanges() {
    46         _log = _context.logManager().getLog(ConfigTunnelsHandler.class);
     47        configTunnel_log = _context.logManager().getLog(ConfigTunnelsHandler.class);
    4748        boolean saveRequired = false;
    4849       
    49         if (_log.shouldLog(Log.DEBUG))
    50             _log.debug("Saving changes, with props = " + _settings + ".");
     50        if (configTunnel_log.shouldLog(Log.DEBUG))
     51            configTunnel_log.debug("Saving changes, with props = " + _settings + ".");
    5152       
    5253        int updated = 0;
     
    111112           
    112113            if ("exploratory".equals(poolName)) {
    113                 if (_log.shouldLog(Log.DEBUG)) {
    114                     _log.debug("Inbound exploratory settings: " + in);
    115                     _log.debug("Outbound exploratory settings: " + out);
     114                if (configTunnel_log.shouldLog(Log.DEBUG)) {
     115                    configTunnel_log.debug("Inbound exploratory settings: " + in);
     116                    configTunnel_log.debug("Outbound exploratory settings: " + out);
    116117                }
    117118                _context.tunnelManager().setInboundSettings(in);
    118119                _context.tunnelManager().setOutboundSettings(out);
    119120            } else {
    120                 if (_log.shouldLog(Log.DEBUG)) {
    121                     _log.debug("Inbound settings for " + client.toBase64() + ": " + in);
    122                     _log.debug("Outbound settings for " + client.toBase64() + ": " + out);
     121                if (configTunnel_log.shouldLog(Log.DEBUG)) {
     122                    configTunnel_log.debug("Inbound settings for " + client.toBase64() + ": " + in);
     123                    configTunnel_log.debug("Outbound settings for " + client.toBase64() + ": " + out);
    123124                }
    124125                _context.tunnelManager().setInboundSettings(client, in);
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java

    r6f05328 r7782970  
    66
    77import net.i2p.data.Destination;
    8 import net.i2p.router.RouterContext;
    98import net.i2p.router.TunnelPoolSettings;
    109
     
    7675            buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities.</font></th></tr>");
    7776
    78 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");
     77buf.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");
    7978
    8079//        buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
     
    178177        }
    179178        buf.append("\"/></td></tr>\n");
    180 //        buf.append("<tr><td colspan=\"3\"><hr /></td></tr>\n");
     179//        buf.append("<tr><td colspan=\"3\"><br></td></tr>\n");
    181180    }
    182181
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java

    r6f05328 r7782970  
    66    private String _config;
    77   
     8    @Override
    89    protected void processForm() {
    910        if (_shouldSave)
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java

    r6f05328 r7782970  
    1313            if (theme.equals(current))
    1414                buf.append("checked=\"true\" ");
    15             buf.append("value=\"").append(theme).append("\"/>").append(theme).append("<br />\n");
     15            buf.append("value=\"").append(theme).append("\"/>").append(theme).append("<br>\n");
    1616        }
    1717        return buf.toString();
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java

    r6f05328 r7782970  
    5050   
    5151   
     52    @Override
    5253    protected void processForm() {
    5354        if ("Check for update now".equals(_action)) {
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java

    r6f05328 r7782970  
    44import net.i2p.crypto.TrustedUpdate;
    55import net.i2p.data.DataHelper;
    6 import net.i2p.router.RouterContext;
    76
    87public class ConfigUpdateHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java

    r6f05328 r7782970  
    22
    33import java.io.IOException;
    4 import java.io.Writer;
    54import java.util.Comparator;
    65import java.util.Iterator;
     
    98
    109import net.i2p.data.DataHelper;
    11 import net.i2p.router.RouterContext;
    1210import net.i2p.stat.Rate;
    1311
     
    6967                           + "&amp;width=" + _width
    7068                           + "&amp;height=" + (_height - 14)
    71                            + "\" title=\"Combined bandwidth graph\" /></a>\n");
     69                           + "\" alt=\"Combined bandwidth graph\" title=\"Combined bandwidth graph\"></a>\n");
    7270            }
    7371           
     
    8381                           + "&amp;width=" + (3 * _width)
    8482                           + "&amp;height=" + (3 * _height)
    85                            + "\" target=\"_blank\" />");
     83                           + "\" target=\"_blank\">");
    8684                _out.write("<img class=\"statimage\" border=\"0\" width=\""
    8785                           + (_width + 83) + "\" height=\"" + (_height + 92)
     
    9391                           + "&amp;width=" + _width
    9492                           + "&amp;height=" + _height
    95                            + "\" title=\"" + title + "\" /></a>\n");
     93                           + "\" alt=\"" + title
     94                           + "\" title=\"" + title + "\"></a>\n");
    9695            }
    9796            if (_refreshDelaySeconds > 0)
    9897                // shorten the refresh by 3 seconds so we beat the iframe
    99                 _out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\" />\n");
     98                _out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">\n");
    10099
    101100        } catch (IOException ioe) {
     
    106105    public String getForm() {
    107106        try {
    108             _out.write("<hr /><h3>Configure Graph Display</h3>");
    109             _out.write("<p />[<a href=\"configstats.jsp\">Select Stats to Graph</a>]<p />");
     107            _out.write("<br><h3>Configure Graph Display [<a href=\"configstats.jsp\">Select Stats</a>]</h3>");
    110108            _out.write("<form action=\"graphs.jsp\" method=\"GET\">");
    111             _out.write("Periods: <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\" /><br />\n");
    112             _out.write("Plot averages: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + " /> ");
    113             _out.write("or plot events: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + " /><br />\n");
     109            _out.write("Periods: <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
     110            _out.write("Plot averages: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + "> ");
     111            _out.write("or plot events: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + "><br>\n");
    114112            _out.write("Image sizes: width: <input size=\"4\" type=\"text\" name=\"width\" value=\"" + _width
    115                        + "\" /> pixels, height: <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height 
    116                        + "\" /><br />\n");
    117             _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");
    118             _out.write("<hr /><div class=\"formaction\"><input type=\"submit\" value=\"Redraw\" /></div></div>");
     113                       + "\"> pixels, height: <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height 
     114                       + "\"><br>\n");
     115            _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");
     116            _out.write("<hr><div class=\"formaction\"><input type=\"submit\" value=\"Redraw\"></div></form>");
    119117        } catch (IOException ioe) {
    120118            ioe.printStackTrace();
  • apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java

    r6f05328 r7782970  
    44import java.io.IOException;
    55import java.io.OutputStreamWriter;
    6 import java.io.Writer;
    76
    8 import net.i2p.router.RouterContext;
    97
    108public class JobQueueHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java

    r6f05328 r7782970  
    1111    public String getLogs() {
    1212        String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages());
    13         return "Location: <code>" + _context.logManager().currentFile() + "</code><br /><br />" + str;
     13        return "Location: <code>" + _context.logManager().currentFile() + "</code><br><br>" + str;
    1414    }
    1515   
  • apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java

    r6f05328 r7782970  
    55import java.util.Map;
    66
    7 import net.i2p.router.RouterContext;
    87
    98public class NavHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java

    r6f05328 r7782970  
    44import java.io.IOException;
    55import java.io.OutputStreamWriter;
    6 import java.io.Writer;
    76
    8 import net.i2p.router.RouterContext;
    97
    108public class NetDbHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/OldConsoleHelper.java

    r6f05328 r7782970  
    44import java.io.IOException;
    55import java.io.OutputStreamWriter;
    6 import java.io.Writer;
    76
    8 import net.i2p.router.RouterContext;
    97
    108public class OldConsoleHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/PeerHelper.java

    r6f05328 r7782970  
    22
    33import java.io.IOException;
    4 import java.io.Writer;
    54
    6 import net.i2p.router.RouterContext;
    75
    86public class PeerHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java

    r6f05328 r7782970  
    55import java.io.OutputStreamWriter;
    66
    7 import net.i2p.router.RouterContext;
    87
    98public class ProfilesHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/StatHelper.java

    r6f05328 r7782970  
    11package net.i2p.router.web;
    22
    3 import java.io.Writer;
    43import java.util.Iterator;
    54import java.util.Set;
  • apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java

    r6f05328 r7782970  
    8181                buf.append("\">");
    8282                buf.append(stat);
    83                 buf.append("</a></b><br />");
     83                buf.append("</a></b><br>");
    8484                if (_context.statManager().isFrequency(stat))
    8585                    renderFrequency(stat, buf);
     
    8989                buf.setLength(0);
    9090            }
    91             out.write("</ul><hr />");
     91            out.write("</ul><br>");
    9292        }
    9393        out.flush();
     
    9898        buf.append("<i>");
    9999        buf.append(freq.getDescription());
    100         buf.append("</i><br />");
     100        buf.append("</i><br>");
    101101        long uptime = _context.router().getUptime();
    102102        long periods[] = freq.getPeriods();
     
    125125            buf.append(curFreq.getEventCount());
    126126            buf.append(" events)");
    127             buf.append("<br />");
    128         }
    129         buf.append("<br />");
     127            buf.append("<br>");
     128        }
     129        buf.append("<br>");
    130130    }
    131131   
     
    136136            buf.append("<i>");
    137137            buf.append(d);
    138             buf.append("</i><br />");
     138            buf.append("</i><br>");
    139139        }
    140140        if (rate.getLifetimeEventCount() <= 0) {
    141             buf.append("No lifetime events<br />&nbsp;<br />");
     141            buf.append("No lifetime events<br>&nbsp;<br>");
    142142            return;
    143143        }
     
    218218        buf.append(" over ");
    219219        buf.append(rate.getLifetimeEventCount());
    220         buf.append(" events<br /></li>");
     220        buf.append(" events<br></li>");
    221221        buf.append("</ul>");
    222         buf.append("<br />");
     222        buf.append("<br>");
    223223    }
    224224   
  • apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java

    r6f05328 r7782970  
    22
    33import java.text.Collator;
    4 import java.text.DateFormat;
    54import java.text.DecimalFormat;
    65import java.util.ArrayList;
    76import java.util.Collections;
    87import java.util.Comparator;
    9 import java.util.Date;
    108import java.util.Iterator;
    119import java.util.List;
    12 import java.util.Locale;
    1310
    1411import net.i2p.data.DataHelper;
     
    1916import net.i2p.router.CommSystemFacade;
    2017import net.i2p.router.Router;
    21 import net.i2p.router.RouterContext;
    2218import net.i2p.router.RouterVersion;
    2319import net.i2p.router.TunnelPoolSettings;
     
    368364            Hash h = client.calculateHash();
    369365           
    370             buf.append("<tr><td align=\"right\"><b><img src=\"/themes/console/images/");
     366            buf.append("<tr><td align=\"right\"><img src=\"/themes/console/images/");
    371367            if (_context.clientManager().shouldPublishLeaseSet(h))
    372                 buf.append("server.png\" alt=\"Server\" title=\"Server\" />");
     368                buf.append("server.png\" alt=\"Server\" title=\"Server\">");
    373369            else
    374                 buf.append("client.png\" alt=\"Client\" title=\"Client\" />");
    375             buf.append("</td><td align=\"left\"><a href=\"tunnels.jsp#").append(h.toBase64().substring(0,4));
     370                buf.append("client.png\" alt=\"Client\" title=\"Client\">");
     371            buf.append("</td><td align=\"left\"><b><a href=\"tunnels.jsp#").append(h.toBase64().substring(0,4));
    376372            buf.append("\" target=\"_top\" title=\"Show tunnels\">");
    377373            if (name.length() < 16)
     
    379375            else
    380376                buf.append(name.substring(0,15)).append("&hellip;");
    381             buf.append("</a></td>\n");
     377            buf.append("</a></b></td>\n");
    382378            LeaseSet ls = _context.netDb().lookupLeaseSetLocally(h);
    383379            if (ls != null) {
     
    385381                if (timeToExpire < 0) {
    386382                    // red or yellow light                 
    387                     buf.append("<td align=\right\"><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Rebuilding&hellip;\" title=\"Leases expired ").append(DataHelper.formatDuration(0-timeToExpire));
    388                     buf.append(" ago. Rebuilding..\"></td></tr>\n");                   
     383                    buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Rebuilding&hellip;\" title=\"Leases expired ").append(DataHelper.formatDuration(0-timeToExpire));
     384                    buf.append(" ago. Rebuilding&hellip;\"></td></tr>\n");                   
    389385            } else {
    390386                    // green light
    391                     buf.append("<td align=\right\"><img src=\"/themes/console/images/local_up.png\" alt=\"Ready\" title=\"Ready\"></td></tr>\n");
     387                    buf.append("<td><img src=\"/themes/console/images/local_up.png\" alt=\"Ready\" title=\"Ready\"></td></tr>\n");
    392388                }
    393389            } else {
    394390                // yellow light
    395                     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");
     391                    buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building&hellip;\" title=\"Tunnel building in progress&hellip;\"></td></tr>\n");
    396392            }
    397393        }
  • apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java

    r6f05328 r7782970  
    133133    long now() { return _context.clock().now(); }
    134134   
     135    @Override
    135136    public boolean equals(Object obj) {
    136137        return ((obj instanceof SummaryListener) && ((SummaryListener)obj)._rate.equals(_rate));
    137138    }
     139    @Override
    138140    public int hashCode() { return _rate.hashCode(); }
    139141}
  • apps/routerconsole/java/src/net/i2p/router/web/TunnelHelper.java

    r6f05328 r7782970  
    44import java.io.IOException;
    55import java.io.OutputStreamWriter;
    6 import java.io.Writer;
    76
    8 import net.i2p.router.RouterContext;
    97
    108public class TunnelHelper extends HelperBase {
  • apps/routerconsole/java/src/net/i2p/router/web/UnsignedUpdateHandler.java

    r6f05328 r7782970  
    33import java.io.File;
    44
    5 import net.i2p.I2PAppContext;
    65import net.i2p.router.Router;
    76import net.i2p.router.RouterContext;
     
    110109                if ("install".equals(policy)) {
    111110                    _log.log(Log.CRIT, "Update was downloaded, restarting to install it");
    112                     _status = "<b>Update downloaded</b><br />Restarting";
     111                    _status = "<b>Update downloaded</b><br>Restarting";
    113112                    restart();
    114113                } else {
    115114                    _log.log(Log.CRIT, "Update was downloaded, will be installed at next restart");
    116                     _status = "<b>Update downloaded</b><br />";
     115                    _status = "<b>Update downloaded</b><br>";
    117116                    if (System.getProperty("wrapper.version") != null)
    118117                        _status += "Click Restart to install";
  • apps/routerconsole/java/src/net/i2p/router/web/UpdateHandler.java

    r6f05328 r7782970  
    202202                if ("install".equals(policy)) {
    203203                    _log.log(Log.CRIT, "Update was VERIFIED, restarting to install it");
    204                     _status = "<b>Update verified</b><br />Restarting";
     204                    _status = "<b>Update verified</b><br>Restarting";
    205205                    restart();
    206206                } else {
    207207                    _log.log(Log.CRIT, "Update was VERIFIED, will be installed at next restart");
    208                     _status = "<b>Update downloaded</b><br />";
     208                    _status = "<b>Update downloaded</b><br>";
    209209                    if (System.getProperty("wrapper.version") != null)
    210210                        _status += "Click Restart to install";
  • apps/routerconsole/jsp/config.jsp

    r6f05328 r7782970  
    1414<div class="main" id="main">
    1515 <%@include file="confignav.jsp" %>
    16  
     16
    1717 <jsp:useBean class="net.i2p.router.web.ConfigNetHandler" id="formhandler" scope="request" />
    1818 <jsp:setProperty name="formhandler" property="*" />
     
    2626 <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigNetHandler.nonce")%>" />
    2727 <input type="hidden" name="action" value="blah" />
    28  <h3>Bandwidth limiter</h3>
    29  <p>
     28 <h3>Bandwidth limiter</h3><p>
    3029 <b>I2P will work best if you configure your rates to match the speed of your internet connection.</b>
    31  </p>
    32 <p>
    33    <div class="wideload">
    34     <table>
    35     <tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="inboundRate" />" /> KBps
    36     In <td>(<jsp:getProperty name="nethelper" property="inboundRateBits" />)<br />
    37 <!-- let's keep this simple...
    38  bursting up to
     30 </p><p>
     31   <div class="wideload"><table><tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="inboundRate" />" /> KBps In
     32        </td><td>(<jsp:getProperty name="nethelper" property="inboundRateBits" />)</td>
     33<!-- let's keep this simple...
     34 bursting up to
    3935    <input name="inboundburstrate" type="text" size="5" value="<jsp:getProperty name="nethelper" property="inboundBurstRate" />" /> KBps for
    40     <jsp:getProperty name="nethelper" property="inboundBurstFactorBox" /><br />
    41 -->
    42     <tr><td><input style="text-align: right; width: 5em;" name="outboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="outboundRate" />" /> KBps
    43     Out <td>(<jsp:getProperty name="nethelper" property="outboundRateBits" />)<br />
    44 <!-- let's keep this simple...
    45  bursting up to
     36    <jsp:getProperty name="nethelper" property="inboundBurstFactorBox" /><br>
     37-->
     38    </tr><tr>
     39        <td><input style="text-align: right; width: 5em;" name="outboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="outboundRate" />" /> KBps Out
     40        </td><td>(<jsp:getProperty name="nethelper" property="outboundRateBits" />)</td>
     41<!-- let's keep this simple...
     42 bursting up to
    4643    <input name="outboundburstrate" type="text" size="2" value="<jsp:getProperty name="nethelper" property="outboundBurstRate" />" /> KBps for
    47   <jsp:getProperty name="nethelper" property="outboundBurstFactorBox" /><br />
    48  <i>KBps = kilobytes per second = 1024 bytes per second = 8192 bits per second.<br />
    49     A negative rate sets the default.</i><br />
    50 -->
    51     <tr><td><jsp:getProperty name="nethelper" property="sharePercentageBox" />
    52     Share <td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)<br />
    53   </table></div>
    54  </p><p>
     44  <jsp:getProperty name="nethelper" property="outboundBurstFactorBox" /><br>
     45 <i>KBps = kilobytes per second = 1024 bytes per second = 8192 bits per second.<br>
     46    A negative rate sets the default.</i><br>
     47-->
     48    </tr><tr>
     49        <td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> Share</td>
     50        <td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)
     51</td></tr></table></div></p><p>
    5552 <% int share = nethelper.getShareBandwidth();
    5653    if (share < 12) {
     
    5855        out.print("I2P requires at least 12KBps to enable sharing. ");
    5956        out.print("Please enable sharing (participating in tunnels) by configuring more bandwidth. ");
    60         out.print("It improves your anonymity by creating cover traffic, and helps the network.<br />");
     57        out.print("It improves your anonymity by creating cover traffic, and helps the network.<br>");
    6158    } else {
    6259        out.print("You have configured I2P to share<b> " + share + "KBps</b>. ");
    63         out.print("The higher the share bandwidth the more you improve your anonymity and help the network.<hr />");
     60        out.print("The higher the share bandwidth the more you improve your anonymity and help the network.<hr>");
    6461    }
    6562 %>
    66  </p><div class="formaction">
     63</p><div class="formaction">
    6764<input type="submit" name="save" value="Save changes" /> <input type="reset" value="Cancel" /></div>
    6865 <!--
     
    7269 to see what sort of throughput they can handle.  This improves your router's ability
    7370 to pick faster peers, but can cost substantial bandwidth.  Relevant data from the
    74  load testing is fed into the profiles as well as the 
     71 load testing is fed into the profiles as well as the
    7572 <a href="oldstats.jsp#test.rtt">test.rtt</a> and related stats.</p>
    76  <hr />
    77 -->
    78  <h3>IP and Transport Configuration</h3>
    79  <p>
     73 <br>
     74-->
     75 <h3>IP and Transport Configuration</h3><p>
    8076 <b>The default settings will work for most people. There is <a href="#chelp">help below</a>.</b>
    81  </p><p>
    82  <b>UPnP Configuration:</b><br />
     77 </p><p><b>UPnP Configuration:</b><br>
    8378    <input type="checkbox" class="optbox" name="upnp" value="true" <jsp:getProperty name="nethelper" property="upnpChecked" /> />
    8479    Enable UPnP to open firewall ports - <a href="peers.jsp#upnp">UPnP status</a>
    85  </p><p>
    86  <b>IP Configuration:</b><br />
    87  Externally reachable hostname or IP address:<br />
     80 </p><p><b>IP Configuration:</b><br>
     81 Externally reachable hostname or IP address:<br>
    8882    <input type="radio" class="optbox" name="udpAutoIP" value="local,upnp,ssu" <%=nethelper.getUdpAutoIPChecked(3) %> />
    89     Use all auto-detect methods<br />
     83    Use all auto-detect methods<br>
    9084    <input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> />
    91     Disable UPnP IP address detection<br />
     85    Disable UPnP IP address detection<br>
    9286    <input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> />
    93     Ignore local interface IP address<br />
     87    Ignore local interface IP address<br>
    9488    <input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> />
    95     Use SSU IP address detection only<br />
     89    Use SSU IP address detection only<br>
    9690    <input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> />
    9791    Specify hostname or IP:
     
    110104       }
    111105    %>
    112     <br />
     106    <br>
    113107    <input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> />
    114     Hidden mode - do not publish IP <i>(prevents participating traffic)</i><br />
    115  </p><p>
    116  <b>UDP Configuration:</b><br />
     108    Hidden mode - do not publish IP <i>(prevents participating traffic)</i><br>
     109 </p><p><b>UDP Configuration:</b><br>
    117110 UDP port:
    118  <input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" /><br />
     111 <input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" /><br>
    119112<!-- let's keep this simple...
    120113<input type="checkbox" class="optbox" name="requireIntroductions" value="true" <jsp:getProperty name="nethelper" property="requireIntroductionsChecked" /> />
     
    122115 <i>(Enable if you cannot open your firewall)</i>
    123116 </p><p>
    124  Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br />
    125 -->
    126  </p><p>
    127  <b>TCP Configuration:</b><br />
    128  Externally reachable hostname or IP address:<br />
     117 Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br>
     118-->
     119 </p><p>
     120 <b>TCP Configuration:</b><br>
     121 Externally reachable hostname or IP address:<br>
    129122    <input type="radio" class="optbox" name="ntcpAutoIP" value="true" <%=nethelper.getTcpAutoIPChecked(2) %> />
    130123    Use auto-detected IP address
    131124    <i>(currently <jsp:getProperty name="nethelper" property="udpIP" />)</i>
    132     if we are not firewalled<br />
     125    if we are not firewalled<br>
    133126    <input type="radio" class="optbox" name="ntcpAutoIP" value="always" <%=nethelper.getTcpAutoIPChecked(3) %> />
    134     Always use auto-detected IP address (Not firewalled)<br />
     127    Always use auto-detected IP address (Not firewalled)<br>
    135128    <input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> />
    136129    Specify hostname or IP:
    137     <input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" /><br />
     130    <input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" /><br>
    138131    <input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(0) %> />
    139     Disable inbound (Firewalled)<br />
     132    Disable inbound (Firewalled)<br>
    140133    <input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> />
    141     Completely disable <i>(select only if behind a firewall that throttles or blocks outbound TCP)</i><br />
    142  </p><p>
    143  Externally reachable TCP port:<br />
     134    Completely disable <i>(select only if behind a firewall that throttles or blocks outbound TCP)</i><br>
     135 </p><p>
     136 Externally reachable TCP port:<br>
    144137    <input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> />
    145138    Use the same port configured for UDP
    146     <i>(currently <jsp:getProperty name="nethelper" property="udpPort" />)</i><br />
     139    <i>(currently <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
    147140    <input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> />
    148141    Specify Port:
    149     <input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" /><br />
    150  </p><p><b>Note: Changing these settings will restart your router.</b>
    151  </p><hr><div class="formaction">
     142    <input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" /><br>
     143 </p><p><b>Note: Changing these settings will restart your router.</b></p>
     144<hr><div class="formaction">
    152145 <input type="submit" name="save" value="Save changes" /> <input type="reset" value="Cancel" />
    153 </div>
    154 </div>
    155 <h3><a name="chelp">Configuration Help:</a></h3>
    156  <div align="justify">
    157  <p>
     146</div><h3><a name="chelp">Configuration Help:</a></h3><div align="justify"><p>
    158147 While I2P will work fine behind most firewalls, your speeds and network integration will generally improve
    159148 if the I2P port (generally 8887) is forwarded for both UDP and TCP.
     
    167156<!-- let's keep this simple...
    168157<input type="submit" name="recheckReachability" value="Check network reachability..." />
    169 -->
    170  </p><p>
     158</p>
     159-->
     160<p>
    171161 UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address
    172162 and forward ports.
    173163 UPnP support is beta, and may not work for any number of reasons:
    174  <ul>
     164<ul>
    175165<li class="tidylist">No UPnP-compatible device present
    176166<li class="tidylist">UPnP disabled on the device
     
    179169<li class="tidylist">Multiple firewall/routers in the internet connection path
    180170<li class="tidylist">UPnP device change, reset, or address change
    181  </ul><br>
     171</ul><br>
    182172 Reviewing the <a href="peers.jsp#upnp">UPnP status</a> may help.
    183173 UPnP may be enabled or disabled above, but a change requires a router restart to take effect.
    184  </p><p>Hostnames entered above will be published in the network database.
     174</p><p>Hostnames entered above will be published in the network database.
    185175    They are <b>not private</b>.
    186176    Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.
    187177    If you specify the wrong IP address or
    188178    hostname, or do not properly configure your NAT or firewall, your network performance will degrade
    189     substantially.  When in doubt, leave the settings at the defaults.</p>
    190  </p>
    191 <h3><a name="help">Reachability Help:</a></h3>
    192  <p>
     179    substantially.  When in doubt, leave the settings at the defaults.
     180</p>
     181<h3><a name="help">Reachability Help:</a></h3><p>
    193182 While I2P will work fine behind most firewalls, your speeds and network integration will generally improve
    194183 if the I2P port (generally 8887) to both UDP and TCP.
     
    245234     This is usually due to a port 7654 conflict. Check the logs to verify. Do you have another I2P instance running?
    246235     Stop the conflicting program and restart I2P.
    247  </ul>
    248  </p>
    249  <hr />
     236 </ul></p><br>
    250237      <!--
    251238 <b>Dynamic Router Keys: </b>
    252  <input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br />
     239 <input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br>
    253240 <p>
    254241 This setting causes your router identity to be regenerated every time your IP address
     
    257244 very weak adversaries, help frustrate trivial
    258245 <a href="http://www.i2p.net/how_threatmodel#intersection">intersection
    259  attacks</a> against the NetDB.  Your different router identities would only be 
     246 attacks</a> against the NetDB.  Your different router identities would only be
    260247 'hidden' among other I2P users at your ISP, and further analysis would link
    261248 the router identities further.</p>
     
    265252 though such would likely already be the case anyway, since the IP address changed.
    266253 </p>
    267  <hr />
    268 -->
    269     </form>
    270 </div>
    271 </div>
    272 </body>
    273 </html>
     254 <br>
     255-->
     256</div></form></div></div></body></html>
  • apps/routerconsole/jsp/configadvanced.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config advanced</title>
     5<html><head><title>I2P Router Console - config advanced</title>
    76<%@include file="css.jsp" %>
    87</head><body>
     
    3130 <input type="hidden" name="action" value="blah" />
    3231 <h3>Advanced I2P Configuration</h3>
    33  <textarea rows="32" cols="60" name="config" wrap="off"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br /><hr>
    34       <div class="formaction"> 
     32 <textarea rows="32" cols="60" name="config" wrap="off"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br><hr>
     33      <div class="formaction">
    3534        <input type="submit" name="shouldsave" value="Apply" />
    36         <input type="reset" value="Cancel" /><br />
     35        <input type="reset" value="Cancel" /><br>
    3736 <b>NOTE:</b> Some changes may require a restart to take effect.
    38       </div>
    39  </form>
    40 </div>
    41 </div>
    42 </div>
    43 </body>
    44 </html>
     37 </div></form></div></div></div></body></html>
  • apps/routerconsole/jsp/configclients.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config clients</title>
     5<html><head><title>I2P Router Console - config clients</title>
    76<%@include file="css.jsp" %>
    87<style type='text/css'>
     
    109    display:none;
    1110}
    12 </style>
    13 </head><body>
     11</style></head><body>
    1412
    1513<%@include file="summary.jsp" %>
     
    2018<div class="main" id="main">
    2119 <%@include file="confignav.jsp" %>
    22  
     20
    2321 <jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" />
    2422 <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
     
    2725 <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
    2826 <jsp:getProperty name="formhandler" property="allMessages" />
    29  <div class="configure">
    30  <form action="configclients.jsp" method="POST">
     27 <div class="configure"><form action="configclients.jsp" method="POST">
    3128 <% String prev = System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce");
    3229    if (prev != null) System.setProperty("net.i2p.router.web.ConfigClientsHandler.noncePrev", prev);
    3330    System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", new java.util.Random().nextLong()+""); %>
    3431 <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce")%>" />
    35  <h3>Client Configuration</h3>
    36  <p>
     32 <h3>Client Configuration</h3><p>
    3733 The Java clients listed below are started by the router and run in the same JVM.
    38  </p><p> <div class="wideload">
    39  <jsp:getProperty name="clientshelper" property="form1" />
    40  </p><p>
    41  <i>To change other client options, edit the file
     34 </p><div class="wideload">
     35 <p><jsp:getProperty name="clientshelper" property="form1" />
     36 </p><p><i>To change other client options, edit the file
    4237<%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>.
    4338All changes require restart to take effect.</i>
    44  </p> <hr /><div class="formaction">
     39 </p><hr><div class="formaction">
    4540 <input type="submit" name="action" value="Save Client Configuration" />
    46 </div></div>
    47  <h3>WebApp Configuration</h3>
    48  <p>
     41</div></div><h3>WebApp Configuration</h3><p>
    4942 The Java web applications listed below are started by the webConsole client and run in the same JVM as the router.
    5043 They are usually web applications accessible through the router console.
     
    5649 however the .war file and web app will reappear when you update your router to a newer version,
    5750 so disabling the web app here is the preferred method.
    58  </p><p><div class="wideload">
     51 </p><div class="wideload"><p>
    5952 <jsp:getProperty name="clientshelper" property="form2" />
    60  </p>
    61  <p>
     53 </p><p>
    6254 <i>All changes require restart to take effect.</i>
    63  </p>
    64  <hr><div class="formaction">
     55 </p><hr><div class="formaction">
    6556 <input type="submit" name="action" value="Save WebApp Configuration" />
    66  </div>
    67  </form>
    68 </div>
    69 </div>
    70 </div>
    71 </body>
    72 </html>
     57 </div></div></form></div></div></body></html>
  • apps/routerconsole/jsp/configkeyring.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config keyring</title>
     5<html><head><title>I2P Router Console - config keyring</title>
    76<%@include file="css.jsp" %>
    87</head><body>
     
    1716 <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    1817 <jsp:getProperty name="formhandler" property="allMessages" />
    19  
    20 
    21 
    2218 <jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" />
    2319 <jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    24 <div class="configure">
    25  <p>
    26  <h3>Keyring</h3>
     20<div class="configure"><p><h3>Keyring</h3>
    2721 The router keyring is used to decrypt encrypted leaseSets.
    2822 The keyring may contain keys for local or remote encrypted destinations.
    29  <div class="wideload"><p> 
     23 <div class="wideload"><p>
    3024 <jsp:getProperty name="keyringhelper" property="summary" />
    3125</p></div>
    3226
    33  <hr />
     27 <br>
    3428
    3529 <form action="configkeyring.jsp" method="POST">
     
    4236 Keys for local destinations must be entered on the <a href="i2ptunnel/index.jsp">I2PTunnel page</a>.
    4337 <p>
    44   <div class="wideload">
    45       <table>
    46         <tr>
    47           <td class="mediumtags" align="right">Dest. name, hash, or full key:</td>
    48           <td><textarea name="peer" cols="44" rows="1" style="height: 3em;" wrap="off"></textarea></td>
    49         <tr>
    50           <td class="mediumtags" align="right">Session Key:</td>
    51           <td><input type="text" size="55" name="key" /></td>
    52         <tr>
    53           <td>
    54           <td align="right">
    55             <input type="submit" name="action" value="Add key" /></td>
    56       </table>
    57  </form>
    58 
    59 </div>
    60 </div>
    61 </div>
    62 </body>
    63 </html>
     38  <div class="wideload">
     39      <table><tr>
     40          <td class="mediumtags" align="right">Dest. name, hash, or full key:</td>
     41          <td><textarea name="peer" cols="44" rows="1" style="height: 3em;" wrap="off"></textarea></td>
     42        </tr><tr>
     43          <td class="mediumtags" align="right">Session Key:</td>
     44          <td><input type="text" size="55" name="key" /></td>
     45        </tr><tr>
     46          <td></td>
     47          <td align="right"><input type="submit" name="action" value="Add key" /></td>
     48</tr></table></div></form></div></div></body></html>
  • apps/routerconsole/jsp/configlogging.jsp

    r6f05328 r7782970  
    1919 <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    2020 <jsp:getProperty name="formhandler" property="allMessages" />
    21 <div class="configure"> 
     21<div class="configure">
    2222 <form action="configlogging.jsp" method="POST">
    2323 <% String prev = System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce");
     
    2929 <div class="wideload">
    3030      <table border="0" cellspacing="5">
    31         <tr>
    32           <td class="mediumtags" align="right"><b>Logging filename:</b>
    33           <td><input type="text" name="logfilename" size="40" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" />
    34             <br /> <i>(the symbol '@' will be replaced during log rotation)</i>
    35         <tr>
    36           <td class="mediumtags" align="right"><b>Log record format:</b>
    37           <td><input type="text" name="logformat" size="20" value="<jsp:getProperty name="logginghelper" property="recordPattern" />" />
    38             <br /> <i>(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority,
    39             'm' = message)</i>
    40         <tr>
    41           <td class="mediumtags" align="right"><b>Log date format:</b>
    42           <td><input type="text" name="logdateformat" size="20" value="<jsp:getProperty name="logginghelper" property="datePattern" />" />
    43             <br /> <i>('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss'
    44             = second, 'SSS' = millisecond)</i>
    45         <tr>
    46           <td class="mediumtags" align="right"><b>Max log file size:</b>
    47           <td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" />
    48             <br />
    49         <tr>
    50           <td class="mediumtags" align="right"><b>Default log level:</b>
    51           <td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /> <br /> <i>(DEBUG and INFO are not recommended defaults,
    52             as they will drastically slow down your router)</i>
    53         <tr>
    54           <td class="mediumtags" align="right"><b>Log level overrides:</b>
    55           <td><jsp:getProperty name="logginghelper" property="logLevelTable" />
    56         <tr>
    57           <td colspan="2"><hr>
    58         <tr>
    59           <td>
    60           <td> <div align="right">
    61               <input type="submit" name="shouldsave" value="Save changes" />
    62               <input type="reset" value="Cancel" />
    63             </div>
    64       </table>
    65  </form>
    66 </div>
    67 </div>
    68 </div>
    69 </body>
    70 </html>
     31        <tr><td class="mediumtags" align="right"><b>Logging filename:</b></td>
     32          <td><input type="text" name="logfilename" size="40" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" />
     33          <br><i>(the symbol '@' will be replaced during log rotation)</i></td>
     34        </tr><tr><td class="mediumtags" align="right"><b>Log record format:</b></td>
     35          <td><input type="text" name="logformat" size="20" value="<jsp:getProperty name="logginghelper" property="recordPattern" />" />
     36            <br> <i>(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority,
     37            'm' = message)</i></td>
     38        </tr><tr><td class="mediumtags" align="right"><b>Log date format:</b></td>
     39          <td><input type="text" name="logdateformat" size="20" value="<jsp:getProperty name="logginghelper" property="datePattern" />" />
     40            <br> <i>('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss'
     41            = second, 'SSS' = millisecond)</i></td>
     42        </tr><tr><td class="mediumtags" align="right"><b>Max log file size:</b></td>
     43          <td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" /><br></td>
     44        </tr><tr><td class="mediumtags" align="right"><b>Default log level:</b></td>
     45          <td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i>(DEBUG and INFO are not recommended defaults,
     46            as they will drastically slow down your router)</i></td>
     47        </tr><tr><td class="mediumtags" align="right"><b>Log level overrides:</b></td>
     48          <td><jsp:getProperty name="logginghelper" property="logLevelTable" /></td>
     49        </tr><tr><td colspan="2"><hr></td>
     50        </tr><tr class="tablefooter"><td colspan="2"> <div class="formaction">
     51          <input type="submit" name="shouldsave" value="Save changes" />
     52          <input type="reset" value="Cancel" />
     53</div></td></tr></table></div></form></div></div></body></html>
  • apps/routerconsole/jsp/confignav.jsp

    r6f05328 r7782970  
    11<div class="confignav" id="confignav">
    22<center>
    3 <% if (request.getRequestURI().indexOf("config.jsp") != -1) { 
     3<% if (request.getRequestURI().indexOf("config.jsp") != -1) {
    44 %>Network | <% } else { %><a href="config.jsp">Network</a> | <% }
    55 String userAgent = request.getHeader("User-Agent");
     
    2626 if (request.getRequestURI().indexOf("configadvanced.jsp") != -1) {
    2727 %>Advanced<% } else { %><a href="configadvanced.jsp">Advanced</a><% } %>
    28 </center>
    29 </div>
     28</center></div>
  • apps/routerconsole/jsp/configpeer.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config peers</title>
     5<html><head><title>I2P Router Console - config peers</title>
    76<%@include file="css.jsp" %>
    87</head><body>
     
    1211<div class="main" id="main">
    1312 <%@include file="confignav.jsp" %>
    14  
     13
    1514 <jsp:useBean class="net.i2p.router.web.ConfigPeerHandler" id="formhandler" scope="request" />
    1615 <jsp:setProperty name="formhandler" property="*" />
    1716 <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    1817 <jsp:getProperty name="formhandler" property="allMessages" />
    19  
     18
    2019
    2120
     
    2423
    2524 <% String peer = "";
    26     if (request.getParameter("peer") != null)     
     25    if (request.getParameter("peer") != null)
    2726        peer = request.getParameter("peer");
    2827 %>
     
    4140 <input type="text" size="55" name="peer" value="<%=peer%>" /></div>
    4241 <h3>Manually Ban / Unban a Peer</h3>
    43  Banning will prevent the participation of this peer in tunnels you create. 
    44       <hr />     
    45       <div class="formaction"> 
     42 Banning will prevent the participation of this peer in tunnels you create.
     43      <hr>
     44      <div class="formaction">
    4645        <input type="submit" name="action" value="Ban peer until restart" />
    4746        <input type="submit" name="action" value="Unban peer" />
     
    5251
    5352 <h3>Adjust Profile Bonuses</h3>
    54  Bonuses may be positive or negative, and affect the peer's inclusion in Fast 
    55       and High Capacity tiers. Fast peers are used for client tunnels, and High 
    56       Capacity peers are used for some exploratory tunnels. Current bonuses are 
    57       displayed on the <a href="profiles.jsp">profiles page</a>. 
     53 Bonuses may be positive or negative, and affect the peer's inclusion in Fast
     54      and High Capacity tiers. Fast peers are used for client tunnels, and High
     55      Capacity peers are used for some exploratory tunnels. Current bonuses are
     56      displayed on the <a href="profiles.jsp">profiles page</a>.
    5857      <p>
    5958 <% long speed = 0; long capacity = 0;
     
    6160        // get existing bonus values?
    6261    }
    63  %> 
    64  <hr />
     62 %>
     63 <hr>
    6564 <div class="mediumtags">Speed:
    6665 <input type="text" size="8" name="speed" value="<%=speed%>" />
     
    7473 <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    7574 <jsp:getProperty name="profilesHelper" property="shitlistSummary" />
    76  <hr />
     75 <hr>
    7776 <div class="wideload">
    7877 <jsp:getProperty name="peerhelper" property="blocklistSummary" />
    7978
    80 </div>
    81 </div>
    82 </div>
    83 </body>
    84 </html>
     79</div></div></div></body></html>
  • apps/routerconsole/jsp/configservice.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config service</title>
     5<html><head><title>I2P Router Console - config service</title>
    76<%@include file="css.jsp" %>
    87</head><body>
     
    1211<div class="main" id="main">
    1312 <%@include file="confignav.jsp" %>
    14  
     13
    1514 <jsp:useBean class="net.i2p.router.web.ConfigServiceHandler" id="formhandler" scope="request" />
    1615 <jsp:setProperty name="formhandler" property="*" />
     
    2423 <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigServiceHandler.nonce")%>" />
    2524 <h3>Shutdown the router</h3>
    26  <p>Graceful shutdown lets the router satisfy the agreements it has already made 
     25 <p>Graceful shutdown lets the router satisfy the agreements it has already made
    2726 before shutting down, but may take a few minutes.  If you need to kill the
    2827 router immediately, that option is available as well.</p>
     
    3332 </div>
    3433 <% if (System.getProperty("wrapper.version") != null) { %>
    35  <p>If you want the router to restart itself after shutting down, you can choose one of 
     34 <p>If you want the router to restart itself after shutting down, you can choose one of
    3635 the following.  This is useful in some situations - for example, if you changed
    3736 some settings that client applications only read at startup, such as the routerconsole password
     
    4645 <% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %>
    4746 <h3>Systray integration</h3>
    48  <p>On the windows platform, there is a small application to sit in the system 
     47 <p>On the windows platform, there is a small application to sit in the system
    4948 tray, allowing you to view the router's status (later on, I2P client applications
    5049 will be able to integrate their own functionality into the system tray as well).
     
    5352 <input type="submit" name="action" value="Show systray icon" />
    5453 <input type="submit" name="action" value="Hide systray icon" />
    55 </div>
    56  <h3>Run on startup</h3>
    57  <p>You can control whether I2P is run on startup or not by selecting one of the
     54</div><h3>Run on startup</h3>
     55 <p>You can control whether I2P is run on startup or not by selecting one of the
    5856 following options - I2P will install (or remove) a service accordingly.  You can
    59  also run the <code>install_i2p_service_winnt.bat</code> (or 
     57 also run the <code>install_i2p_service_winnt.bat</code> (or
    6058 <code>uninstall_i2p_service_winnt.bat</code>) from the command line, if you prefer.</p>
    6159 <hr><div class="formaction">
    6260 <input type="submit" name="action" value="Run I2P on startup" />
    6361<input type="submit" name="action" value="Don't run I2P on startup" /></div>
    64  <p><b>Note:</b> If you are running I2P as service right now, removing it will shut 
     62 <p><b>Note:</b> If you are running I2P as service right now, removing it will shut
    6563 down your router immediately.  You may want to consider shutting down gracefully, as
    6664 above, then running uninstall_i2p_service_winnt.bat.</p>
     
    6967 <% if (System.getProperty("wrapper.version") != null) { %>
    7068 <h3>Debugging</h3>
    71  <p>At times, it may be helpful to debug I2P by getting a thread dump.  To do so, 
    72  please select the following option and review the thread dumped to 
     69 <p>At times, it may be helpful to debug I2P by getting a thread dump.  To do so,
     70 please select the following option and review the thread dumped to
    7371 <a href="logs.jsp#servicelogs">wrapper.log</a>.</p>
    7472  <hr><div class="formaction">
    7573 <input type="submit" name="action" value="Dump threads" />
    7674<% } %></div>
    77  
     75
    7876 <h3>Launch browser on router startup?</h3>
    7977 <p>I2P's main configuration interface is this web console, so for your convenience
    80  I2P can launch a web browser pointing at 
     78 I2P can launch a web browser pointing at
    8179 <a href="http://127.0.0.1:7657/index.jsp">http://127.0.0.1:7657/index.jsp</a> whenever
    8280 the router starts up.</p>
     
    8482 <input type="submit" name="action" value="View console on startup" />
    8583 <input type="submit" name="action" value="Do not view console on startup" />
    86 </form></div>
    87 </div>
    88 </div>
    89 </body>
    90 </html>
     84</div></form></div></div></body></html>
  • apps/routerconsole/jsp/configstats.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config stats</title>
     5<html><head><title>I2P Router Console - config stats</title>
    76<%@include file="css.jsp" %>
    87<script type="text/javascript">
     
    7473 <h3>Configure I2P Stat Collection</h3>
    7574 Enable full stats?
    76  <input type="checkbox" class="optbox" name="isFull" value="true" <% 
     75 <input type="checkbox" class="optbox" name="isFull" value="true" <%
    7776 if (statshelper.getIsFull()) { %>checked="true" <% } %>/>
    78  (change requires restart to take effect)<br />
    79  Stat file: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br />
    80  Filter: (<a href="javascript: void(null);" onclick="toggleAll('*')">toggle all</a>)<hr />
     77 (change requires restart to take effect)<br>
     78 Stat file: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br>
     79 Filter: (<a href="javascript: void(null);" onclick="toggleAll('*')">toggle all</a>)<br>
    8180 <div class="wideload">
    8281 <table>
    8382 <% while (statshelper.hasMoreStats()) {
    8483      while (statshelper.groupRequired()) { %>
    85  <tr class="tablefooter"><td align="left" colspan="3">
     84 <tr class="tablefooter">
     85     <td align="left" colspan="3">
    8686     <b><%=statshelper.getCurrentGroupName()%></b>
    8787     (<a href="javascript: void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')">toggle all</a>)
    88      </td></tr><tr class="tablefooter"><td align="center"><b>Log</b></td><td align="center"><b>Graph</b></td><td></td></tr><%
     88     </td></tr>
     89 <tr class="tablefooter">
     90    <td align="center"><b>Log</b></td>
     91    <td align="center"><b>Graph</b></td>
     92    <td></td></tr>
     93        <%
    8994     } // end iterating over required groups for the current stat %>
    9095 <tr><td align="center">
    9196     <a name="<%=statshelper.getCurrentStatName()%>"></a>
    92      <input id="<%=statshelper.getCurrentGroupName()%>" type="checkbox" class="optbox" name="statList" value="<%=statshelper.getCurrentStatName()%>" <% 
     97     <input id="<%=statshelper.getCurrentGroupName()%>" type="checkbox" class="optbox" name="statList" value="<%=statshelper.getCurrentStatName()%>" <%
    9398     if (statshelper.getCurrentIsLogged()) { %>checked="true" <% } %>/></td>
    9499     <td align="center">
    95100     <% if (statshelper.getCurrentCanBeGraphed()) { %>
    96        <input id="<%=statshelper.getCurrentGroupName()%>" type="checkbox" class="optbox" name="graphList" value="<%=statshelper.getCurrentGraphName()%>" <% 
     101       <input id="<%=statshelper.getCurrentGroupName()%>" type="checkbox" class="optbox" name="graphList" value="<%=statshelper.getCurrentGraphName()%>" <%
    97102       if (statshelper.getCurrentIsGraphed()) { %>checked="true" <% } %>/><% } %></td>
    98      <td align="left"><b><%=statshelper.getCurrentStatName()%>:</b><br />
     103     <td align="left"><b><%=statshelper.getCurrentStatName()%>:</b><br>
    99104     <%=statshelper.getCurrentStatDescription()%></td></tr><%
    100105    } // end iterating over all stats %>
    101106 <tr><td colspan="3"></td></tr>
    102107 <tr><td align="center"><input type="checkbox" class="optbox" name="explicitFilter" /></td>
    103      <td colspan="2">Advanced filter: 
     108     <td colspan="2">Advanced filter:
    104109     <input type="text" name="explicitFilterValue" value="<%=statshelper.getExplicitFilter()%>" size="40" /></td></tr>
    105      <tr class="tablefooter"><td colspan="3" align="right"><input type="submit" name="shouldsave" value="Save changes" /><input type="reset" value="Cancel" /></td></tr></form>
    106  </table>
    107 </div>
    108 </div>
    109 </div>
    110 </body>
    111 </html>
     110     <tr class="tablefooter"><td colspan="3" align="right"><input type="submit" name="shouldsave" value="Save changes" /><input type="reset" value="Cancel" /></td></tr>
     111 </table></div></form></div></div></body></html>
  • apps/routerconsole/jsp/configtunnels.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config tunnels</title>
     5<html><head><title>I2P Router Console - config tunnels</title>
    76<%@include file="css.jsp" %>
    87</head><body>
     
    2221 <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
    2322 <jsp:getProperty name="formhandler" property="allMessages" />
    24  <div class="configure">
    25  <p><i>
     23 <div class="configure"><p><i>
    2624 NOTE: The default settings work for most people.
    2725 There is a fundamental tradeoff between anonymity and performance.
     
    3028 High CPU and/or high outbound bandwidth usage may result.
    3129 Change these settings with care, and adjust them if you have problems.
    32  </i></p>
    33  <div class="wideload">
     30 </i></p><div class="wideload">
    3431 <form action="configtunnels.jsp" method="POST">
    3532 <% String prev = System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce");
     
    3936 <input type="hidden" name="action" value="blah" />
    4037 <jsp:getProperty name="tunnelshelper" property="form" />
    41  <i>Note - Exploratory tunnel setting changes are stored in the router.config file.</i></br>
     38 <i>Note - Exploratory tunnel setting changes are stored in the router.config file.</i><br>
    4239 <i>Client tunnel changes are temporary and are not saved.</i><br>
    4340 <i>To make permanent client tunnel changes see the </i><a href="i2ptunnel/index.jsp">i2ptunnel page</a>.<br>
    44  <hr /><div class="formaction"><input type="submit" name="shouldsave" value="Save changes" /> <input type="reset" value="Cancel" /></div>
    45  </form>
    46 </div>
    47 </div>
    48 </div>
    49 </body>
    50 </html>
     41 <hr><div class="formaction"><input type="submit" name="shouldsave" value="Save changes" /> <input type="reset" value="Cancel" /></div>
     42 </form></div></div></div></body></html>
  • apps/routerconsole/jsp/configui.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config UI</title>
     5<html><head><title>I2P Router Console - config UI</title>
    76<%@include file="css.jsp" %>
    87</head><body>
     
    1716
    1817 <%@include file="confignav.jsp" %>
    19  
     18
    2019 <jsp:useBean class="net.i2p.router.web.ConfigUIHandler" id="formhandler" scope="request" />
    2120 <jsp:setProperty name="formhandler" property="*" />
    2221 <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    2322 <jsp:getProperty name="formhandler" property="allMessages" />
    24 <div class="configure">
    25 <h3>Router Console Theme</h3>
     23<div class="configure"><h3>Router Console Theme</h3>
    2624<%
    2725 // userAgent defined in confignav
     
    3533 <input type="hidden" name="action" value="blah" />
    3634 <jsp:getProperty name="uihelper" property="settings" />
    37 <hr><div class="formaction">   
     35<hr><div class="formaction">
    3836<input type="submit" name="shouldsave" value="Apply" /> <input type="reset" value="Cancel" />
    39 </form></div>
     37</div></form></div>
    4038<% } else { %>
    41 Theme selection disabled for Internet Explorer, sorry.<hr>If you're not using IE, it's likely that 
     39Theme selection disabled for Internet Explorer, sorry.<hr>If you're not using IE, it's likely that
    4240your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes.
    4341<% } %>
    44 </div>
    45 </div>
    46 </body>
    47 </html>
     42</div></body></html>
  • apps/routerconsole/jsp/configupdate.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - config update</title>
     5<html><head><title>I2P Router Console - config update</title>
    76<%@include file="css.jsp" %>
    87</head><body>
     
    1211<div class="main" id="main">
    1312 <%@include file="confignav.jsp" %>
    14  
     13
    1514 <jsp:useBean class="net.i2p.router.web.ConfigUpdateHandler" id="formhandler" scope="request" />
    1615 <jsp:setProperty name="formhandler" property="*" />
    1716 <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    1817 <jsp:getProperty name="formhandler" property="allMessages" />
    19  
    2018 <jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" />
    2119 <jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    2220<div class="messages">
    23 <i><jsp:getProperty name="updatehelper" property="newsStatus" /></i></div> 
     21<i><jsp:getProperty name="updatehelper" property="newsStatus" /></i></div>
    2422<div class="configure">
    2523 <form action="configupdate.jsp" method="POST">
     
    3028      <h3>Check for I2P and news updates</h3>
    3129      <div class="wideload"><table border="0" cellspacing="5">
    32         <tr>
    33           <td colspan="2"></tr>
    34         <tr>
    35           <td class= "mediumtags" align="right"><b>News:</b></td>
    36           <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" />
    37             <% } %></tr>
    38         <tr>
    39           <td colspan="2"><hr /></td>
    40         </tr>
    41         <tr>
    42           <td class= "mediumtags" align="right"><b>News URL:</b></td>
     30        <tr><td colspan="2"></tr>
     31        <tr><td class= "mediumtags" align="right"><b>News &amp; I2P Updates:</b></td>
     32          <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 updates" />
     33            <% } %></td></tr>
     34        <tr><td colspan="2"><br></td></tr>
     35        <tr><td class= "mediumtags" align="right"><b>News URL:</b></td>
    4336          <td><input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />"></td>
    44         </tr>
    45         <tr>
    46           <td class= "mediumtags" align="right"><b>Refresh frequency:</b>
    47           <td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" />
    48         <tr>
    49           <td class= "mediumtags" align="right"><b>Update policy:</b>
    50           <td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" />
    51         <tr>
    52           <td class= "mediumtags" align="right"><b>Update through the eepProxy?</b>
    53           <td><jsp:getProperty name="updatehelper" property="updateThroughProxy" />
    54         <tr>
    55           <td class= "mediumtags" align="right"><b>eepProxy host:</b>
    56           <td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" />
    57         <tr>
    58           <td class= "mediumtags" align="right"><b>eepProxy port:</b>
    59           <td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" />
    60         <tr>
    61           <td class= "mediumtags" align="right"><b>Update URLs:</b>
    62           <td><textarea name="updateURL" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea>
    63         <tr>
    64           <td class= "mediumtags" align="right"><b>Trusted keys:</b>
    65           <td><textarea name="trustedKeys" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea>
    66         <tr>
    67           <td class= "mediumtags" align="right"><b>Update with unsigned development builds?</b>
    68           <td><jsp:getProperty name="updatehelper" property="updateUnsigned" />
    69         <tr>
    70           <td class= "mediumtags" align="right"><b>Unsigned Build URL:</b></td>
     37        </tr><tr><td class= "mediumtags" align="right"><b>Refresh frequency:</b>
     38          <td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /></td><tr>
     39          <td class= "mediumtags" align="right"><b>Update policy:</b></td>
     40          <td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /></td>
     41        <tr><td class= "mediumtags" align="right"><b>Update through the eepProxy?</b></td>
     42          <td><jsp:getProperty name="updatehelper" property="updateThroughProxy" /></td>
     43        </tr><tr><td class= "mediumtags" align="right"><b>eepProxy host:</b></td>
     44          <td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /></td>
     45        </tr><tr><td class= "mediumtags" align="right"><b>eepProxy port:</b></td>
     46          <td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /></td>
     47        </tr><tr><td class= "mediumtags" align="right"><b>Update URLs:</b></td>
     48          <td><textarea name="updateURL" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea></td>
     49        </tr><tr><td class= "mediumtags" align="right"><b>Trusted keys:</b></td>
     50          <td><textarea name="trustedKeys" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea></td>
     51        </tr><tr><td class= "mediumtags" align="right"><b>Update with unsigned development builds?</b></td>
     52          <td><jsp:getProperty name="updatehelper" property="updateUnsigned" /></td>
     53        </tr><tr><td class= "mediumtags" align="right"><b>Unsigned Build URL:</b></td>
    7154          <td><input type="text" size="60" name="zipURL" value="<jsp:getProperty name="updatehelper" property="zipURL" />"></td>
    72         <tr>
    73           <td>
    74           <td><div class="formaction">
    75               <input type="submit" name="action" value="Save" />
    76               <input type="reset" value="Cancel" />
    77             </div>
    78       </table>
    79     </div>
    80  </form>
    81 </div>
    82 </div>
    83 </body>
    84 </html>
     55        </tr><tr class="tablefooter"><td colspan="2">
     56        <div class="formaction">
     57            <input type="submit" name="action" value="Save" />
     58            <input type="reset" value="Cancel" />
     59        </div></td></tr></table></div></form></div></div></body></html>
  • apps/routerconsole/jsp/css.jsp

    r6f05328 r7782970  
    99   response.setDateHeader("Expires", 0);
    1010   // the above will b0rk if the servlet engine has already flushed
    11    // the response prior to including this file, so it should be 
     11   // the response prior to including this file, so it should be
    1212   // near the top
    13    
     13
    1414   if (request.getParameter("i2p.contextId") != null) {
    15        session.setAttribute("i2p.contextId", request.getParameter("i2p.contextId")); 
     15       session.setAttribute("i2p.contextId", request.getParameter("i2p.contextId"));
    1616   }
    1717%>
    1818<jsp:useBean class="net.i2p.router.web.CSSHelper" id="cssHelper" scope="request" />
    1919<jsp:setProperty name="cssHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    20 <link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css" />
    21 <!--[if IE]><link href="/themes/console/classic/ieshim.css" rel="stylesheet" type="text/css" /><![endif]--> 
     20<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css">
     21<!--[if IE]><link href="/themes/console/classic/ieshim.css" rel="stylesheet" type="text/css" /><![endif]-->
  • apps/routerconsole/jsp/dumpprofile.jsp

    r6f05328 r7782970  
    1 <%@page contentType="text/plain" 
    2 %><jsp:useBean id="helper" class="net.i2p.router.web.StatHelper" 
    3 /><jsp:setProperty name="helper" property="peer" value="<%=request.getParameter("peer")%>" 
    4 /><jsp:setProperty name="helper" property="writer" value="<%=out%>" 
     1<%@page contentType="text/plain"
     2%><jsp:useBean id="helper" class="net.i2p.router.web.StatHelper"
     3/><jsp:setProperty name="helper" property="peer" value="<%=request.getParameter("peer")%>"
     4/><jsp:setProperty name="helper" property="writer" value="<%=out%>"
    55/><jsp:getProperty name="helper" property="profile" />
  • apps/routerconsole/jsp/error.jsp

    r6f05328 r7782970  
    1313    // If it can't find the iframe or viewtheme.jsp I wonder if the whole thing blows up...
    1414%>
    15 <html><head>
    16 <title>I2P Router Console</title>
     15<html><head><title>I2P Router Console</title>
    1716<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    1817<%@include file="css.jsp" %>
    19 <link rel="shortcut icon" href="favicon.ico" />
    20 </head><body>
     18<link rel="shortcut icon" href="favicon.ico" /></head><body>
    2119<%
    2220if (System.getProperty("router.consoleNonce") == null) {
     
    2826<div class="warning" id="warning">
    2927The Router Console page <%=ERROR_URI%> was not found.
    30 </div>
    31 </body>
    32 </html>
     28</div></body></html>
  • apps/routerconsole/jsp/graphs.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - graphs</title>
     5<html><head><title>I2P Router Console - graphs</title>
    76<%@include file="css.jsp" %>
    87</head><body>
     
    1211<div class="main" id="main">
    1312 <div class="graphspanel">
    14  <div class="widepanel">       
     13 <div class="widepanel">
    1514 <jsp:useBean class="net.i2p.router.web.GraphHelper" id="graphHelper" scope="request" />
    1615 <jsp:setProperty name="graphHelper" property="*" />
     
    1918 <jsp:getProperty name="graphHelper" property="images" />
    2019 <jsp:getProperty name="graphHelper" property="form" />
    21 </div>
    22 </div>
    23 </body>
    24 </html>
     20</div></div></div></body></html>
  • apps/routerconsole/jsp/help.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - help</title>
     5<html><head><title>I2P Router Console - help</title>
    76<%@include file="css.jsp" %>
    87</head><body>
    9 
    108<%@include file="summary.jsp" %>
    119<h1>I2P Router Help & Support</h1>
    1210<div class="main" id="main"><div align="justify">
    13 If you'd like to help improve or translate the documentation, or 
     11If you'd like to help improve or translate the documentation, or
    1412help with other aspects of the project, please see the documentation for
    15 <a href="http://www.i2p2.i2p/getinvolved.html">volunteers.</a>
    16 <br><br>Further assistance is available here:
    17 <br></div>
     13<a href="http://www.i2p2.i2p/getinvolved.html">volunteers.</a>
     14<br><br>Further assistance is available here:<br></div>
    1815<ul class="links">
    1916<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ on www.i2p2.i2p</a>
    20 <li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.
    21 </ul>
    22 <br>
     17<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.</ul><br>
    2318You may also try the <a href="http://forum.i2p/">I2P forum</a>
    24 or IRC.<br />
     19or IRC.<br>
    2520
    2621<h2>Summary Bar Information</h2><div align="justify">
     
    2823<a href="configstats.jsp">configured</a> to be
    2924<a href="graphs.jsp">graphed</a> for further analysis.
    30 </div>
    31 <h3>General</h3>
    32 <ul>
     25</div><h3>General</h3><ul>
    3326<li class="tidylist"><b>Ident:</b>
    3427The first four characters (24 bits) of your 44-character (256-bit) Base64 router hash.
     
    4437The router's view of whether it can be contacted by other routers.
    4538Further information is on the <a href="config.jsp#help">configuration page</a>.
    46 </ul>
    47 
    48 <h3>Peers</h3>
    49 <ul>
     39</ul><h3>Peers</h3><ul>
    5040<li class="tidylist"><b>Active:</b>
    5141The first number is the number of peers you've sent or received a message from in the last few minutes.
     
    7666shared bandwidth, and locally-generated traffic.
    7767I2P does not require a router to know every other router.
    78 </ul>
    79 
    80 <h3>Bandwidth in/out</h3><div align="justify">
     68</ul><h3>Bandwidth in/out</h3><div align="justify">
    8169Should be self-explanatory. All values are in bytes per second, not bits per second.
    8270Change your bandwidth limits on the <a href="config.jsp#help">configuration page</a>.
    83 Bandwidth is <a href="graphs.jsp">graphed</a> by default.
    84 </div>
     71Bandwidth is <a href="graphs.jsp">graphed</a> by default.</div>
     72
    8573<h3>Local destinations</h3><div align="justify">
    8674The local applications connecting through your router.
    8775These may be clients started through <a href="i2ptunnel/index.jsp">I2PTunnel</a>
    8876or external programs connecting through SAM, BOB, or directly to I2CP.
    89 </div>
    90 <h3>Tunnels in/out</h3><div align="justify">
    91 The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><br>
    92 <ul>
     77</div><h3>Tunnels in/out</h3><div align="justify">
     78The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><br><ul>
    9379<li class="tidylist"><div align="justify"><b>Exploratory:</b>
    9480Tunnels built by your router and used for communication with the floodfill peers,
     
    10389to change your share percentage on the <a href="config.jsp#help">configuration page</a>.
    10490You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
    105 the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.
    106 </ul>
     91the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.</ul>
    10792
    10893<h3>Congestion</h3><div align="justify">
    109 Some basic indications of router overload:</div><br>
    110 <ul>
     94Some basic indications of router overload:</div><br><ul>
    11195<li class="tidylist"><b>Job lag:</b>
    11296How long jobs are waiting before execution. The job queue is listed on the <a href="jobs.jsp">jobs page</a>.
     
    144128or reject all requests for a number of reasons, to control
    145129the bandwidth and CPU demands and maintain capacity for
    146 local clients.
    147 </ul>
     130local clients.</ul>
    148131
    149132<h2>Legal stuff</h2><div align="justify">
    150 The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with 
    151 a few notable exceptions:</div><br /><ul>
     133The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with
     134a few notable exceptions:</div><br><ul>
    152135<li class="tidylist">ElGamal and DSA code, under the BSD license, written by TheCrypto</li>
    153136<li class="tidylist">SHA256 and HMAC-SHA256, under the MIT license, written by the Legion of the Bouncycastle</li>
    154137<li class="tidylist">AES code, under the Cryptix (MIT) license, written by the Cryptix team</li>
    155138<li class="tidylist">SNTP code, under the BSD license, written by Adam Buckley</li>
    156 <li class="tidylist">The rest is outright public domain, written by jrandom, mihi, hypercubus, oOo, 
     139<li class="tidylist">The rest is outright public domain, written by jrandom, mihi, hypercubus, oOo,
    157140    ugha, duck, shendaras, and others.</li>
    158141</ul>
     
    161144licenses and dependencies.  This webpage is being served as part of the I2P routerconsole
    162145client application, which is built off a trimmed down <a href="http://jetty.mortbay.com/jetty/index.html">Jetty</a>
    163 instance (trimmed down, as in, we do not include the demo apps or other add-ons, and we simplify configuration), 
    164 allowing you to deploy standard JSP/Servlet web applications into your router.  Jetty in turn makes use of 
     146instance (trimmed down, as in, we do not include the demo apps or other add-ons, and we simplify configuration),
     147allowing you to deploy standard JSP/Servlet web applications into your router.  Jetty in turn makes use of
    165148Apache's javax.servlet (javax.servlet.jar) implementation.
    166 This product includes software developed by the Apache Software Foundation 
     149This product includes software developed by the Apache Software Foundation
    167150(http://www.apache.org/). </p>
    168151
     
    171154lets you tunnel normal TCP/IP traffic over I2P (such as the eepproxy and the irc proxy).  There is also a
    172155<a href="http://susi.i2p/">susimail</a> web based mail client <a href="susimail/susimail">available</a> on
    173 the console, which is a GPL'ed application written by susi23.  The addressbook application, written by 
     156the console, which is a GPL'ed application written by susi23.  The addressbook application, written by
    174157<a href="http://ragnarok.i2p/">Ragnarok</a> helps maintain your hosts.txt files (see ./addressbook/ for
    175158more information).</p>
    176159
    177160<p>The router by default also includes human's public domain <a href="http://www.i2p2.i2p/sam">SAM</a> bridge,
    178 which other client applications (such the <a href="http://duck.i2p/i2p-bt/">bittorrent port</a>) can use. 
    179 There is also an optimized library for doing large number calculations - jbigi - which in turn uses the 
    180 LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures.  Launchers for windows users are built with <a href="http://launch4j.sourceforge.net/">Launch4J</a>, and the installer is built with <a href="http://www.izforge.com/izpack/">IzPack</a>.  For 
    181 details on other applications available, as well as their licenses, please see the 
     161which other client applications (such the <a href="http://duck.i2p/i2p-bt/">bittorrent port</a>) can use.
     162There is also an optimized library for doing large number calculations - jbigi - which in turn uses the
     163LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures.  Launchers for windows users are built with <a href="http://launch4j.sourceforge.net/">Launch4J</a>, and the installer is built with <a href="http://www.izforge.com/izpack/">IzPack</a>.  For
     164details on other applications available, as well as their licenses, please see the
    182165<a href="http://www.i2p2.i2p/licenses">license policy</a>.  Source for the I2P code and most bundled
    183166client applications can be found on our <a href="http://www.i2p2.i2p/download">download page</a>.
     
    191174 <jsp:setProperty name="contenthelper" property="startAtBeginning" value="true" />
    192175 <jsp:getProperty name="contenthelper" property="textContent" />
    193  
    194  <p>A more complete list of changes can be found 
     176
     177 <p>A more complete list of changes can be found
    195178 in the history.txt file in your i2p directory.
    196  </p><hr />
    197 </div>
    198 </body>
    199 </html>
     179 </p><br></div></body></html>
  • apps/routerconsole/jsp/i2ptunnel/index.jsp

    r6f05328 r7782970  
    1 <html><head><title>I2PTunnel Disabled</title>
     1<html><head><title>I2P Tunnel Manager Not Running</title>
    22<meta http-equiv="cache-control" content="no-cache" />
    33<meta http-equiv="pragma" content="no-cache" />
    44</head>
    55<body>
    6 I2PTunnel is not running. Go to <a href="/configclients.jsp">the config clients page</a>
    7 to start it.
     6The I2P Tunnel Manager is not currently running. Please visit the<a href="/configclients.jsp">Client Configuration</a> page to start it.
    87</body></html>
  • apps/routerconsole/jsp/index.jsp

    r6f05328 r7782970  
    1515%>
    1616
    17 <%@include file="summary.jsp" %>
    18 
    19 <h1>I2P Router Console</h1>
     17<%@include file="summary.jsp" %><h1>I2P Router Console</h1>
    2018<div class="news" id="news">
    2119 <jsp:useBean class="net.i2p.router.web.ContentHelper" id="newshelper" scope="request" />
     
    2725 <jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" />
    2826 <jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    29  <hr /><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br />
    30 </div>
    31 
    32 <div class="main" id="main">
     27 <hr><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br>
     28</div><div class="main" id="main">
    3329 <jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" />
    3430 <% fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>
     
    3733 <jsp:setProperty name="contenthelper" property="lang" value="<%=request.getParameter("lang")%>" />
    3834 <jsp:getProperty name="contenthelper" property="content" />
    39 </div>
    40 
    41 </body>
    42 </html>
     35</div></body></html>
  • apps/routerconsole/jsp/jobs.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - job queue</title>
     5<html><head><title>I2P Router Console - job queue</title>
    76<%@include file="css.jsp" %>
    87</head><body>
    9 
    10 <%@include file="summary.jsp" %>
    11  <h1>I2P Router Job Queue</h1>
     8<%@include file="summary.jsp" %><h1>I2P Router Job Queue</h1>
    129<div class="main" id="main">
    1310 <jsp:useBean class="net.i2p.router.web.JobQueueHelper" id="jobQueueHelper" scope="request" />
     
    1512 <jsp:setProperty name="jobQueueHelper" property="writer" value="<%=out%>" />
    1613 <jsp:getProperty name="jobQueueHelper" property="jobQueueSummary" />
    17 </div>
    18 
    19 </body>
    20 </html>
     14</div></body></html>
  • apps/routerconsole/jsp/logs.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - logs</title>
     5<html><head><title>I2P Router Console - logs</title>
    76<%@include file="css.jsp" %>
    87</head><body>
    9 
    108<%@include file="summary.jsp" %>
    11  <h1>I2P Router Logs</h1>
     9<h1>I2P Router Logs</h1>
    1210<div class="main" id="main">
    13  <div class="joblog">
    14  <h3>Version:</h3><a name="version"> </a>
     11 <div class="joblog"><h3>Version:</h3><a name="version"> </a>
    1512 Please include this information in bug reports.
    1613 <p>
    17 I2P <jsp:getProperty name="helper" property="version" /><br />
    18 <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%><br />
    19 <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br />
    20 CPU <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br />
    21 jbigi <%=net.i2p.util.NativeBigInteger.loadStatus()%><br />
    22 Encoding <%=System.getProperty("file.encoding")%><br>
    23  </p>
    24  <hr />
     14I2P <jsp:getProperty name="helper" property="version" /><br>
     15<%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%><br>
     16<%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br>
     17CPU <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br>
     18jbigi <%=net.i2p.util.NativeBigInteger.loadStatus()%><br>
     19Encoding <%=System.getProperty("file.encoding")%><br></p><br>
    2520 <jsp:useBean class="net.i2p.router.web.LogsHelper" id="logsHelper" scope="request" />
    2621 <jsp:setProperty name="logsHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    2722 <h3>Critical logs:</h3><a name="criticallogs"> </a>
    28  <jsp:getProperty name="logsHelper" property="criticalLogs" />
    29  <hr />
     23 <jsp:getProperty name="logsHelper" property="criticalLogs" /><br>
    3024 <h3>Router logs (<a href="configlogging.jsp">configure</a>):</h3>
    31  <jsp:getProperty name="logsHelper" property="logs" />
    32  <hr />
     25 <jsp:getProperty name="logsHelper" property="logs" /><br>
    3326 <h3>Service (Wrapper) logs:</h3><a name="servicelogs"> </a>
    3427 <jsp:getProperty name="logsHelper" property="serviceLogs" />
    35 </div>
    36 </div>
    37 </body>
    38 </html>
     28</div></div></body></html>
  • apps/routerconsole/jsp/netdb.jsp

    r6f05328 r7782970  
    77<%@include file="css.jsp" %>
    88</head><body>
    9 
    109<%@include file="summary.jsp" %>
    1110 <h1>I2P Network Database Summary</h1>
     
    1918 <jsp:setProperty name="netdbHelper" property="lease" value="<%=request.getParameter("l")%>" />
    2019 <jsp:getProperty name="netdbHelper" property="netDbSummary" />
    21 </div>
    22 </div>
    23 </body>
    24 </html>
     20</div></div></body></html>
  • apps/routerconsole/jsp/oldconsole.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - internals</title>
     5<html><head><title>I2P Router Console - internals</title>
    76<%@include file="css.jsp" %>
    87</head><body>
    9 
    108<%@include file="summary.jsp" %>
    11 
    129<jsp:useBean class="net.i2p.router.web.OldConsoleHelper" id="conhelper" scope="request" />
    1310<jsp:setProperty name="conhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
     
    1613<div class="main" id="main">
    1714 <jsp:getProperty name="conhelper" property="console" />
    18 </div>
    19 
    20 </body>
    21 </html>
     15</div></body></html>
  • apps/routerconsole/jsp/oldstats.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - statistics</title>
     5<html><head><title>I2P Router Console - statistics</title>
    76<%@include file="css.jsp" %>
    87</head><body>
    9 
    108<%@include file="summary.jsp" %>
    11 
    129<jsp:useBean class="net.i2p.router.web.OldConsoleHelper" id="oldhelper" scope="request" />
    1310<jsp:setProperty name="oldhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
     
    1613<div class="main" id="main">
    1714 <jsp:getProperty name="oldhelper" property="stats" />
    18 </div>
    19 </div>
    20 </body>
    21 </html>
     15</div></body></html>
  • apps/routerconsole/jsp/peers.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - peer connections</title>
     5<html><head><title>I2P Router Console - peer connections</title>
    76<%@include file="css.jsp" %>
    87</head><body>
    9 
    108<%@include file="summary.jsp" %>
    11  <h1>I2P Network Peers</h1>
     9<h1>I2P Network Peers</h1>
    1210<div class="main" id="main">
    1311 <jsp:useBean class="net.i2p.router.web.PeerHelper" id="peerHelper" scope="request" />
     
    1715 <jsp:setProperty name="peerHelper" property="sort" value="<%=request.getParameter("sort") != null ? request.getParameter("sort") : ""%>" />
    1816 <jsp:getProperty name="peerHelper" property="peerSummary" />
    19 </div>
    20 
    21 </body>
    22 </html>
     17</div></body></html>
  • apps/routerconsole/jsp/profiles.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - peer profiles</title>
     5<html><head><title>I2P Router Console - peer profiles</title>
    76<%@include file="css.jsp" %>
    8 </head><body>
    9 
    10 <%@include file="summary.jsp" %>
    11  <h1>I2P Network Peer Profiles</h1>
     7</head><body><%@include file="summary.jsp" %>
     8<h1>I2P Network Peer Profiles</h1>
    129<div class="main" id="main"><div class="wideload">
    1310 <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
    1411 <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    1512 <jsp:getProperty name="profilesHelper" property="profileSummary" />
    16  <hr />
     13 <br>
    1714 <a name="shitlist"> </a>
    1815 <jsp:getProperty name="profilesHelper" property="shitlistSummary" />
    19 </div>
    20 </div>
    21 </body>
    22 </html>
     16</div></div></body></html>
  • apps/routerconsole/jsp/summary.jsp

    r6f05328 r7782970  
    11<% // put width here too to prevent bad layout at startup %>
    2 
    3 <div class="routersummaryouter" style="width: 200px;">
     2<% // let's remove that for now since we're no longer using percentage width here %>
     3<div class="routersummaryouter">
    44<%
    55    // skip the iframe if refresh disabled
     
    1212        newDelay = "?refresh=" + d;
    1313    if (!"0".equals(d))
    14         out.print("<iframe src=\"summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"100%\" scrolling=\"auto\" frameborder=\"0\" allowtransparency=\"true\">\n");
     14        out.print("<iframe src=\"summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\n");
    1515%>
    1616<div class="routersummary">
     
    2323        // since we don't have an iframe this will reload the base page, and
    2424        // the new delay will be passed to the iframe above
    25         out.print("<hr /><p><center><form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n");
     25        out.print("<form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n");
    2626        out.print("<b>Refresh (s):</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" />\n");
    2727        out.print("<button type=\"submit\">Enable</button>\n");
    28         out.print("</form></center></p></div>\n");
     28        out.print("</form></div>\n");
    2929    }
    3030%>
  • apps/routerconsole/jsp/summaryframe.jsp

    r6f05328 r7782970  
    5050    }
    5151%>
    52 </head>
    53 
    54 <body style="margin: 0;">
    55 
    56 <div class="routersummary">
     52</head><body style="margin: 0;"><div class="routersummary">
    5753<%@include file="summarynoframe.jsp" %>
    5854<%
    5955    // d and shutdownSoon defined above
    6056    if (!shutdownSoon) {
    61         out.print("<hr /><p><form action=\"summaryframe.jsp\" method=\"GET\">\n");
     57        out.print("<hr><form action=\"summaryframe.jsp\" method=\"GET\">\n");
    6258        if ("0".equals(d)) {
    6359            out.print("<b>Refresh (s):<b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" align=\"right\" />\n");
     
    6864            out.print("<button type=\"submit\">Disable " + d + "s Refresh</button>\n");
    6965        }
    70         out.print("</form></p><hr />\n");
     66        out.print("</form><hr>\n");
    7167    }
    7268%>
    73 </div>
    74 
    75 </body>
    76 </html>
     69</div></body></html>
  • apps/routerconsole/jsp/summarynoframe.jsp

    r6f05328 r7782970  
    1313<jsp:setProperty name="update" property="*" />
    1414<jsp:setProperty name="update" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    15 <a href="index.jsp" target="_top"><img src="/themes/console/images/i2plogo.png" alt="I2P Router Console" title="I2P Router Console"/></a><hr />
     15<a href="index.jsp" target="_top"><img src="/themes/console/images/i2plogo.png" alt="I2P Router Console" title="I2P Router Console"></a><hr>
    1616<% java.io.File lpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/toolbar.html");
    1717    // you better have target="_top" for the links in there...
     
    2222<jsp:getProperty name="linkhelper" property="content" />
    2323<% } else { %>
    24 <h3><a href="/configclients.jsp" target="_top" title="Configure startup of clients and webapps (services); manually start dormant services.">I2P Services</a></h3><hr>
    25 <table>
    26 <tr>
    27 <td><a href="susidns/index.jsp" target="_blank" title="Manage your I2P hosts file here (I2P domain name resolution).">Addressbook</a>
     24<h3><a href="/configclients.jsp" target="_top" title="Configure startup of clients and webapps (services); manually start dormant services.">I2P Services</a></h3>
     25<hr><table>
     26<tr><td><a href="susidns/index.jsp" target="_blank" title="Manage your I2P hosts file here (I2P domain name resolution).">Addressbook</a>
    2827<a href="i2psnark/" target="_blank" title="Built-in anonymous BitTorrent Client">Torrents</a>
    29 <a href="susimail/susimail" target="blank" title="Anonymous webmail client.">Webmail</a> 
    30 <a href="http://127.0.0.1:7658/" target="_blank" title="Anonymous resident webserver.">Webserver</a></td>
    31 </tr></table><hr>
    32 <h3><a href="config.jsp" target="_top" title="Configure I2P Router.">I2P Internals</a></h3><hr>
    33 <table><tr>
    34 <td>
    35 <a href="tunnels.jsp" target="_top" title="View existing tunnels and tunnel build status.">Tunnels</a>
    36 <a href="peers.jsp" target="_top" title="Show all current peer connections.">Peers</a>
    37 <a href="profiles.jsp" target="_top" title="Show recent peer performance profiles.">Profiles</a>
    38 <a href="netdb.jsp" target="_top" title="Show list of all known I2P routers.">NetDB</a>
    39 <a href="logs.jsp" target="_top" title="Health Report.">Logs</a>
     28<a href="susimail/susimail" target="blank" title="Anonymous webmail client.">Webmail</a>
     29<a href="http://127.0.0.1:7658/" target="_blank" title="Anonymous resident webserver.">Webserver</a></td></tr></table>
     30<hr><h3><a href="config.jsp" target="_top" title="Configure I2P Router.">I2P Internals</a></h3><hr>
     31<table><tr><td>
     32<a href="tunnels.jsp" target="_top" title="View existing tunnels and tunnel build status.">Tunnels</a>
     33<a href="peers.jsp" target="_top" title="Show all current peer connections.">Peers</a>
     34<a href="profiles.jsp" target="_top" title="Show recent peer performance profiles.">Profiles</a>
     35<a href="netdb.jsp" target="_top" title="Show list of all known I2P routers.">NetDB</a>
     36<a href="logs.jsp" target="_top" title="Health Report.">Logs</a>
    4037<a href="jobs.jsp" target="_top" title="Show the router's workload, and how it's performing.">Jobs</a>
    41 <a href="graphs.jsp" target="_top" title="Graph router performance.">Graphs</a>
    42 <a href="oldstats.jsp" target="_top" title="Textual router performance statistics.">Stats</a>
    43 </td></tr></table>
     38<a href="graphs.jsp" target="_top" title="Graph router performance.">Graphs</a>
     39<a href="oldstats.jsp" target="_top" title="Textual router performance statistics.">Stats</a></td></tr></table>
    4440<% } %>
    45 <hr>
    46 <h3><a href="help.jsp" target="_top" title="I2P Router Help.">General</a></h3><hr>
    47 <h4>
    48 <a title="Your unique I2P router identity is <jsp:getProperty name="helper" property="ident" />, never reveal it to anyone" href="netdb.jsp?r=." target="_top">Local Identity</a></h4>
    49 <hr>
    50 <table><tr>
    51 <td align="left">
     41<hr><h3><a href="help.jsp" target="_top" title="I2P Router Help.">General</a></h3><hr>
     42<h4><a title="Your unique I2P router identity is <jsp:getProperty name="helper" property="ident" />, never reveal it to anyone" href="netdb.jsp?r=." target="_top">Local Identity</a></h4><hr>
     43<table><tr><td align="left">
    5244<b>Version:</b></td>
    5345<td align="right"><jsp:getProperty name="helper" property="version" /></td></tr>
    5446<tr title="How long we've been running for this session.">
    55 <td align="left">
    56 <b>Uptime:</b></td>
    57 <td align="right"><jsp:getProperty name="helper" property="uptime" /></td></tr></table>
    58 <hr><h4><a href="config.jsp#help" target="_top" title="Help with configuring your firewall and router for optimal I2P performance."><jsp:getProperty name="helper" property="reachability" /></a></h4>
    59 <hr>
     47<td align="left"><b>Uptime:</b></td>
     48<td align="right"><jsp:getProperty name="helper" property="uptime" />
     49</td></tr></table>
     50<hr><h4><a href="config.jsp#help" target="_top" title="Help with configuring your firewall and router for optimal I2P performance."><jsp:getProperty name="helper" property="reachability" /></a></h4><hr>
    6051<%
    6152    if (helper.updateAvailable() || helper.unsignedUpdateAvailable()) {
     
    7263            System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+"");
    7364            String uri = request.getRequestURI();
    74             out.print("<p><form action=\"" + uri + "\" method=\"GET\">\n");
     65            out.print("<form action=\"" + uri + "\" method=\"GET\">\n");
    7566            out.print("<input type=\"hidden\" name=\"updateNonce\" value=\"" + nonce + "\" />\n");
    7667            if (helper.updateAvailable())
     
    7869            if (helper.unsignedUpdateAvailable())
    7970                out.print("<button type=\"submit\" name=\"updateAction\" value=\"Unsigned\" >Download Unsigned<br>Update " + helper.getUnsignedUpdateVersion() + "</button>\n");
    80             out.print("</form></p>\n");
     71            out.print("</form>\n");
    8172        }
    8273    }
     
    8475<p>
    8576<%=net.i2p.router.web.ConfigRestartBean.renderStatus(request.getRequestURI(), request.getParameter("action"), request.getParameter("consoleNonce"))%>
    86 </p>
    87 <hr />
    88 <h3><a href="peers.jsp" target="_top" title="Show all current peer connections.">Peers</a></h3><hr><table>
     77</p><hr><h3><a href="peers.jsp" target="_top" title="Show all current peer connections.">Peers</a></h3><hr>
     78<table>
    8979<tr><td align="left"><b>Active:</b></td><td align="right"><jsp:getProperty name="helper" property="activePeers" />/<jsp:getProperty name="helper" property="activeProfiles" /></td></tr>
    9080<tr><td align="left"><b>Fast:</b></td><td align="right"><jsp:getProperty name="helper" property="fastPeers" /></td></tr>
    9181<tr><td align="left"><b>High capacity:</b></td><td align="right"><jsp:getProperty name="helper" property="highCapacityPeers" /></td></tr>
    9282<tr><td align="left"><b>Integrated:</b></td><td align="right"><jsp:getProperty name="helper" property="wellIntegratedPeers" /></td></tr>
    93 <tr><td align="left"><b>Known:</b></td><td align="right"><jsp:getProperty name="helper" property="allPeers" /></td></tr></table><hr><%
     83<tr><td align="left"><b>Known:</b></td><td align="right"><jsp:getProperty name="helper" property="allPeers" /></td></tr>
     84</table><hr>
     85<%
    9486    if (helper.showFirewallWarning()) {
    9587        %><h4><a href="config.jsp" target="_top" title="Help with firewall configuration.">Check NAT/firewall</a></h4><%
     
    10092        if (reseedInProgress) {
    10193            // While reseed occurring, show status message instead
    102             out.print("<i>" + System.getProperty("net.i2p.router.web.ReseedHandler.statusMessage","") + "</i><br />");
     94            out.print("<i>" + System.getProperty("net.i2p.router.web.ReseedHandler.statusMessage","") + "</i><br>");
    10395        } else {
    10496            // While no reseed occurring, show reseed link
     
    108100            System.setProperty("net.i2p.router.web.ReseedHandler.nonce", nonce+"");
    109101            String uri = request.getRequestURI();
    110             out.print("<p><form action=\"" + uri + "\" method=\"GET\">\n");
     102            out.print("<form action=\"" + uri + "\" method=\"GET\">\n");
    111103            out.print("<input type=\"hidden\" name=\"reseedNonce\" value=\"" + nonce + "\" />\n");
    112             out.print("<button type=\"submit\" >Reseed</button></form></p>\n");
     104            out.print("<button type=\"submit\" >Reseed</button></form>\n");
    113105        }
    114106    }
     
    117109        String reseedErrorMessage = System.getProperty("net.i2p.router.web.ReseedHandler.errorMessage","");
    118110        if (reseedErrorMessage.length() > 0) {
    119             out.print("<i>" + reseedErrorMessage + "</i><br />");
     111            out.print("<i>" + reseedErrorMessage + "</i><br>");
    120112        }
    121113    }
    122  %><hr />
    123 <h3><a href="config.jsp" title="Configure router bandwidth allocation." target="_top">Bandwidth in/out</a></h3><hr>
     114 %>
     115<hr><h3><a href="config.jsp" title="Configure router bandwidth allocation." target="_top">Bandwidth in/out</a></h3><hr>
    124116<table>
    125117<tr><td align="left"><b>1s:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundSecondKBps" />/<jsp:getProperty name="helper" property="outboundSecondKBps" />K/s</td></tr>
     
    127119<tr><td align="left"><b>Total:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundLifetimeKBps" />/<jsp:getProperty name="helper" property="outboundLifetimeKBps" />K/s</td></tr>
    128120<tr><td align="left"><b>Used:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundTransferred" />/<jsp:getProperty name="helper" property="outboundTransferred" /></td></tr></table>
    129 <hr>
    130 <h3><a href="tunnels.jsp" target="_blank" title="View existing tunnels and tunnel build status.">Tunnels in/out</a></h3><hr>
    131 <table><tr>
    132 <td align="left"><b>Exploratory:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundTunnels" />/<jsp:getProperty name="helper" property="outboundTunnels" /></td></tr>
     121<hr><h3><a href="tunnels.jsp" target="_top" title="View existing tunnels and tunnel build status.">Tunnels in/out</a></h3><hr>
     122<table>
     123<tr><td align="left"><b>Exploratory:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundTunnels" />/<jsp:getProperty name="helper" property="outboundTunnels" /></td></tr>
    133124<tr><td align="left"><b>Client:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundClientTunnels" />/<jsp:getProperty name="helper" property="outboundClientTunnels" /></td></tr>
    134 <tr><td align="left"><b>Participating:</b></td><td align="right"><jsp:getProperty name="helper" property="participatingTunnels" /></td></tr></table>
    135 <hr>
    136 <h3><a href="/oldstats.jsp#JobQueue" target="_top" title="What's in the router's job queue?">Congestion</a></h3><hr>
    137 <table><tr>
    138 <td align="left"><b>Job lag:</b></td><td align="right"><jsp:getProperty name="helper" property="jobLag" /></td></tr>
     125<tr><td align="left"><b>Participating:</b></td><td align="right"><jsp:getProperty name="helper" property="participatingTunnels" /></td></tr>
     126</table><hr><h3><a href="/jobs.jsp" target="_top" title="What's in the router's job queue?">Congestion</a></h3><hr>
     127<table>
     128<tr><td align="left"><b>Job lag:</b></td><td align="right"><jsp:getProperty name="helper" property="jobLag" /></td></tr>
    139129<tr><td align="left"><b>Message delay:</b></td><td align="right"><jsp:getProperty name="helper" property="messageDelay" /></td></tr>
    140130<tr><td align="left"><b>Tunnel lag:</b></td><td align="right"><jsp:getProperty name="helper" property="tunnelLag" /></td></tr>
    141 <tr><td align="left"><b>Backlog:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundBacklog" /></td></tr><table  align="center" title="Router tunnel build status.">
    142 <hr><h4><jsp:getProperty name="helper" property="tunnelStatus" /></h4>
    143 <hr>
    144 <jsp:getProperty name="helper" property="destinations" />
     131<tr><td align="left"><b>Backlog:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundBacklog" /></td></tr>
     132</table><hr><h4><jsp:getProperty name="helper" property="tunnelStatus" /></h4><hr><jsp:getProperty name="helper" property="destinations" />
  • apps/routerconsole/jsp/tunnels.jsp

    r6f05328 r7782970  
    33<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    44
    5 <html><head>
    6 <title>I2P Router Console - tunnel summary</title>
     5<html><head><title>I2P Router Console - tunnel summary</title>
    76<%@include file="css.jsp" %>
    87</head><body>
    9 
    10 <%@include file="summary.jsp" %>
    11  <h1>I2P Tunnel Summary</h1>
     8<%@include file="summary.jsp" %><h1>I2P Tunnel Summary</h1>
    129<div class="main" id="main">
    1310 <jsp:useBean class="net.i2p.router.web.TunnelHelper" id="tunnelHelper" scope="request" />
     
    1512 <jsp:setProperty name="tunnelHelper" property="writer" value="<%=out%>" />
    1613 <jsp:getProperty name="tunnelHelper" property="tunnelSummary" />
    17 </div>
    18 
    19 </body>
    20 </html>
     14</div></body></html>
  • apps/routerconsole/jsp/viewstat.jsp

    r6f05328 r7782970  
    1111  java.io.OutputStream cout = response.getOutputStream();
    1212  response.setContentType("image/png");
    13   rendered = net.i2p.router.web.StatSummarizer.instance().renderPng(cout, templateFile); 
     13  rendered = net.i2p.router.web.StatSummarizer.instance().renderPng(cout, templateFile);
    1414}
    1515net.i2p.stat.Rate rate = null;
     
    2020if ( !rendered && ((rs != null) || fakeBw) ) {
    2121  long per = -1;
    22   try { 
     22  try {
    2323    if (fakeBw)
    2424      per = 60*1000;
    2525    else
    26       per = Long.parseLong(period); 
     26      per = Long.parseLong(period);
    2727    if (!fakeBw)
    2828      rate = rs.getRate(per);
     
    6464  } catch (NumberFormatException nfe) {}
    6565}
    66 if (!rendered) { 
     66if (!rendered) {
    6767  response.sendError(404, "That stat is not available");
    6868}
  • apps/streaming/java/src/net/i2p/client/streaming/SchedulerDead.java

    r6f05328 r7782970  
    99 *
    1010 * <h2>Entry conditions:</h2><ul>
    11  * <li>Both sides have closed and ACKed and the timeout has passed. <br />
     11 * <li>Both sides have closed and ACKed and the timeout has passed. <br>
    1212 *     <b>or</b></li>
    1313 * <li>A RESET was received</li>
  • core/java/src/net/i2p/crypto/TransientSessionKeyManager.java

    r6f05328 r7782970  
    537537        for (Iterator<OutboundSession> iter = outbound.iterator(); iter.hasNext();) {
    538538            OutboundSession sess = iter.next();
    539             buf.append("<tr><td><b>Target key:</b> ").append(sess.getTarget().toString()).append("<br />");
    540             buf.append("<b>Established:</b> ").append(new Date(sess.getEstablishedDate())).append("<br />");
    541             buf.append("<b>Last Used:</b> ").append(new Date(sess.getLastUsedDate())).append("<br />");
     539            buf.append("<tr><td><b>Target key:</b> ").append(sess.getTarget().toString()).append("<br>");
     540            buf.append("<b>Established:</b> ").append(new Date(sess.getEstablishedDate())).append("<br>");
     541            buf.append("<b>Last Used:</b> ").append(new Date(sess.getLastUsedDate())).append("<br>");
    542542            buf.append("<b># Sets:</b> ").append(sess.getTagSets().size()).append("</td></tr>");
    543543            buf.append("<tr><td><b>Session key:</b> ").append(sess.getCurrentKey().toBase64()).append("</td></tr>");
  • history.txt

    r6f05328 r7782970  
     12009-08-19 sponge
     2    * Java code to set Router Console password for dr|z3d
     3
     42009-08-18 dr|z3d
     5    * Fixes for sidepanel
     6    * Overhauled classic theme for i2ptunnels
     7    * First stage of code validation to fix broken and "illegal" code
     8    * Multifarious other UI tweaks and fiddles.
     9
     102009-08-15 sponge
     11    * Merge in dr|z3d and my own html fixes for router console java and jsp
     12      files so that Opera (and now IE?) doesn't puke anymore on the missing
     13      and misplaced HTML tags.
     14    * Optimized all jsp files so that they are shorter to save space, which
     15      is then used to fix the broken HTML. We should break even space-wise.
     16    * Bump to -13.
     17
    1182009-08-11 sponge
    219    * Code Janitor time! Many fixes and documenting fixes that should be
  • installer/resources/themes/console/classic/console.css

    r6f05328 r7782970  
    1 /* Optimised for less capable browers and system specifications */
     1/* Optimised for less capable browsers and system specifications */
    22
    33body {
     
    2121     overflow: auto;
    2222     font-size: 8pt !important;
    23      width: 100%;
     23     width: 95%;
     24     padding-top: 10px;
    2425}
    2526
     
    111112div.routersummaryouter {
    112113     float: left;
    113      width: 205px;
     114     width: 200px;
    114115     margin: 0;
    115116     padding: 0;
     
    120121div.routersummary {
    121122     background: #ddf;
    122      width: 190px;
     123     width: 185px;
    123124     color: inherit;
    124125     margin: 0;
     
    172173     border: 0;
    173174     text-align: center !important;
    174      margin: -5px 5px;
     175     margin: -5px 5px -5px 2px;
    175176     width: 180px !important;
    176177     overflow: hidden;
     
    226227
    227228div.main {
    228      margin: 0px 0px 0px 196px;
     229     margin: 0px 0px 0px 195px;
    229230     padding: 15px 15px 15px 15px;
    230231     background: #eef;
     
    252253
    253254div.news {
    254      margin: -5px 0px 0 196px;
     255     margin: -5px 0px 0 195px;
    255256     padding: -10px 15px 8px 15px;
    256257     background: #ffffc0;
     
    272273     margin: -15px 15px -20px -20px;
    273274     padding: 0px 0 15px 0;
    274      border-bottom: 2px solid #cc7;
     275     border-bottom: 5px solid #cc7;
    275276     border-top: 0px solid #cc7;     
    276277     padding: 3px 5px 5px 5px;
     
    359360     border: 5px solid #bbf;
    360361     padding: 13px 10px 12px 10px;
    361      margin: 0 0px 0 196px;
     362     margin: 0 0px 0 195px;
    362363     line-height: 93%;
    363364     text-transform: uppercase;
  • installer/resources/themes/console/classic/default.css

    r6f05328 r7782970  
    11body {
    2         margin :  0px;
    3         padding : 0px;
    4         text-align : center;
    5         font-family : Arial, Helvetica, sans-serif;
    6         background-color : #ffffff;
    7         color :  #000000;
    8     font-size : 100%;
    9    
    10     /* we've avoided Tantek Hacks so far,
    11     ** but we can't avoid using the non-w3c method of
    12     ** box rendering. (and therefore one of mozilla's
    13     ** proprietry -moz properties (which hopefully they'll
    14     ** drop soon).
    15     */
    16     -moz-box-sizing : border-box;
    17     box-sizing :      border-box;
     2     margin: 0px;
     3     padding: 0px;
     4     text-align: center;
     5     font: 10pt/140% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
     6     background: #bbf;
     7     color: #000;
     8     -moz-box-sizing: border-box;
     9     box-sizing: border-box;
    1810}
    1911
    2012div {
    21     -moz-box-sizing : border-box;
    22     box-sizing :      border-box;
     13     -moz-box-sizing: border-box;
     14     box-sizing: border-box;
    2315}
    2416
    2517h4, label {
    26     margin :  0px;
    27     padding : 2px;
    28     float :  left;
    29     width : 150px;
    30     height : 24px;
    31     font-weight :  bold;
    32     text-align : right;
    33     font-size :   1.0em;
    34     -moz-box-sizing: border-box;
    35     box-sizing :    border-box;
     18     margin: 0px;
     19     padding: 2px;
     20     float: left;
     21     width: 150px;
     22     height: 24px;
     23     font-weight: normal;
     24     text-align: right;
     25     font-size: 8.5pt;
     26     -moz-box-sizing: border-box;
     27     box-sizing: border-box;
    3628}
    3729
    3830h4 {
    39     font-size : 1.2em;
    40     text-align : center;
    41     width : 750px;
     31     font-size: 10.5pt;
     32     text-align: center !important;
     33     font-weight: bold;
     34     border: 1px solid #77f;
     35     border-top: 2px solid #77f;
     36     margin: -6px 0 5px -10px !important;
     37     padding: 5px 10px 25px 10px;
     38     background: #fff;
     39     text-shadow: 0px 0px 1px rgba(32, 32, 192, 0.3);
     40     text-transform: uppercase;
     41     white-space: nowrap;
     42     width: 782px;
     43     letter-spacing: 0.09em;
     44}
     45
     46label {
     47     font-style: italic;
     48     margin: 0 3px 0 -3px;
    4249}
    4350
    4451a {
    45     text-decoration : none;
     52     text-decoration: none;
    4653}
    4754
    4855form {
    49         margin : 0px;
     56     margin: 0px;
    5057}
    5158
    5259textarea, input, select, button, a {
    53     font-family : Arial, Helvetica, sans-serif;
    54     -moz-box-sizing : border-box;
    55     box-sizing :      border-box;
    56     font-size : 1.0em;
    57     float : left;
     60     -moz-box-sizing: border-box;
     61     box-sizing: border-box;
     62     font: 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
     63     float: left;
     64     margin: 2px 0 5px 0;
    5865}
    5966
    6067button {
    61     float : none;
     68     float: none;
     69     height: 20px !important;
    6270}
    6371
    6472textarea {
    65     border : 1px solid #ddddc0;
     73     border: 1px solid #ddddc0;
    6674}
    6775
    6876br {
    69     clear : left;
     77     clear: left;
    7078}
    7179
    7280div.statusNotRunning {
    73     float : left;
    74     width : 82px;
    75     height : 24px;
    76         color : #dd0000;
    77 }
     81     float: left;
     82     width: 82px;
     83     height: 24px;
     84     color: #d00;
     85}
     86
    7887div.statusRunning {
    79     float : left;
    80     width : 82px;
    81     height : 24px;
    82         color : #00dd00;
    83 }
     88     float: left;
     89     width: 82px;
     90     height: 24px;
     91     color: #0d0;
     92}
     93
    8494div.statusStarting {
    85     float : left;
    86     width : 82px;
    87     height : 24px;
    88         color : #339933;
     95     float: left;
     96     width: 82px;
     97     height: 24px;
     98     color: #393;
    8999}
    90100
    91101hr {
    92     display : none;
     102     display: none;
    93103}
    94104
    95105.separator, .subdivider {
    96     clear : both;
    97     height : 1px;
    98     margin : 3px 0px 3px 0px;
    99     border-bottom : 1px solid #ddddc0;
     106     clear: both;
     107     height: 1px;
     108     margin: 5px -8px 5px -8px;
     109     border-bottom: 1px solid #aaf;
    100110}
    101111
    102112.subdivider {
    103     border-bottom : 1px dashed #ddddc0;
     113     border-bottom: 1px dotted #aaf;
     114     margin: 0 0 10px 0;
    104115}
    105116
    106117.freetext {
    107     width : 150px;
    108     height : 22px;
    109     border : 1px solid #aaaac0;
     118     width: 150px;
     119     height: 22px;
     120     border: 1px solid #aaf;
    110121}
    111122
    112123.control {
    113     margin :  0 4px 0 0;
    114     padding : 0 0 4px 0;
    115     overflow : hidden;
    116     height : 20px;
    117     width :  60px;
    118     font-weight : normal;
    119     background-color :  #dddddd;
    120     color : black;
    121     border : 1px outset #ddddc0;
    122     text-align :  center;
    123     white-space : nowrap;
     124     margin: 2px;
     125     padding: 2px;
     126     overflow: hidden;
     127     height: 20px;
     128     width: 60px;
     129     font-weight: bold;
     130     background: #ddd;
     131     color: #000;
     132     border: 1px outset #ddddc0;
     133     text-align: center;
     134     vertical-align: middle;
     135     white-space: nowrap;
    124136}
    125137
    126138.control:hover {
    127     background-color : #ffffed;
     139     background: #229;
     140     color: #fff;
    128141}
    129142
    130143.control:active {
    131     border : 2px inset;
     144     border: 2px inset;
    132145}
    133146
    134147.panel {
    135     width : 760px;
    136     margin : 16px auto 16px auto;
    137     overflow : hidden;
    138         text-align : left;
    139     font-size : 0.8em;
    140         background-color : #ffffef;
    141         border : 4px solid #ffffd0;
     148     width: 790px;
     149     margin: 16px auto 16px auto;
     150     padding: 5px 10px;
     151     overflow: hidden;
     152     text-align: left;
     153     font-size: 8pt;
     154     background: #eef;
     155     border: 4px solid #77f;
     156     -moz-box-shadow: inset 0px 0px 0px 1px #99f;
    142157}
    143158
    144159.panel .footer {
    145     float : right;
    146     padding : 4px;
     160
     161     padding: 4px;
    147162}
    148163
    149164.toolbox {
    150     float : right;
     165     width: 100%;
    151166}
    152167
    153168.rowItem {
    154     width : 750px;
    155     float : left;
    156     margin : 0px;
     169     width: 750px;
     170     float: left;
     171     margin: 0px;
    157172}
    158173
    159174.comment {
    160     font-style : italic;
     175     font-style: italic;
     176     white-space: nowrap;
    161177}
    162178
    163179.text {
    164     height : 24px;
    165     width : 150px;
    166     padding : 2px 0 0 2px;
    167     float : left;
    168     margin : 0;
     180     height: 24px;
     181     width: 150px;
     182     padding: 2px 0 0 2px;
     183     float: left;
     184     margin: 0;
     185     font-weight: bold;
    169186}
    170187
    171188.accessKey {
    172     text-decoration : underline;
     189     text-decoration: underline;
    173190}
    174191
    175192#globalOperationsPanel {
    176     background-color : #ffefef;
    177         border : 4px solid #ffd0d0;
     193     background: #eef;
     194     border: 4px solid #77f;
     195     -moz-box-shadow: inset 0px 0px 0px 1px #900;
     196     padding: 5px 5px 10px 5px;
     197     text-align: right;
    178198}
    179199
    180200#globalOperationsPanel .control {
    181     width : 100px;
    182 }
     201     width: 100px !important;
     202     margin-top: 3px;
     203     float: right;
     204}
  • installer/resources/themes/console/classic/i2ptunnel.css

    r6f05328 r7782970  
    111111
    112112#tunnelListPage textarea {
    113     width : 750px;
    114     height : 100px;
     113    width : 100%;
     114    height : 88px;
    115115    padding : 0 0 0 4px;
     116    color: green;
     117    margin-bottom: 7px;
    116118}
    117119
  • installer/resources/themes/console/classic/ieshim.css

    r6f05328 r7782970  
    123123     border: 0px solid #f00;
    124124     text-align: center !important;
    125      font-size: 10pt;
     125     font-size: 9pt;
    126126     letter-spacing: 0.05em;
    127127     margin: -14px 0px -15px 1px;
     
    134134     border: 0px solid #f00;
    135135     border-bottom: 0 !important;
    136      font-size: 9pt;
     136     font-size: 8.5pt;
    137137     letter-spacing: 0.05em;
    138138     margin: -14px 0px -15px 1px !important;
     
    155155     background-image: none !important;
    156156     background-color: transparent !important;
     157     text-align: center !important;
    157158}
    158159
     
    173174}     
    174175
     176/*
    175177div.routersummary img {
    176178     margin: 5px -10px -5px -10px;
    177179     overflow: hidden;
    178180}     
     181*/
    179182
    180183div.routersummary a:link, div.routersummary a:visited {
  • installer/resources/themes/console/dark/console.css

    r6f05328 r7782970  
    22
    33body {
    4      margin: 25px 10px 0 5px;
     4     margin: 20px 5px 0 15px;
    55     padding: 0;
    66     text-align: center;
     
    8080     float: left;
    8181     width: 200px;
    82      margin: 0 0 10px 20px;
     82     margin: 0 0 10px 5px;
    8383     padding: 0;
    8484     border: 0;
     
    126126     border: 0;
    127127     font-size: 10pt;
    128      letter-spacing: 0.05em;
     128     letter-spacing: 0.04em;
    129129     margin: -7px -9px -10px -9px;
    130130     padding: 3px 0px 5px 0px;
     
    141141     border: 0;
    142142     border-bottom: 0 !important;
    143      font-size: 9pt;
    144      letter-spacing: 0.05em;
     143     font-size: 8.5pt;
     144     letter-spacing: 0.03em;
    145145     margin: -7px -9px -10px -9px !important;
    146146     padding: 2px 3px 5px 3px;
     
    155155     border: 0;
    156156     text-align: center !important;
    157      margin: -5px -5px;
     157     margin: -1px -4px -4px -4px;
    158158     width: 185px !important;
    159159     overflow: hidden;
     
    179179
    180180div.routersummary a:link, div.routersummary a:visited {
    181      text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.3);
     181     text-shadow: 0px 0px 1px rgba(192, 192, 255, 0.5);
    182182}
    183183
     
    225225
    226226div.main {
    227      margin: 0px 0px 20px 215px;
     227     margin: 0px 0px 20px 195px;
    228228     padding: 0 15px 15px 25px;
    229229     background: #002;
     
    241241
    242242div.news {
    243      margin: 0px 15px 20px 240px;
     243     margin: 0px 15px 20px 220px;
    244244     padding: 20px 30px 20px 30px;
    245245     border: 1px solid #99f;
     
    267267div.confignav {
    268268     padding: 15px 10px !important;
    269      margin: 0 0 25px 0;
     269     margin: 0 0 15px 0;
    270270     background: #004 url('images/darkbluebg.png');
    271271     -moz-border-radius: 4px;
     
    326326
    327327div.graphspanel {
    328      padding: 15px 15px 15px 15px;
     328     padding: 15px;
    329329     margin: 10px 0px;
    330330     background: #005;
     
    337337     -khtml-box-shadow: inset 0px 0px 1px 0px #eef;
    338338     box-shadow: inset 0px 0px 1px 0px #eef;
     339     text-align: center;
     340}
     341
     342div.graphspanel form {
     343     text-align: left;
     344     padding: 15px;
    339345}
    340346
     
    348354     -khtml-box-shadow: inset 0px 0px 1px 0px #eef;
    349355     box-shadow: inset 0px 0px 1px 0px #eef;
    350      opacity: 0.9;
     356     opacity: 0.8;
    351357}
    352358
     
    362368     opacity: 1;
    363369}
     370
    364371table {
    365372     border-collapse: collapse;
     
    498505     color: #fff;
    499506     padding: 10px 15px;
    500      margin: 0 15px 25px 240px;
     507     margin: 0 15px 15px 220px;
    501508     font-size: 16pt;
    502509     font-weight: bold;
     
    530537     -khtml-border-radius: 4px;
    531538     vertical-align: middle;
    532      margin: 25px 0 20px 0 !important;
     539     margin: 15px 0 10px 0 !important;
    533540     -moz-box-shadow: inset 0px 0px 1px 0px #eef;
    534541     -khtml-box-shadow: inset 0px 0px 1px 0px #eef;
     
    758765
    759766.joblog {
    760      margin: 25px 0 25px 0;
    761      padding: 20px 30px 20px 30px !important;
     767     margin:    15px 0 15px 0;
     768     padding: 20px !important;
    762769     border: 1px solid #99f;
    763770     background-color: #004;
  • installer/resources/themes/console/light/console.css

    r6f05328 r7782970  
    120120
    121121div.routersummary h3 {
    122      border: 0px solid #f00;
    123 /*     border-bottom: 1px solid #99f !important;*/
     122     border: 0;
    124123     font-size: 10pt;
    125      letter-spacing: 0.05em;
     124     letter-spacing: 0.04em;
    126125     margin: -7px -9px -7px -9px;
    127126     padding: 5px 0px 5px 0px;
    128127     background: #c5d5fb;
    129128     text-transform: uppercase;
     129     background-image: -moz-linear-gradient(top, bottom, from(#ddf), to(#c5d5fb), color-stop(25%, #c5d5fb), color-stop(100%, #ddf));
    130130}
    131131
     
    133133     border: 0px solid #f00;
    134134     border-bottom: 0 !important;
    135      font-size: 9pt;
    136      letter-spacing: 0.05em;
     135     font-size: 8.5pt;
     136     letter-spacing: 0.02em;
    137137     margin: -7px -9px -7px -9px !important;
    138138     padding: 2px 3px 3px 3px;
     
    146146     border: 0;
    147147     text-align: center !important;
    148      margin: -5px -5px;
     148     margin: -2px -4px;
    149149     width: 185px !important;
    150150     overflow: hidden;
     
    170170
    171171div.routersummary a:link, div.routersummary a:visited {
    172      text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.3);
     172     text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.5);
    173173}
    174174
    175175div.routersummary a:hover {
    176      text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.7);
     176     text-shadow: 0px 0px 0.5px rgba(255, 255, 255, 0.7);
    177177     color: #f60;
    178178}
  • installer/resources/themes/console/snark.css

    r6f05328 r7782970  
    4848  border-bottom: 3px solid #f30;
    4949  border-top: 3px solid #f30;
    50   text-shadow: 0px 0px 1px rgba(255, 163, 0, 0.9);
     50  text-shadow: 0px 0px 1px rgba(255, 32, 0, 0.5);
    5151  }
    5252
     
    9696  border-bottom: 1px inset #001; 
    9797  background: #f60 url('/themes/console/images/tabletitleorange.png') repeat-x;
    98   text-align: right;
     98/*  text-align: right; */
    9999  whitespace: nowrap;
    100100}
     
    108108td {
    109109        padding: 5px;
    110   text-align: right;
     110/*  text-align: right;*/
    111111}
    112112.snarkTorrentEven {
     
    140140  min-width: 800px !important;
    141141/*  max-width: 800px !important; */
    142   margin: 20px;
    143   padding: 10px 20px 5px 20px;
     142  margin: 5px 0px;
     143  padding: 10px 10px 0px 10px;
    144144  -moz-border-radius: 4px;
    145145  -khtml-border-radius: 4px;
     
    225225
    226226div.section {
    227   margin: 0 0 20px 0;
     227  margin: 0 0 10px 0;
    228228  padding: 10px;
    229229  background: #ffe;
     
    242242
    243243div.mainsection {
    244   margin: 0 0 20px 0;
     244  margin: 0 0 10px 0;
    245245  padding: 10px;
    246246  background: #ffe;
     
    259259
    260260div.newtorrentsection {
    261   margin: 0 0 20px 0;
     261  margin: 0 0 10px 0;
    262262  padding: 10px;
    263263  background: #ffe;
     
    276276
    277277div.addtorrentsection {
    278   margin: 0 0 20px 0;
     278  margin: 0 0 10px 0;
    279279  padding: 10px;
    280280  background: #ffe;
     
    293293
    294294div.configsection {
    295   margin: 0 0 20px 0;
     295  margin: 0;
    296296  padding: 10px;
    297297  background: #ffe;
     
    318318
    319319.snarknavbar {
    320   margin: 5px 0 20px 0 !important;
     320  margin: 0 0 10px 0 !important;
    321321  padding: 10px;
    322322  border: 1px solid #001;
     
    327327  -moz-box-shadow: inset 0px 0px 1px 0px #002;
    328328  background: #ddf url('../console/light/images/tabletile.png');
    329 }
     329  text-transform: uppercase !important;
     330  letter-spacing: 0.05em;
     331  font-weight: bold;
     332  font-size: 11pt;
     333  color: #001;
     334  text-shadow: 0px 0px 1px rgba(0, 0, 148, 0.9);
     335}
  • readme.html

    r6f05328 r7782970  
    1111  grow over the next few minutes and you'll see a "shared clients" local destination
    1212  listed on the left (if not, <a href="#trouble">see below</a>). Once those show
    13   up, you can:
     13up, you can:</p>
    1414<ul>
    1515  <li><b>browse "eepsites"</b> - on I2P there are anonymously hosted websites
     
    3333      <li><a href="http://echelon.i2p">echelon.i2p</a>: software
    3434        archive and information for I2P</li>
    35       <p></p>
     35    </ul></ul><ul>
    3636      There are many more eepsites - just follow the links from the ones you see,
    3737      bookmark your favorites, and visit them often!
    38     </ul></ul>
    39     <br />
    40     <br />
     38    </ul>
    4139    <ul>
    4240      <li class="tidylist"><b>browse the web</b> - there is currently an HTTP
     
    8179  or swing by #i2p or #i2p-chat on IRC at <a href="irc://irc.freenode.net/#i2p">irc.freenode.net</a>,
    8280  irc.postman.i2p or irc.freshcoffee.i2p (they're linked together).</p>
    83 <hr />
     81<hr>
  • router/java/src/net/i2p/router/Blocklist.java

    r6f05328 r7782970  
    779779                     out.write(toStr(to)); out.write("</td></tr>\n");
    780780                 } else
    781                      out.write("&nbsp</td></tr>\n");
     781                     out.write("&nbsp;</td></tr>\n");
    782782            }
    783783            if (_blocklistSize > MAX_DISPLAY)
  • router/java/src/net/i2p/router/JobQueue.java

    r6f05328 r7782970  
    616616        //        buf.append(states[i]).append(" ");
    617617        //buf.append(']');
    618         buf.append("</b><br />\n");
     618        buf.append("</b><br>\n");
    619619
    620620        long now = _context.clock().now();
  • router/java/src/net/i2p/router/Router.java

    r6f05328 r7782970  
    598598                   "<option value=\"/oldconsole.jsp#logs\">Log messages</option>\n" +
    599599                   "</select> <input type=\"submit\" value=\"GO\" /> </form>" +
    600                    "<hr />\n");
     600                   "<hr>\n");
    601601
    602602        StringBuilder buf = new StringBuilder(32*1024);
    603603       
    604604        if ( (_routerInfo != null) && (_routerInfo.getIdentity() != null) )
    605             buf.append("<b>Router: </b> ").append(_routerInfo.getIdentity().getHash().toBase64()).append("<br />\n");
    606         buf.append("<b>As of: </b> ").append(new Date(_context.clock().now())).append(" (uptime: ").append(DataHelper.formatDuration(getUptime())).append(") <br />\n");
    607         buf.append("<b>Started on: </b> ").append(new Date(getWhenStarted())).append("<br />\n");
    608         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");
     605            buf.append("<b>Router: </b> ").append(_routerInfo.getIdentity().getHash().toBase64()).append("<br>\n");
     606        buf.append("<b>As of: </b> ").append(new Date(_context.clock().now())).append(" (uptime: ").append(DataHelper.formatDuration(getUptime())).append(") <br>\n");
     607        buf.append("<b>Started on: </b> ").append(new Date(getWhenStarted())).append("<br>\n");
     608        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");
    609609        long tot = Runtime.getRuntime().totalMemory()/1024;
    610610        long free = Runtime.getRuntime().freeMemory()/1024;
    611         buf.append("<b>Memory:</b> In use: ").append((tot-free)).append("KB Free: ").append(free).append("KB <br />\n");
    612         buf.append("<b>Version:</b> Router: ").append(RouterVersion.VERSION).append(" / SDK: ").append(CoreVersion.VERSION).append("<br />\n");
     611        buf.append("<b>Memory:</b> In use: ").append((tot-free)).append("KB Free: ").append(free).append("KB <br>\n");
     612        buf.append("<b>Version:</b> Router: ").append(RouterVersion.VERSION).append(" / SDK: ").append(CoreVersion.VERSION).append("<br>\n");
    613613        if (_higherVersionSeen)
    614             buf.append("<b><font color=\"red\">HIGHER VERSION SEEN</font><b> - please <a href=\"http://www.i2p.net/\">check</a> to see if there is a new release out<br />\n");
    615 
    616         buf.append("<hr /><a name=\"bandwidth\"> </a><h2>Bandwidth</h2>\n");
     614            buf.append("<b><font color=\"red\">HIGHER VERSION SEEN</font><b> - please <a href=\"http://www.i2p.net/\">check</a> to see if there is a new release out<br>\n");
     615
     616        buf.append("<hr><a name=\"bandwidth\"> </a><h2>Bandwidth</h2>\n");
    617617        long sent = _context.bandwidthLimiter().getTotalAllocatedOutboundBytes();
    618618        long received = _context.bandwidthLimiter().getTotalAllocatedInboundBytes();
     
    724724        _context.bandwidthLimiter().renderStatusHTML(out);
    725725
    726         out.write("<hr /><a name=\"clients\"> </a>\n");
     726        out.write("<hr><a name=\"clients\"> </a>\n");
    727727       
    728728        _context.clientManager().renderStatusHTML(out);
    729729       
    730         out.write("\n<hr /><a name=\"transports\"> </a>\n");
     730        out.write("\n<hr><a name=\"transports\"> </a>\n");
    731731       
    732732        _context.commSystem().renderStatusHTML(out);
    733733       
    734         out.write("\n<hr /><a name=\"profiles\"> </a>\n");
     734        out.write("\n<hr><a name=\"profiles\"> </a>\n");
    735735       
    736736        _context.peerManager().renderStatusHTML(out);
    737737       
    738         out.write("\n<hr /><a name=\"tunnels\"> </a>\n");
     738        out.write("\n<hr><a name=\"tunnels\"> </a>\n");
    739739       
    740740        _context.tunnelManager().renderStatusHTML(out);
    741741       
    742         out.write("\n<hr /><a name=\"jobs\"> </a>\n");
     742        out.write("\n<hr><a name=\"jobs\"> </a>\n");
    743743       
    744744        _context.jobQueue().renderStatusHTML(out);
    745745       
    746         out.write("\n<hr /><a name=\"shitlist\"> </a>\n");
     746        out.write("\n<hr><a name=\"shitlist\"> </a>\n");
    747747       
    748748        _context.shitlist().renderStatusHTML(out);
    749749       
    750         out.write("\n<hr /><a name=\"pending\"> </a>\n");
     750        out.write("\n<hr><a name=\"pending\"> </a>\n");
    751751       
    752752        _context.messageRegistry().renderStatusHTML(out);
    753753       
    754         out.write("\n<hr /><a name=\"netdb\"> </a>\n");
     754        out.write("\n<hr><a name=\"netdb\"> </a>\n");
    755755       
    756756        _context.netDb().renderLeaseSetHTML(out);
     
    758758       
    759759        buf.setLength(0);
    760         buf.append("\n<hr /><a name=\"logs\"> </a>\n");
     760        buf.append("\n<hr><a name=\"logs\"> </a>\n");   
    761761        List msgs = _context.logManager().getBuffer().getMostRecentMessages();
    762762        buf.append("\n<h2>Most recent console messages:</h2><table>\n");
  • router/java/src/net/i2p/router/RouterVersion.java

    r6f05328 r7782970  
    1919    public final static String ID = "Monotone";
    2020    public final static String VERSION = CoreVersion.VERSION;
    21     public final static long BUILD = 12;
     21    public final static long BUILD = 15;
    2222    /** for example "-test" */
    2323    public final static String EXTRA = "";
  • router/java/src/net/i2p/router/Shitlist.java

    r6f05328 r7782970  
    275275                buf.append(" on the following transport: ").append(transports);
    276276            if (entry.cause != null) {
    277                 buf.append("<br />\n");
     277                buf.append("<br>\n");
    278278                buf.append(entry.cause);
    279279            }
  • router/java/src/net/i2p/router/client/ClientManager.java

    r6f05328 r7782970  
    389389    public void renderStatusHTML(Writer out) throws IOException {
    390390        StringBuilder buf = new StringBuilder(8*1024);
    391         buf.append("<u><b>Local destinations</b></u><br />");
     391        buf.append("<u><b>Local destinations</b></u><br>");
    392392       
    393393        Map runners = null;
     
    398398            Destination dest = (Destination)iter.next();
    399399            ClientConnectionRunner runner = (ClientConnectionRunner)runners.get(dest);
    400             buf.append("<b>*</b> ").append(dest.calculateHash().toBase64().substring(0,6)).append("<br />\n");
     400            buf.append("<b>*</b> ").append(dest.calculateHash().toBase64().substring(0,6)).append("<br>\n");
    401401            LeaseSet ls = runner.getLeaseSet();
    402402            if (ls == null) {
    403                 buf.append("<font color=\"red\"><i>No lease</i></font><br />\n");
     403                buf.append("<font color=\"red\"><i>No lease</i></font><br>\n");
    404404            } else {
    405405                long leaseAge = ls.getEarliestLeaseDate() - _ctx.clock().now();
    406406                if (leaseAge <= 0) {
    407407                    buf.append("<font color=\"red\"><i>Lease expired ");
    408                     buf.append(DataHelper.formatDuration(0-leaseAge)).append(" ago</i></font><br />\n");
     408                    buf.append(DataHelper.formatDuration(0-leaseAge)).append(" ago</i></font><br>\n");
    409409                } else {
    410410                    int count = ls.getLeaseCount();
    411411                    if (count <= 0) {
    412                         buf.append("<font color=\"red\"><i>No tunnels</i></font><br />\n");
     412                        buf.append("<font color=\"red\"><i>No tunnels</i></font><br>\n");
    413413                    } else {
    414414                        TunnelId id = ls.getLease(0).getTunnelId();
    415415                        TunnelInfo info = _ctx.tunnelManager().getTunnelInfo(id);
    416416                        if (info == null) {
    417                             buf.append("<font color=\"red\"><i>Failed tunnels</i></font><br />\n");
     417                            buf.append("<font color=\"red\"><i>Failed tunnels</i></font><br>\n");
    418418                        } else {
    419419                            buf.append(count).append(" x ");
     
    421421                            if (count != 1)
    422422                                buf.append('s');
    423                             buf.append("<br />\n");
     423                            buf.append("<br>\n");
    424424                            buf.append("Expiring in ").append(DataHelper.formatDuration(leaseAge));
    425                             buf.append("<br />\n");
     425                            buf.append("<br>\n");
    426426                        }
    427427                    }
     
    430430        }
    431431       
    432         buf.append("\n<hr />\n");
     432        buf.append("\n<hr>\n");
    433433        out.write(buf.toString());
    434434        out.flush();
  • router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java

    r6f05328 r7782970  
    972972                    buf.append(dest.toBase64().substring(0, 6));
    973973            }
    974             buf.append(")</b><br />\n");
     974            buf.append(")</b><br>\n");
    975975            long exp = ls.getEarliestLeaseDate()-now;
    976976            if (exp > 0)
    977                 buf.append("Expires in ").append(DataHelper.formatDuration(exp)).append("<br />\n");
     977                buf.append("Expires in ").append(DataHelper.formatDuration(exp)).append("<br>\n");
    978978            else
    979                 buf.append("Expired ").append(DataHelper.formatDuration(0-exp)).append(" ago<br />\n");
     979                buf.append("Expired ").append(DataHelper.formatDuration(0-exp)).append(" ago<br>\n");
    980980            for (int i = 0; i < ls.getLeaseCount(); i++) {
    981981                buf.append("Lease ").append(i + 1).append(": Gateway ");
    982982                buf.append(_context.commSystem().renderPeerHTML(ls.getLease(i).getGateway()));
    983                 buf.append(" Tunnel ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br />\n");
    984             }
    985             buf.append("<hr />\n");
     983                buf.append(" Tunnel ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br>\n");
     984            }
     985            buf.append("<hr>\n");
    986986            out.write(buf.toString());
    987987            buf.setLength(0);
     
    997997            size *= 4;
    998998        StringBuilder buf = new StringBuilder(size);
    999         out.write("<h2>Network Database Contents</h2>\n");
     999        out.write("<h2>Network Database Contents (<a href=\"netdb.jsp?l=1\">View LeaseSets</a>)</h2>\n");
    10001000        if (!_initialized) {
    10011001            buf.append("<i>Not initialized</i>\n");
     
    10051005        }
    10061006       
    1007         out.write("<a href=\"netdb.jsp?l=1\">View LeaseSets</a>");
    10081007        Hash us = _context.routerHash();
    10091008        out.write("<a name=\"routers\" ></a><h3>Routers (<a href=\"netdb.jsp");
     
    10851084        buf.append("<a name=\"").append(hash.substring(0, 6)).append("\" ></a>");
    10861085        if (isUs) {
    1087             buf.append("<a name=\"our-info\" ></a><b>Our info: ").append(hash).append("</b><br />\n");
     1086            buf.append("<a name=\"our-info\" ></a><b>Our info: ").append(hash).append("</b><br>\n");
    10881087        } else {
    1089             buf.append("<b>Peer info for:</b> ").append(hash).append("<br />\n");
     1088            buf.append("<b>Peer info for:</b> ").append(hash).append("<br>\n");
    10901089        }
    10911090       
    10921091        long age = _context.clock().now() - info.getPublished();
    10931092        if (isUs && _context.router().isHidden())
    1094             buf.append("Hidden, Updated: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br />\n");
     1093            buf.append("Hidden, Updated: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br>\n");
    10951094        else if (age > 0)
    1096             buf.append("Published: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br />\n");
     1095            buf.append("Published: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br>\n");
    10971096        else
    1098             buf.append("Published: <i>in ").append(DataHelper.formatDuration(0-age)).append("???</i><br />\n");
     1097            buf.append("Published: <i>in ").append(DataHelper.formatDuration(0-age)).append("???</i><br>\n");
    10991098        buf.append("Address(es): <i>");
    11001099        String country = _context.commSystem().getCountry(info.getIdentity().getHash());
     
    11121111            }
    11131112        }
    1114         buf.append("</i><br />\n");
     1113        buf.append("</i><br>\n");
    11151114        if (full) {
    1116             buf.append("Stats: <br /><i><code>\n");
     1115            buf.append("Stats: <br><i><code>\n");
    11171116            for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) {
    11181117                String key = (String)iter.next();
    11191118                String val = info.getOption(key);
    1120                 buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br />\n");
     1119                buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br>\n");
    11211120            }
    11221121            buf.append("</code></i>\n");
     
    11241123            buf.append("<a href=\"netdb.jsp?r=").append(hash.substring(0, 6)).append("\" >Full entry</a>\n");
    11251124        }
    1126         buf.append("<hr />\n");
     1125        buf.append("<hr>\n");
    11271126    }
    11281127   
  • router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java

    r6f05328 r7782970  
    9696           
    9797            if (tier != prevTier)
    98                 buf.append("<tr><td colspan=\"7\"><hr /></td></tr>\n");
     98                buf.append("<tr><td colspan=\"7\"><hr></td></tr>\n");
    9999            prevTier = tier;
    100100           
     
    150150                    buf.append(' ').append(fails).append('/').append(total).append(" Test Fails");
    151151            }
    152             buf.append("&nbsp</td>");
     152            buf.append("&nbsp;</td>");
    153153            buf.append("<td nowrap align=\"center\"><a target=\"_blank\" href=\"dumpprofile.jsp?peer=").append(peer.toBase64().substring(0,6)).append("\">profile</a>");
    154154            buf.append("&nbsp;<a href=\"configpeer.jsp?peer=").append(peer.toBase64()).append("\">+-</a></td>\n");
     
    220220
    221221        buf.append("<h3>Thresholds:</h3>");
    222         buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br />");
    223         buf.append("<b>Capacity:</b> ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)<br />");
     222        buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br>");
     223        buf.append("<b>Capacity:</b> ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)<br>");
    224224        buf.append("<b>Integration:</b> ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)");
    225225        buf.append("<h3>Definitions:</h3><ul>" +
  • router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java

    r6f05328 r7782970  
    484484        if (found)
    485485            buf.append("</a>");
    486         buf.append("</font></tt>");
     486        buf.append("</tt>");
    487487        return buf.toString();
    488488    }
  • router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java

    r6f05328 r7782970  
    646646            }
    647647        }
    648         buf.append("</ol></li></ul></p><hr>\n");
     648        buf.append("</ol></li></ul><hr>\n");
    649649        out.write(buf.toString());
    650650        out.flush();
  • router/java/src/net/i2p/router/transport/UPnP.java

    r6f05328 r7782970  
    455455        public String renderStatusHTML() {
    456456                final StringBuilder sb = new StringBuilder();
    457                 sb.append("<a name=\"upnp\"></a><b>UPnP Status:</b><br />");
     457                sb.append("<a name=\"upnp\"></a><b>UPnP Status:</b><br>");
    458458               
    459459                if(isDisabled) {
  • router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java

    r6f05328 r7782970  
    721721
    722722        if (peers.size() > 0) {
    723 //            buf.append("<tr> <td colspan=\"11\"><hr /></td></tr>\n");
     723//            buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n");
    724724            buf.append("<tr class=\"tablefooter\"> <td align=\"center\"><b>").append(peers.size()).append(" peers</b></td> <td>&nbsp;</td> <td>&nbsp;");
    725725            buf.append("</td> <td align=\"center\"><b>").append(formatRate(bpsRecv/1024)).append("/").append(formatRate(bpsSend/1024)).append("K/s</b>");
  • router/java/src/net/i2p/router/transport/udp/UDPTransport.java

    r6f05328 r7782970  
    17691769       
    17701770        StringBuilder buf = new StringBuilder(512);
    1771         buf.append("<p><b id=\"udpcon\"><h3>UDP connections: ").append(peers.size());
     1771        buf.append("<h3 id=\"udpcon\">UDP connections: ").append(peers.size());
    17721772        buf.append(". Limit: ").append(getMaxConnections());
    17731773        buf.append(". Timeout: ").append(DataHelper.formatDuration(_expireTimeout));
    1774         buf.append(".</b></h3>\n");
     1774        buf.append(".</h3>\n");
    17751775        buf.append("<div class=\"wideload\"><table>\n");
    17761776        buf.append("<tr><th class=\"smallhead\" nowrap><a href=\"#def.peer\">Peer</a>");
     
    18441844            boolean appended = false;
    18451845            if (_activeThrottle.isChoked(peer.getRemotePeer())) {
    1846                 if (!appended) buf.append("<br />");
     1846                if (!appended) buf.append("<br>");
    18471847                buf.append(" <i>Choked</i>");
    18481848                appended = true;
    18491849            }
    18501850            if (peer.getConsecutiveFailedSends() > 0) {
    1851                 if (!appended) buf.append("<br />");
     1851                if (!appended) buf.append("<br>");
    18521852                buf.append(" <i>").append(peer.getConsecutiveFailedSends()).append(" fail(s)</i>");
    18531853                appended = true;
    18541854            }
    18551855            if (_context.shitlist().isShitlisted(peer.getRemotePeer(), STYLE)) {
    1856                 if (!appended) buf.append("<br />");
    1857                 buf.append(" <i>Shitlist</i>");
     1856                if (!appended) buf.append("<br>");
     1857                buf.append(" <i>Banned</i>");
    18581858                appended = true;
    18591859            }
     
    19861986        }
    19871987       
    1988 //        buf.append("<tr><td colspan=\"16\"><hr /></td></tr>\n");
     1988//        buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n");
    19891989        buf.append(" <tr class=\"tablefooter\"> <td colspan=\"3\" align=\"right\"><b>Total</b></td>");
    19901990        buf.append("      <td align=\"center\" nowrap><b>");
     
    20012001        buf.append(numPeers > 0 ? rtoTotal/numPeers : 0);
    20022002        buf.append("</b></td>\n      <td>&nbsp;</td> <td align=\"center\"><b>");
    2003         buf.append(sendTotal).append("</td></b> <td align=\"center\"><b>").append(recvTotal).append("</b></td>\n");
     2003        buf.append(sendTotal).append("</b></td> <td align=\"center\"><b>").append(recvTotal).append("</b></td>\n");
    20042004        buf.append("      <td align=\"center\"><b>").append(resentTotal);
    20052005        buf.append("</b></td> <td align=\"center\"><b>").append(dupRecvTotal).append("</b></td>\n");
     
    20132013        double bwResent = (nondupSent <= 0 ? 0d : ((((double)resentTotal)*averagePacketSize) / nondupSent));
    20142014        buf.append("<h3>Percentage of bytes retransmitted (lifetime): ").append(formatPct(bwResent));
    2015         buf.append("</h3><i>(Includes retransmission required by packet loss)</i><br /></p>\n");
     2015        buf.append("</h3><i>(Includes retransmission required by packet loss)</i><br></p>\n");
    20162016        out.write(buf.toString());
    20172017        buf.setLength(0);
     
    20332033   
    20342034    private static final String KEY = "<h3>Definitions:</h3><div class=\"configure\">" +
    2035         "<br><b id=\"def.peer\">Peer</b>: the remote peer.<br />\n" +
    2036         "<b id=\"def.dir\">Dir</b>: v means they offer to introduce us, ^ means we offer to introduce them.<br />\n" +
    2037         "<b id=\"def.idle\">Idle</b>: the idle time is how long since a packet has been received or sent.<br />\n" +
    2038         "<b id=\"def.rate\">In/out</b>: the rates show a smoothed inbound and outbound transfer rate (KBytes per second).<br />\n" +
    2039         "<b id=\"def.up\">Up</b>: the uptime is how long ago this session was established.<br />\n" +
    2040         "<b id=\"def.skew\">Skew</b>: the skew says how far off the other user's clock is, relative to your own.<br />\n" +
    2041         "<b id=\"def.cwnd\">Cwnd</b>: the congestion window is how many bytes in 'in flight' you can send w/out an acknowledgement, / <br />\n" +
    2042         "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the number of currently active messages being sent, /<br />\n" +
    2043         "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the maximum number of concurrent messages to send, /<br />\n"+
    2044         "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the number of consecutive sends which were blocked due to throws message window size.<br />\n" +
    2045         "<b id=\"def.ssthresh\">Sst</b>: the slow start threshold helps make sure the cwnd doesn't grow too fast.<br />\n" +
    2046         "<b id=\"def.rtt\">Rtt</b>: the round trip time is how long it takes to get an acknowledgement of a packet.<br />\n" +
    2047         "<b id=\"def.dev\">Dev</b>: the standard deviation of the round trip time, to help control the retransmit timeout.<br />\n" +
    2048         "<b id=\"def.rto\">Rto</b>: the retransmit timeout controls how frequently an unacknowledged packet will be retransmitted.<br />\n" +
    2049         "<b id=\"def.mtu\">Mtu</b>: current sending packet size / estimated receiving packet size.<br />\n" +
    2050         "<b id=\"def.send\">TX</b>: the number of packets sent to the peer.<br />\n" +
    2051         "<b id=\"def.recv\">RX</b>: the number of packets received from the peer.<br />\n" +
    2052         "<b id=\"def.resent\">ReTX</b>: the number of packets retransmitted to the peer.<br />\n" +
     2035        "<br><b id=\"def.peer\">Peer</b>: the remote peer.<br>\n" +
     2036        "<b id=\"def.dir\">Dir</b>: v means they offer to introduce us, ^ means we offer to introduce them.<br>\n" +
     2037        "<b id=\"def.idle\">Idle</b>: the idle time is how long since a packet has been received or sent.<br>\n" +
     2038        "<b id=\"def.rate\">In/out</b>: the rates show a smoothed inbound and outbound transfer rate (KBytes per second).<br>\n" +
     2039        "<b id=\"def.up\">Up</b>: the uptime is how long ago this session was established.<br>\n" +
     2040        "<b id=\"def.skew\">Skew</b>: the skew says how far off the other user's clock is, relative to your own.<br>\n" +
     2041        "<b id=\"def.cwnd\">Cwnd</b>: the congestion window is how many bytes in 'in flight' you can send w/out an acknowledgement, / <br>\n" +
     2042        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the number of currently active messages being sent, /<br>\n" +
     2043        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the maximum number of concurrent messages to send, /<br>\n"+
     2044        "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the number of consecutive sends which were blocked due to throws message window size.<br>\n" +
     2045        "<b id=\"def.ssthresh\">Sst</b>: the slow start threshold helps make sure the cwnd doesn't grow too fast.<br>\n" +
     2046        "<b id=\"def.rtt\">Rtt</b>: the round trip time is how long it takes to get an acknowledgement of a packet.<br>\n" +
     2047        "<b id=\"def.dev\">Dev</b>: the standard deviation of the round trip time, to help control the retransmit timeout.<br>\n" +
     2048        "<b id=\"def.rto\">Rto</b>: the retransmit timeout controls how frequently an unacknowledged packet will be retransmitted.<br>\n" +
     2049        "<b id=\"def.mtu\">Mtu</b>: current sending packet size / estimated receiving packet size.<br>\n" +
     2050        "<b id=\"def.send\">TX</b>: the number of packets sent to the peer.<br>\n" +
     2051        "<b id=\"def.recv\">RX</b>: the number of packets received from the peer.<br>\n" +
     2052        "<b id=\"def.resent\">ReTX</b>: the number of packets retransmitted to the peer.<br>\n" +
    20532053        "<b id=\"def.dupRecv\">DupRX</b>: the number of duplicate packets received from the peer." +
    20542054        "</div>\n";
  • router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java

    r6f05328 r7782970  
    494494        }
    495495        out.write("</table>\n");
    496         out.write("<div class=\"statusnotes\"><center><b>Inactive participating tunnels: " + inactive + "</b></div>\n");
    497         out.write("<div class=\"statusnotes\"><b>Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B</b></center></div>\n");
     496        out.write("<div class=\"statusnotes\"><b>Inactive participating tunnels: " + inactive + "</b></div>\n");
     497        out.write("<div class=\"statusnotes\"><b>Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B</b></div>\n");
    498498        renderPeers(out);
    499499    }
     
    543543            live++;
    544544            if (info.isInbound())
    545                 out.write("<tr> <td class=\"cells\" align=\"center\"><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound\"/></td>");
    546             else
    547                 out.write("<tr> <td class=\"cells\" align=\"center\"><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"Outbound\"/></td>");
     545                out.write("<tr> <td class=\"cells\" align=\"center\"><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound\"></td>");
     546            else
     547                out.write("<tr> <td class=\"cells\" align=\"center\"><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"Outbound\"></td>");
    548548            out.write(" <td class=\"cells\" align=\"center\">" + DataHelper.formatDuration(timeLeft) + "</td>\n");
    549549            out.write(" <td class=\"cells\" align=\"center\">" + info.getProcessedMessagesCount() + "KB</td>\n");
     
    559559                if (info.getLength() < maxLength && (info.getLength() == 1 || j == info.getLength() - 2)) {
    560560                    for (int k = info.getLength(); k < maxLength; k++)
    561                         out.write(" <td class=\"cells\" align=\"center\">&nbsp</td>");
     561                        out.write(" <td class=\"cells\" align=\"center\">&nbsp;</td>");
    562562                }
    563563            }
Note: See TracChangeset for help on using the changeset viewer.