forked from I2P_Developers/i2p.i2p
propagate from branch 'i2p.i2p.zzz.test3' (head d65e8465671ba0b8f6f013b56045bf867e10a78e)
to branch 'i2p.i2p' (head e2ee75916f2ff6bd698585808a81071b44c978b1)
This commit is contained in:
@ -1,4 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
|
||||
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
|
||||
<file>file:/usblv/NetBeansProjects/wi2p.i2p/apps/BOB/src/net/i2p/BOB/BOB.java</file>
|
||||
</open-files>
|
||||
</project-private>
|
||||
|
@ -85,8 +85,8 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
out.write("<meta http-equiv=\"refresh\" content=\"60;" + req.getRequestURI() + peerString + "\">\n");
|
||||
out.write(HEADER);
|
||||
out.write("</head><body>");
|
||||
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>");
|
||||
out.write("<div class=\"snarknavbar\"><a href=\"http://forum.i2p/viewforum.php?f=21\" class=\"snarkRefresh\" target=\"_blank\">Forum</a>\n");
|
||||
out.write("<center><div class=\"page\">");
|
||||
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");
|
||||
Map trackers = _manager.getTrackers();
|
||||
for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) {
|
||||
Map.Entry entry = (Map.Entry)iter.next();
|
||||
@ -112,18 +112,18 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
out.write(TABLE_HEADER);
|
||||
if (_manager.util().connected() && snarks.size() > 0) {
|
||||
if (peerParam != null)
|
||||
out.write("(<a href=\"" + req.getRequestURI() + "\">Hide Peers</a>)<br />\n");
|
||||
out.write("(<a href=\"" + req.getRequestURI() + "\">Hide Peers</a>)<br>\n");
|
||||
else
|
||||
out.write("(<a href=\"" + req.getRequestURI() + "?p=1" + "\">Show Peers</a>)<br />\n");
|
||||
out.write("(<a href=\"" + req.getRequestURI() + "?p=1" + "\">Show Peers</a>)<br>\n");
|
||||
}
|
||||
out.write(TABLE_HEADER2);
|
||||
out.write("<th align=\"left\">");
|
||||
out.write("<th align=\"center\">");
|
||||
if (_manager.util().connected())
|
||||
out.write("<a href=\"" + uri + "?action=StopAll&nonce=" + _nonce +
|
||||
"\" title=\"Stop all torrents and the i2p tunnel\">Stop All</a>");
|
||||
"\" title=\"Stop all torrents and the I2P tunnel\">Stop All</a>");
|
||||
else if (snarks.size() > 0)
|
||||
out.write("<a href=\"" + uri + "?action=StartAll&nonce=" + _nonce +
|
||||
"\" title=\"Start all torrents and the i2p tunnel\">Start All</a>");
|
||||
"\" title=\"Start all torrents and the I2P tunnel\">Start All</a>");
|
||||
else
|
||||
out.write(" ");
|
||||
out.write("</th></tr></thead>\n");
|
||||
@ -460,7 +460,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
else {
|
||||
if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
|
||||
err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "…";
|
||||
statusString = "TrackerErr<br />(" + err + ")";
|
||||
statusString = "TrackerErr<br>(" + err + ")";
|
||||
}
|
||||
} else if (remaining <= 0) {
|
||||
if (isRunning && curPeers > 0 && !showPeers)
|
||||
@ -492,7 +492,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
|
||||
String rowClass = (row % 2 == 0 ? "snarkTorrentEven" : "snarkTorrentOdd");
|
||||
out.write("<tr class=\"" + rowClass + "\">");
|
||||
out.write("<td align=\"left\" class=\"snarkTorrentStatus " + rowClass + "\">");
|
||||
out.write("<td align=\"center\" class=\"snarkTorrentStatus " + rowClass + "\">");
|
||||
out.write(statusString + "</td>\n\t");
|
||||
out.write("<td align=\"left\" class=\"snarkTorrentName " + rowClass + "\">");
|
||||
|
||||
@ -526,7 +526,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
}
|
||||
out.write("</td>\n\t");
|
||||
|
||||
out.write("<td align=\"right\" class=\"snarkTorrentETA " + rowClass + "\">");
|
||||
out.write("<td align=\"center\" class=\"snarkTorrentETA " + rowClass + "\">");
|
||||
if(isRunning && remainingSeconds > 0)
|
||||
out.write(DataHelper.formatDuration(remainingSeconds*1000)); // (eta 6h)
|
||||
out.write("</td>\n\t");
|
||||
@ -546,7 +546,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
if(isRunning)
|
||||
out.write(formatSize(upBps) + "ps");
|
||||
out.write("</td>\n\t");
|
||||
out.write("<td align=\"left\" class=\"snarkTorrentAction " + rowClass + "\">");
|
||||
out.write("<td align=\"center\" class=\"snarkTorrentAction " + rowClass + "\">");
|
||||
String parameters = "&nonce=" + _nonce + "&torrent=" + Base64.encode(snark.meta.getInfoHash());
|
||||
if (showPeers)
|
||||
parameters = parameters + "&p=1";
|
||||
@ -558,7 +558,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
out.write("<a href=\"" + uri + "?action=Start" + parameters
|
||||
+ "\" title=\"Start the torrent\">Start</a> ");
|
||||
out.write("<a href=\"" + uri + "?action=Remove" + parameters
|
||||
+ "\" title=\"Remove the torrent from the active list, deleting the .torrent file\">Remove</a><br />");
|
||||
+ "\" title=\"Remove the torrent from the active list, deleting the .torrent file\">Remove</a><br>");
|
||||
out.write("<a href=\"" + uri + "?action=Delete" + parameters
|
||||
+ "\" title=\"Delete the .torrent file and the associated data file(s)\">Delete</a> ");
|
||||
}
|
||||
@ -571,9 +571,9 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
if (!peer.isConnected())
|
||||
continue;
|
||||
out.write("<tr class=\"" + rowClass + "\">");
|
||||
out.write("<td class=\"snarkTorrentStatus " + rowClass + "\">");
|
||||
out.write("<td align=\"center\" class=\"snarkTorrentStatus " + rowClass + "\">");
|
||||
out.write("</td>\n\t");
|
||||
out.write("<td align=\"right\" class=\"snarkTorrentStatus " + rowClass + "\">");
|
||||
out.write("<td align=\"center\" class=\"snarkTorrentStatus " + rowClass + "\">");
|
||||
String ch = peer.toString().substring(0, 4);
|
||||
String client;
|
||||
if ("AwMD".equals(ch))
|
||||
@ -592,7 +592,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
client = "Robert";
|
||||
else
|
||||
client = "Unknown (" + ch + ')';
|
||||
out.write("<font size=-1>" + client + "</font> <tt>" + peer.toString().substring(5, 9) + "</tt>");
|
||||
out.write("<font size=-1>" + client + "</font> " + peer.toString().substring(5, 9) + "");
|
||||
if (showDebug)
|
||||
out.write(" inactive " + (peer.getInactiveTime() / 1000) + "s");
|
||||
out.write("</td>\n\t");
|
||||
@ -660,13 +660,13 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
// *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file
|
||||
out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
|
||||
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
|
||||
out.write("<div class=\"addtorrentsection\"><span class=\"snarkConfigTitle\">Add Torrent:</span><br />\n");
|
||||
out.write("<div class=\"addtorrentsection\"><span class=\"snarkConfigTitle\">Add Torrent:</span><br>\n");
|
||||
out.write("From URL : <input type=\"text\" name=\"newURL\" size=\"80\" value=\"" + newURL + "\" /> \n");
|
||||
// not supporting from file at the moment, since the file name passed isn't always absolute (so it may not resolve)
|
||||
//out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br />\n");
|
||||
out.write("<input type=\"submit\" value=\"Add torrent\" name=\"action\" /><br />\n");
|
||||
out.write("<span class=\"snarkAddInfo\">Alternately, you can copy .torrent files to " + _manager.getDataDir().getAbsolutePath() + "<br />\n");
|
||||
out.write("Removing that .torrent file will cause the torrent to stop.<br /></span>\n");
|
||||
//out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
|
||||
out.write("<input type=\"submit\" value=\"Add torrent\" name=\"action\" /><br>\n");
|
||||
out.write("<span class=\"snarkAddInfo\">Alternately, you can copy .torrent files to " + _manager.getDataDir().getAbsolutePath() + "<br>\n");
|
||||
out.write("Removing that .torrent file will cause the torrent to stop.<br></span>\n");
|
||||
out.write("</form>\n</span></div>");
|
||||
}
|
||||
|
||||
@ -680,11 +680,11 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
// *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file
|
||||
out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
|
||||
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
|
||||
out.write("<span class=\"snarkConfigTitle\">Create Torrent:</span><br />\n");
|
||||
//out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br />\n");
|
||||
out.write("<span class=\"snarkConfigTitle\">Create Torrent:</span><br>\n");
|
||||
//out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
|
||||
out.write("Data to seed: " + _manager.getDataDir().getAbsolutePath() + File.separatorChar
|
||||
+ "<input type=\"text\" name=\"baseFile\" size=\"20\" value=\"" + baseFile
|
||||
+ "\" title=\"File to seed (must be within the specified path)\" /><br />\n");
|
||||
+ "\" title=\"File to seed (must be within the specified path)\" /><br>\n");
|
||||
out.write("Tracker: <select name=\"announceURL\"><option value=\"\">Select a tracker</option>\n");
|
||||
Map trackers = _manager.getTrackers();
|
||||
for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) {
|
||||
@ -714,15 +714,15 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
|
||||
out.write("<div class=\"configsection\"><span class=\"snarkConfig\">\n");
|
||||
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
|
||||
out.write("<span class=\"snarkConfigTitle\">Configuration:</span><br />\n");
|
||||
out.write("<span class=\"snarkConfigTitle\">Configuration:</span><br>\n");
|
||||
out.write("Data directory: <input type=\"text\" size=\"40\" name=\"dataDir\" value=\"" + dataDir + "\" ");
|
||||
out.write("title=\"Directory to store torrents and data\" disabled=\"true\" /> <i>(Edit i2psnark.config and restart to change)</i><br />\n");
|
||||
out.write("title=\"Directory to store torrents and data\" disabled=\"true\" /> <i>(Edit i2psnark.config and restart to change)</i><br>\n");
|
||||
out.write("Auto start: <input type=\"checkbox\" class=\"optbox\" name=\"autoStart\" value=\"true\" "
|
||||
+ (autoStart ? "checked " : "")
|
||||
+ "title=\"If true, automatically start torrents that are added\" />");
|
||||
//Auto add: <input type="checkbox" name="autoAdd" value="true" title="If true, automatically add torrents that are found in the data directory" />
|
||||
//Auto stop: <input type="checkbox" name="autoStop" value="true" title="If true, automatically stop torrents that are removed from the data directory" />
|
||||
//out.write("<br />\n");
|
||||
//out.write("<br>\n");
|
||||
/*
|
||||
out.write("Seed percentage: <select name=\"seedPct\" disabled=\"true\" >\n\t");
|
||||
if (seedPct <= 0)
|
||||
@ -737,28 +737,28 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
out.write("<option value=\"150\" selected=\"true\">150%</option>\n\t");
|
||||
else
|
||||
out.write("<option value=\"150\">150%</option>\n\t");
|
||||
out.write("</select><br />\n");
|
||||
out.write("</select><br>\n");
|
||||
*/
|
||||
out.write("Total uploader limit: <input type=\"text\" name=\"upLimit\" value=\""
|
||||
+ _manager.util().getMaxUploaders() + "\" size=\"3\" maxlength=\"3\" /> peers<br />\n");
|
||||
+ _manager.util().getMaxUploaders() + "\" size=\"3\" maxlength=\"3\" /> peers<br>\n");
|
||||
out.write("Up bandwidth limit: <input type=\"text\" name=\"upBW\" value=\""
|
||||
+ _manager.util().getMaxUpBW() + "\" size=\"3\" maxlength=\"3\" /> KBps <i>(Half <a href=\"/config.jsp\" target=\"blank\">available bandwidth</a> recommended.)</i><br />\n");
|
||||
+ _manager.util().getMaxUpBW() + "\" size=\"3\" maxlength=\"3\" /> KBps <i>(Half <a href=\"/config.jsp\" target=\"blank\">available bandwidth</a> recommended.)</i><br>\n");
|
||||
|
||||
out.write("Use open trackers also: <input type=\"checkbox\" class=\"optbox\" name=\"useOpenTrackers\" value=\"true\" "
|
||||
+ (useOpenTrackers ? "checked " : "")
|
||||
+ "title=\"If true, uses open trackers in addition\" /> ");
|
||||
out.write("Announce URLs: <input type=\"text\" name=\"openTrackers\" value=\""
|
||||
+ openTrackers + "\" size=\"50\" /><br />\n");
|
||||
+ openTrackers + "\" size=\"50\" /><br>\n");
|
||||
|
||||
//out.write("\n");
|
||||
out.write("EepProxy host: <input type=\"text\" name=\"eepHost\" value=\""
|
||||
+ _manager.util().getEepProxyHost() + "\" size=\"15\" /> ");
|
||||
out.write("port: <input type=\"text\" name=\"eepPort\" value=\""
|
||||
+ _manager.util().getEepProxyPort() + "\" size=\"5\" maxlength=\"5\" /><br />\n");
|
||||
+ _manager.util().getEepProxyPort() + "\" size=\"5\" maxlength=\"5\" /><br>\n");
|
||||
out.write("I2CP host: <input type=\"text\" name=\"i2cpHost\" value=\""
|
||||
+ _manager.util().getI2CPHost() + "\" size=\"15\" /> ");
|
||||
out.write("port: <input type=\"text\" name=\"i2cpPort\" value=\"" +
|
||||
+ _manager.util().getI2CPPort() + "\" size=\"5\" maxlength=\"5\" /> <br />\n");
|
||||
+ _manager.util().getI2CPPort() + "\" size=\"5\" maxlength=\"5\" /> <br>\n");
|
||||
StringBuilder opts = new StringBuilder(64);
|
||||
Map options = new TreeMap(_manager.util().getI2CPOptions());
|
||||
for (Iterator iter = options.entrySet().iterator(); iter.hasNext(); ) {
|
||||
@ -768,7 +768,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
opts.append(key).append('=').append(val).append(' ');
|
||||
}
|
||||
out.write("I2CP opts: <input type=\"text\" name=\"i2cpOpts\" size=\"80\" value=\""
|
||||
+ opts.toString() + "\" /><br />\n");
|
||||
+ opts.toString() + "\" /><br>\n");
|
||||
out.write("<input type=\"submit\" value=\"Save configuration\" name=\"action\" />\n");
|
||||
out.write("</span>\n");
|
||||
out.write("</form></div>");
|
||||
@ -795,11 +795,11 @@ public class I2PSnarkServlet extends HttpServlet {
|
||||
|
||||
private static final String TABLE_HEADER = "<table border=\"0\" class=\"snarkTorrents\" width=\"100%\" cellpadding=\"0 10px\">\n" +
|
||||
"<thead>\n" +
|
||||
"<tr><th align=\"left\">Status \n";
|
||||
"<tr><th align=\"center\">Status \n";
|
||||
|
||||
private static final String TABLE_HEADER2 = "</th>\n" +
|
||||
" <th align=\"left\">Torrent</th>\n" +
|
||||
" <th align=\"right\">ETA</th>\n" +
|
||||
" <th align=\"center\">ETA</th>\n" +
|
||||
" <th align=\"right\">Downloaded</th>\n" +
|
||||
" <th align=\"right\">Uploaded</th>\n" +
|
||||
" <th align=\"right\">Down Rate</th>\n" +
|
||||
|
@ -345,7 +345,7 @@ public class I2PTunnelConnectClient extends I2PTunnelClientBase implements Runna
|
||||
if (targetRequest != null) {
|
||||
out.write(targetRequest.getBytes());
|
||||
if (usingWWWProxy)
|
||||
out.write(("<br>WWW proxy: " + wwwProxy).getBytes());
|
||||
out.write(("<br />WWW proxy: " + wwwProxy).getBytes());
|
||||
}
|
||||
out.write("</div>".getBytes());
|
||||
out.write("\n</body></html>\n".getBytes());
|
||||
|
@ -388,7 +388,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
|
||||
String conflictURL = protocol + alias + ".i2p/?" + initialFragments;
|
||||
out.write(header);
|
||||
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());
|
||||
out.write("</div><div class=\"proxyfooter\"><p><i>I2P HTTP Proxy Server<br>Generated on: ".getBytes());
|
||||
out.write("</div><div class=\"proxyfooter\"><p><i>I2P HTTP Proxy Server<br />Generated on: ".getBytes());
|
||||
out.write(new Date().toString().getBytes());
|
||||
out.write("</i></div></body></html>\n".getBytes());
|
||||
out.flush();
|
||||
@ -705,9 +705,9 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
|
||||
out.write("\">http://".getBytes());
|
||||
out.write(uri.getBytes());
|
||||
out.write("</a>".getBytes());
|
||||
if (usingWWWProxy) out.write(("<br>WWW proxy: " + wwwProxy).getBytes());
|
||||
if (usingWWWProxy) out.write(("<br />WWW proxy: " + wwwProxy).getBytes());
|
||||
if (showAddrHelper) {
|
||||
out.write("<br><br>Click a link below to look for an address helper by using a \"jump\" service:<br>".getBytes());
|
||||
out.write("<br /><br />Click a link below to look for an address helper by using a \"jump\" service:<br />".getBytes());
|
||||
for (int i = 0; i < jumpServers.length; i++) {
|
||||
// Skip jump servers we don't know
|
||||
String jumphost = jumpServers[i].substring(7); // "http://"
|
||||
@ -719,7 +719,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
|
||||
continue;
|
||||
}
|
||||
|
||||
out.write("<br><a href=\"".getBytes());
|
||||
out.write("<br /><a href=\"".getBytes());
|
||||
out.write(jumpServers[i].getBytes());
|
||||
out.write(uri.getBytes());
|
||||
out.write("\">".getBytes());
|
||||
@ -729,7 +729,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
|
||||
}
|
||||
}
|
||||
}
|
||||
out.write("</div><div class=\"proxyfooter\"><p><i>I2P HTTP Proxy Server<br>Generated on: ".getBytes());
|
||||
out.write("</div><div class=\"proxyfooter\"><p><i>I2P HTTP Proxy Server<br />Generated on: ".getBytes());
|
||||
out.write(new Date().toString().getBytes());
|
||||
out.write("</i></div></body></html>\n".getBytes());
|
||||
out.flush();
|
||||
|
@ -192,7 +192,7 @@
|
||||
|
||||
<div id="tunnelAdvancedNetworking" class="panel">
|
||||
<div class="header">
|
||||
<h4>Advanced networking options</h4>
|
||||
<h4>Advanced networking options</h4><br />
|
||||
<span class="comment">(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)</span>
|
||||
</div>
|
||||
|
||||
@ -335,10 +335,10 @@
|
||||
<table border="0"><tr><!-- I give up -->
|
||||
<td><input value="1" type="radio" id="startOnLoad" name="newDest" title="New Destination"
|
||||
<%=(editBean.getNewDest(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />
|
||||
<td valign="center">Enable
|
||||
<td>Enable
|
||||
<td><input value="0" type="radio" id="startOnLoad" name="newDest" title="New Destination"
|
||||
<%=(editBean.getNewDest(curTunnel) || editBean.getPersistentClientKey(curTunnel) ? "" : " checked=\"checked\"")%> class="tickbox" />
|
||||
<td valign="center">Disable
|
||||
<td>Disable
|
||||
</table>
|
||||
</div>
|
||||
<div id="portField" class="rowItem">
|
||||
@ -411,7 +411,8 @@
|
||||
<div class="header"></div>
|
||||
<div class="footer">
|
||||
<div class="toolbox">
|
||||
<span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted</span>
|
||||
<span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted.</span>
|
||||
<div class="separator"><hr /></div>
|
||||
<input type="hidden" value="true" name="removeConfirm" />
|
||||
<button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><span class="accessKey">S</span>ave</button>
|
||||
<button id="controlDelete" <%=(editBean.allowJS() ? "onclick=\"if (!confirm('Are you sure you want to delete?')) { return false; }\" " : "")%>accesskey="D" class="control" type="submit" name="action" value="Delete this proxy" title="Delete this Proxy"><span class="accessKey">D</span>elete</button>
|
||||
|
@ -399,7 +399,8 @@
|
||||
<div class="header"></div>
|
||||
<div class="footer">
|
||||
<div class="toolbox">
|
||||
<span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted</span>
|
||||
<span class="comment">NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted.</span>
|
||||
<div class="separator"><hr /></div>
|
||||
<input type="hidden" value="true" name="removeConfirm" />
|
||||
<button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><span class="accessKey">S</span>ave</button>
|
||||
<button id="controlDelete" <%=(editBean.allowJS() ? "onclick=\"if (!confirm('Are you sure you want to delete?')) { return false; }\" " : "")%>accesskey="D" class="control" type="submit" name="action" value="Delete this proxy" title="Delete this Proxy"><span class="accessKey">D</span>elete</button>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<jsp:setProperty name="indexBean" property="*" />
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>I2PTunnel Webmanager - List</title>
|
||||
<title>I2P Tunnel Manager - List</title>
|
||||
|
||||
<meta htt
|
||||
p-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
@ -106,7 +106,7 @@ p-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<a class="control" title="Test HTTP server through I2P" href="http://<%=indexBean.getDestHashBase32(curServer)%>.b32.i2p">Preview</a>
|
||||
<%
|
||||
} else if (indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
|
||||
%><span class="text">Base32 Address:<br><%=indexBean.getDestHashBase32(curServer)%>.b32.i2p</span>
|
||||
%><span class="text">Base32 Address:<br /><%=indexBean.getDestHashBase32(curServer)%>.b32.i2p</span>
|
||||
<%
|
||||
} else {
|
||||
%><span class="comment">No Preview</span>
|
||||
|
@ -117,7 +117,7 @@ public class StreamSinkClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire up the client. <code>Usage: StreamSinkClient [i2cpHost i2cpPort] sendSizeKB writeDelayMs serverDestFile [concurrentSends]</code> <br />
|
||||
* Fire up the client. <code>Usage: StreamSinkClient [i2cpHost i2cpPort] sendSizeKB writeDelayMs serverDestFile [concurrentSends]</code> <br>
|
||||
* <ul>
|
||||
* <li><b>sendSizeKB</b>: how many KB to send, or -1 for unlimited</li>
|
||||
* <li><b>writeDelayMs</b>: how long to wait between each .write (0 for no delay)</li>
|
||||
|
@ -104,7 +104,7 @@ public class StreamSinkSend {
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire up the client. <code>Usage: StreamSinkClient sendFile writeDelayMs serverDestFile</code> <br />
|
||||
* Fire up the client. <code>Usage: StreamSinkClient sendFile writeDelayMs serverDestFile</code> <br>
|
||||
* <ul>
|
||||
* <li><b>sendFile</b>: filename to send</li>
|
||||
* <li><b>writeDelayMs</b>: how long to wait between each .write (0 for no delay)</li>
|
||||
|
@ -155,7 +155,7 @@ public class StreamSinkServer {
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire up the streaming server. <code>Usage: StreamSinkServer [i2cpHost i2cpPort] sinkDir ourDestFile [numHandlers]</code><br />
|
||||
* Fire up the streaming server. <code>Usage: StreamSinkServer [i2cpHost i2cpPort] sinkDir ourDestFile [numHandlers]</code><br>
|
||||
* <ul>
|
||||
* <li><b>sinkDir</b>: Directory to store received files in</li>
|
||||
* <li><b>ourDestFile</b>: filename to write our binary destination to</li>
|
||||
|
@ -17,6 +17,7 @@ public class ConfigAdvancedHandler extends FormHandler {
|
||||
private boolean _shouldSave;
|
||||
private String _config;
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_shouldSave) {
|
||||
saveChanges();
|
||||
|
@ -4,7 +4,6 @@ import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class ConfigAdvancedHelper extends HelperBase {
|
||||
public ConfigAdvancedHelper() {}
|
||||
|
@ -20,13 +20,14 @@ import org.mortbay.jetty.Server;
|
||||
* Saves changes to clients.config or webapps.config
|
||||
*/
|
||||
public class ConfigClientsHandler extends FormHandler {
|
||||
private Log _log;
|
||||
private Log configClient_log;
|
||||
private Map _settings;
|
||||
|
||||
public ConfigClientsHandler() {
|
||||
_log = ContextHelper.getContext(null).logManager().getLog(ConfigClientsHandler.class);
|
||||
configClient_log = ContextHelper.getContext(null).logManager().getLog(ConfigClientsHandler.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_action.startsWith("Save Client")) {
|
||||
saveClientChanges();
|
||||
@ -80,7 +81,7 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
return;
|
||||
}
|
||||
ClientAppConfig ca = (ClientAppConfig) clients.get(i);
|
||||
LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), _log);
|
||||
LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), configClient_log);
|
||||
addFormNotice("Client " + ca.clientName + " started.");
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,6 @@ import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.router.startup.ClientAppConfig;
|
||||
|
||||
public class ConfigClientsHelper extends HelperBase {
|
||||
|
@ -0,0 +1,61 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
/**
|
||||
* Handler to deal with console config.
|
||||
*
|
||||
*/
|
||||
public class ConfigConsoleHandler extends FormHandler {
|
||||
|
||||
private boolean _forceRestart;
|
||||
private boolean _shouldSave;
|
||||
private String _configPass;
|
||||
// This is possibly the wrong place for this...
|
||||
// private String _configPort;
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if(_shouldSave) {
|
||||
saveChanges();
|
||||
} else {
|
||||
// noop
|
||||
}
|
||||
}
|
||||
|
||||
public void setShouldsave(String moo) {
|
||||
_shouldSave = true;
|
||||
}
|
||||
|
||||
public void setRestart(String moo) {
|
||||
_forceRestart = true;
|
||||
}
|
||||
|
||||
public void setConfigPass(String val) {
|
||||
_configPass = val.trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* The user made changes to the config and wants to save them, so
|
||||
* lets go ahead and do so.
|
||||
*
|
||||
*/
|
||||
private void saveChanges() {
|
||||
if(_configPass != null) {
|
||||
_context.router().setConfigSetting("consolePassword", _configPass);
|
||||
} else {
|
||||
_context.router().setConfigSetting("consolePassword", "");
|
||||
}
|
||||
|
||||
boolean saved = _context.router().saveConfig();
|
||||
if(saved) {
|
||||
addFormNotice("Configuration saved successfully");
|
||||
} else {
|
||||
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs");
|
||||
}
|
||||
|
||||
if(_forceRestart) {
|
||||
addFormNotice("Performing a soft restart");
|
||||
_context.router().restart();
|
||||
addFormNotice("Soft restart complete");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
|
||||
public class ConfigConsoleHelper extends HelperBase {
|
||||
private String consolePassword="consolePassword";
|
||||
|
||||
public ConfigConsoleHelper() {}
|
||||
|
||||
public String getSettings() {
|
||||
StringBuilder buf = new StringBuilder(4*1024);
|
||||
buf.append(consolePassword);
|
||||
return buf.toString();
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.data.DataFormatException;
|
||||
import net.i2p.data.Hash;
|
||||
import net.i2p.data.SessionKey;
|
||||
@ -13,6 +12,7 @@ public class ConfigKeyringHandler extends FormHandler {
|
||||
private String _peer;
|
||||
private String _key;
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if ("Add key".equals(_action)) {
|
||||
if (_peer == null || _key == null) {
|
||||
|
@ -4,7 +4,6 @@ import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class ConfigKeyringHelper extends HelperBase {
|
||||
public ConfigKeyringHelper() {}
|
||||
|
@ -18,6 +18,7 @@ public class ConfigLoggingHandler extends FormHandler {
|
||||
private String _dateFormat;
|
||||
private String _fileSize;
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_shouldSave) {
|
||||
saveChanges();
|
||||
|
@ -4,7 +4,6 @@ import java.util.Iterator;
|
||||
import java.util.Properties;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class ConfigLoggingHelper extends HelperBase {
|
||||
public ConfigLoggingHelper() {}
|
||||
@ -43,7 +42,7 @@ public class ConfigLoggingHelper extends HelperBase {
|
||||
String level = limits.getProperty(prefix);
|
||||
buf.append(prefix).append('=').append(level).append('\n');
|
||||
}
|
||||
buf.append("</textarea><br />\n");
|
||||
buf.append("</textarea><br>\n");
|
||||
buf.append("<i>Add additional logging statements above. Example: net.i2p.router.tunnel=WARN</i><br>");
|
||||
buf.append("<i>Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN</i><br>");
|
||||
buf.append("<i>Valid levels are DEBUG, INFO, WARN, ERROR, CRIT</i>\n");
|
||||
|
@ -1,12 +1,10 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import net.i2p.data.RouterInfo;
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.transport.FIFOBandwidthRefiller;
|
||||
import net.i2p.router.transport.TransportManager;
|
||||
import net.i2p.router.transport.udp.UDPTransport;
|
||||
import net.i2p.router.web.ConfigServiceHandler.UpdateWrapperManagerAndRekeyTask;
|
||||
import net.i2p.time.Timestamper;
|
||||
|
||||
/**
|
||||
* Handler to deal with form submissions from the main config form and act
|
||||
@ -44,6 +42,7 @@ public class ConfigNetHandler extends FormHandler {
|
||||
private static final boolean _ratesOnly = false; // always false - delete me
|
||||
private static final String PROP_HIDDEN = Router.PROP_HIDDEN_HIDDEN; // see Router for other choice
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_saveRequested || ( (_action != null) && ("Save changes".equals(_action)) )) {
|
||||
saveChanges();
|
||||
|
@ -4,7 +4,6 @@ import net.i2p.data.DataHelper;
|
||||
import net.i2p.data.RouterAddress;
|
||||
import net.i2p.router.CommSystemFacade;
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.router.transport.Addresses;
|
||||
import net.i2p.router.transport.TransportManager;
|
||||
import net.i2p.router.transport.udp.UDPAddress;
|
||||
|
@ -1,12 +1,8 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.data.Hash;
|
||||
import net.i2p.data.Base64;
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.peermanager.PeerProfile;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -16,6 +12,7 @@ public class ConfigPeerHandler extends FormHandler {
|
||||
private String _speed;
|
||||
private String _capacity;
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if ("Save Configuration".equals(_action)) {
|
||||
_context.router().saveConfig();
|
||||
|
@ -4,7 +4,6 @@ import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class ConfigPeerHelper extends HelperBase {
|
||||
public ConfigPeerHelper() {}
|
||||
|
@ -49,16 +49,16 @@ public class ConfigRestartBean {
|
||||
long timeRemaining = ctx.router().getShutdownTimeRemaining();
|
||||
if (shuttingDown) {
|
||||
if (timeRemaining <= 0) {
|
||||
return "<b>Shutdown imminent</b>";
|
||||
return "<center><b>Shutdown imminent</b></center>";
|
||||
} else {
|
||||
return "<b>Shutdown in " + DataHelper.formatDuration(timeRemaining) + "</b><br />"
|
||||
return "<center><b>Shutdown in " + DataHelper.formatDuration(timeRemaining) + "</b></center><br>"
|
||||
+ buttons(urlBase, systemNonce, "shutdownImmediate,Shutdown immediately,cancelShutdown,Cancel shutdown");
|
||||
}
|
||||
} else if (restarting) {
|
||||
if (timeRemaining <= 0) {
|
||||
return "<b>Restart imminent</b>";
|
||||
return "<center><b>Restart imminent</b></center>";
|
||||
} else {
|
||||
return "<b>Restart in " + DataHelper.formatDuration(timeRemaining) + "</b><br />"
|
||||
return "<center><b>Restart in " + DataHelper.formatDuration(timeRemaining) + "</b></center><br>"
|
||||
+ buttons(urlBase, systemNonce, "restartImmediate,Restart immediately,cancelShutdown,Cancel restart");
|
||||
}
|
||||
} else {
|
||||
|
@ -1,13 +1,10 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import net.i2p.apps.systray.SysTray;
|
||||
import net.i2p.apps.systray.UrlLauncher;
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.startup.ClientAppConfig;
|
||||
|
||||
@ -49,6 +46,7 @@ public class ConfigServiceHandler extends FormHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_action == null) return;
|
||||
|
||||
@ -95,9 +93,9 @@ public class ConfigServiceHandler extends FormHandler {
|
||||
SysTray tray = SysTray.getInstance();
|
||||
if (tray != null) {
|
||||
tray.show();
|
||||
addFormNotice("Systray enabled");
|
||||
addFormNotice("System tray icon enabled.");
|
||||
} else {
|
||||
addFormNotice("Systray not supported on this platform");
|
||||
addFormNotice("System tray icon feature not supported on this platform. Sorry!");
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
addFormError("Warning: unable to contact the systray manager - " + t.getMessage());
|
||||
@ -107,9 +105,9 @@ public class ConfigServiceHandler extends FormHandler {
|
||||
SysTray tray = SysTray.getInstance();
|
||||
if (tray != null) {
|
||||
tray.hide();
|
||||
addFormNotice("Systray disabled");
|
||||
addFormNotice("System tray icon disabled.");
|
||||
} else {
|
||||
addFormNotice("Systray not supported on this platform");
|
||||
addFormNotice("System tray icon feature not supported on this platform. Sorry!");
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
addFormError("Warning: unable to contact the systray manager - " + t.getMessage());
|
||||
|
@ -28,6 +28,7 @@ public class ConfigStatsHandler extends FormHandler {
|
||||
_isFull = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
saveChanges();
|
||||
}
|
||||
|
@ -8,7 +8,6 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.stat.FrequencyStat;
|
||||
import net.i2p.stat.Rate;
|
||||
import net.i2p.stat.RateStat;
|
||||
|
@ -14,7 +14,7 @@ import net.i2p.util.Log;
|
||||
*
|
||||
*/
|
||||
public class ConfigTunnelsHandler extends FormHandler {
|
||||
private Log _log;
|
||||
private Log configTunnel_log;
|
||||
private Map _settings;
|
||||
private boolean _shouldSave;
|
||||
|
||||
@ -22,6 +22,7 @@ public class ConfigTunnelsHandler extends FormHandler {
|
||||
_shouldSave = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_shouldSave) {
|
||||
saveChanges();
|
||||
@ -43,11 +44,11 @@ public class ConfigTunnelsHandler extends FormHandler {
|
||||
*
|
||||
*/
|
||||
private void saveChanges() {
|
||||
_log = _context.logManager().getLog(ConfigTunnelsHandler.class);
|
||||
configTunnel_log = _context.logManager().getLog(ConfigTunnelsHandler.class);
|
||||
boolean saveRequired = false;
|
||||
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Saving changes, with props = " + _settings + ".");
|
||||
if (configTunnel_log.shouldLog(Log.DEBUG))
|
||||
configTunnel_log.debug("Saving changes, with props = " + _settings + ".");
|
||||
|
||||
int updated = 0;
|
||||
int index = 0;
|
||||
@ -110,16 +111,16 @@ public class ConfigTunnelsHandler extends FormHandler {
|
||||
}
|
||||
|
||||
if ("exploratory".equals(poolName)) {
|
||||
if (_log.shouldLog(Log.DEBUG)) {
|
||||
_log.debug("Inbound exploratory settings: " + in);
|
||||
_log.debug("Outbound exploratory settings: " + out);
|
||||
if (configTunnel_log.shouldLog(Log.DEBUG)) {
|
||||
configTunnel_log.debug("Inbound exploratory settings: " + in);
|
||||
configTunnel_log.debug("Outbound exploratory settings: " + out);
|
||||
}
|
||||
_context.tunnelManager().setInboundSettings(in);
|
||||
_context.tunnelManager().setOutboundSettings(out);
|
||||
} else {
|
||||
if (_log.shouldLog(Log.DEBUG)) {
|
||||
_log.debug("Inbound settings for " + client.toBase64() + ": " + in);
|
||||
_log.debug("Outbound settings for " + client.toBase64() + ": " + out);
|
||||
if (configTunnel_log.shouldLog(Log.DEBUG)) {
|
||||
configTunnel_log.debug("Inbound settings for " + client.toBase64() + ": " + in);
|
||||
configTunnel_log.debug("Outbound settings for " + client.toBase64() + ": " + out);
|
||||
}
|
||||
_context.tunnelManager().setInboundSettings(client, in);
|
||||
_context.tunnelManager().setOutboundSettings(client, out);
|
||||
|
@ -5,7 +5,6 @@ import java.util.Properties;
|
||||
import java.util.Set;
|
||||
|
||||
import net.i2p.data.Destination;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.router.TunnelPoolSettings;
|
||||
|
||||
public class ConfigTunnelsHelper extends HelperBase {
|
||||
@ -75,7 +74,7 @@ public class ConfigTunnelsHelper extends HelperBase {
|
||||
out.getQuantity() + out.getBackupQuantity() >= WARN_QUANTITY)
|
||||
buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities.</font></th></tr>");
|
||||
|
||||
buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"/> Inbound</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"/> Outbound</th></tr>\n");
|
||||
buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"> Inbound</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"> Outbound</th></tr>\n");
|
||||
|
||||
// buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
|
||||
|
||||
@ -177,7 +176,7 @@ buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt
|
||||
buf.append(prop).append("=").append(val).append(" ");
|
||||
}
|
||||
buf.append("\"/></td></tr>\n");
|
||||
// buf.append("<tr><td colspan=\"3\"><hr /></td></tr>\n");
|
||||
// buf.append("<tr><td colspan=\"3\"><br></td></tr>\n");
|
||||
}
|
||||
|
||||
private void renderOptions(StringBuilder buf, int min, int max, int now, String prefix, String name) {
|
||||
|
@ -5,6 +5,7 @@ public class ConfigUIHandler extends FormHandler {
|
||||
private boolean _shouldSave;
|
||||
private String _config;
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if (_shouldSave)
|
||||
saveChanges();
|
||||
|
@ -12,7 +12,7 @@ public class ConfigUIHelper extends HelperBase {
|
||||
buf.append("<input type=\"radio\" class=\"optbox\" name=\"theme\" ");
|
||||
if (theme.equals(current))
|
||||
buf.append("checked=\"true\" ");
|
||||
buf.append("value=\"").append(theme).append("\"/>").append(theme).append("<br />\n");
|
||||
buf.append("value=\"").append(theme).append("\"/>").append(theme).append("<br>\n");
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
public static final String PROP_TRUSTED_KEYS = "router.trustedUpdateKeys";
|
||||
|
||||
|
||||
@Override
|
||||
protected void processForm() {
|
||||
if ("Check for update now".equals(_action)) {
|
||||
NewsFetcher fetcher = NewsFetcher.getInstance(I2PAppContext.getGlobalContext());
|
||||
|
@ -3,7 +3,6 @@ package net.i2p.router.web;
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.crypto.TrustedUpdate;
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class ConfigUpdateHelper extends HelperBase {
|
||||
public ConfigUpdateHelper() {}
|
||||
|
@ -1,14 +1,12 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.stat.Rate;
|
||||
|
||||
public class GraphHelper extends HelperBase {
|
||||
@ -68,7 +66,7 @@ public class GraphHelper extends HelperBase {
|
||||
+ "&periodCount=" + _periodCount
|
||||
+ "&width=" + _width
|
||||
+ "&height=" + (_height - 14)
|
||||
+ "\" title=\"Combined bandwidth graph\" /></a>\n");
|
||||
+ "\" alt=\"Combined bandwidth graph\" title=\"Combined bandwidth graph\"></a>\n");
|
||||
}
|
||||
|
||||
for (Iterator iter = ordered.iterator(); iter.hasNext(); ) {
|
||||
@ -82,7 +80,7 @@ public class GraphHelper extends HelperBase {
|
||||
+ "&periodCount=" + (3 * _periodCount)
|
||||
+ "&width=" + (3 * _width)
|
||||
+ "&height=" + (3 * _height)
|
||||
+ "\" target=\"_blank\" />");
|
||||
+ "\" target=\"_blank\">");
|
||||
_out.write("<img class=\"statimage\" border=\"0\" width=\""
|
||||
+ (_width + 83) + "\" height=\"" + (_height + 92)
|
||||
+ "\" src=\"viewstat.jsp?stat="
|
||||
@ -92,11 +90,12 @@ public class GraphHelper extends HelperBase {
|
||||
+ "&periodCount=" + _periodCount
|
||||
+ "&width=" + _width
|
||||
+ "&height=" + _height
|
||||
+ "\" title=\"" + title + "\" /></a>\n");
|
||||
+ "\" alt=\"" + title
|
||||
+ "\" title=\"" + title + "\"></a>\n");
|
||||
}
|
||||
if (_refreshDelaySeconds > 0)
|
||||
// shorten the refresh by 3 seconds so we beat the iframe
|
||||
_out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\" />\n");
|
||||
_out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">\n");
|
||||
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
@ -105,17 +104,16 @@ public class GraphHelper extends HelperBase {
|
||||
}
|
||||
public String getForm() {
|
||||
try {
|
||||
_out.write("<hr /><h3>Configure Graph Display</h3>");
|
||||
_out.write("<p />[<a href=\"configstats.jsp\">Select Stats to Graph</a>]<p />");
|
||||
_out.write("<br><h3>Configure Graph Display [<a href=\"configstats.jsp\">Select Stats</a>]</h3>");
|
||||
_out.write("<form action=\"graphs.jsp\" method=\"GET\">");
|
||||
_out.write("Periods: <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\" /><br />\n");
|
||||
_out.write("Plot averages: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + " /> ");
|
||||
_out.write("or plot events: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + " /><br />\n");
|
||||
_out.write("Periods: <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
|
||||
_out.write("Plot averages: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + "> ");
|
||||
_out.write("or plot events: <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + "><br>\n");
|
||||
_out.write("Image sizes: width: <input size=\"4\" type=\"text\" name=\"width\" value=\"" + _width
|
||||
+ "\" /> pixels, height: <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height
|
||||
+ "\" /><br />\n");
|
||||
_out.write("Refresh delay: <select name=\"refreshDelay\"><option value=\"60\">1 minute</option><option value=\"120\">2 minutes</option><option value=\"300\">5 minutes</option><option value=\"600\">10 minutes</option><option value=\"1800\">30 minutes</option><option value=\"3600\">1 hour</option><option value=\"-1\">Never</option></select><br />\n");
|
||||
_out.write("<hr /><div class=\"formaction\"><input type=\"submit\" value=\"Redraw\" /></div></div>");
|
||||
+ "\"> pixels, height: <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height
|
||||
+ "\"><br>\n");
|
||||
_out.write("Refresh delay: <select name=\"refreshDelay\"><option value=\"60\">1 minute</option><option value=\"120\">2 minutes</option><option value=\"300\">5 minutes</option><option value=\"600\">10 minutes</option><option value=\"1800\">30 minutes</option><option value=\"3600\">1 hour</option><option value=\"-1\">Never</option></select><br>\n");
|
||||
_out.write("<hr><div class=\"formaction\"><input type=\"submit\" value=\"Redraw\"></div></form>");
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
}
|
||||
|
@ -3,9 +3,7 @@ package net.i2p.router.web;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class JobQueueHelper extends HelperBase {
|
||||
public JobQueueHelper() {}
|
||||
|
@ -10,7 +10,7 @@ public class LogsHelper extends HelperBase {
|
||||
|
||||
public String getLogs() {
|
||||
String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages());
|
||||
return "Location: <code>" + _context.logManager().currentFile() + "</code><br /><br />" + str;
|
||||
return "Location: <code>" + _context.logManager().currentFile() + "</code><br><br>" + str;
|
||||
}
|
||||
|
||||
public String getCriticalLogs() {
|
||||
|
@ -4,7 +4,6 @@ import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class NavHelper extends HelperBase {
|
||||
private static Map _apps = new HashMap();
|
||||
|
@ -3,9 +3,7 @@ package net.i2p.router.web;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class NetDbHelper extends HelperBase {
|
||||
private String _routerPrefix;
|
||||
|
@ -3,9 +3,7 @@ package net.i2p.router.web;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class OldConsoleHelper extends HelperBase {
|
||||
public OldConsoleHelper() {}
|
||||
|
@ -1,9 +1,7 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class PeerHelper extends HelperBase {
|
||||
private int _sortFlags;
|
||||
|
@ -4,7 +4,6 @@ import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class ProfilesHelper extends HelperBase {
|
||||
public ProfilesHelper() {}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.io.Writer;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -80,7 +80,7 @@ public class StatsGenerator {
|
||||
buf.append(stat);
|
||||
buf.append("\">");
|
||||
buf.append(stat);
|
||||
buf.append("</a></b><br />");
|
||||
buf.append("</a></b><br>");
|
||||
if (_context.statManager().isFrequency(stat))
|
||||
renderFrequency(stat, buf);
|
||||
else
|
||||
@ -88,7 +88,7 @@ public class StatsGenerator {
|
||||
out.write(buf.toString());
|
||||
buf.setLength(0);
|
||||
}
|
||||
out.write("</ul><hr />");
|
||||
out.write("</ul><br>");
|
||||
}
|
||||
out.flush();
|
||||
}
|
||||
@ -97,7 +97,7 @@ public class StatsGenerator {
|
||||
FrequencyStat freq = _context.statManager().getFrequency(name);
|
||||
buf.append("<i>");
|
||||
buf.append(freq.getDescription());
|
||||
buf.append("</i><br />");
|
||||
buf.append("</i><br>");
|
||||
long uptime = _context.router().getUptime();
|
||||
long periods[] = freq.getPeriods();
|
||||
Arrays.sort(periods);
|
||||
@ -124,9 +124,9 @@ public class StatsGenerator {
|
||||
buf.append(" using the lifetime of ");
|
||||
buf.append(curFreq.getEventCount());
|
||||
buf.append(" events)");
|
||||
buf.append("<br />");
|
||||
buf.append("<br>");
|
||||
}
|
||||
buf.append("<br />");
|
||||
buf.append("<br>");
|
||||
}
|
||||
|
||||
private void renderRate(String name, StringBuilder buf) {
|
||||
@ -135,10 +135,10 @@ public class StatsGenerator {
|
||||
if (! "".equals(d)) {
|
||||
buf.append("<i>");
|
||||
buf.append(d);
|
||||
buf.append("</i><br />");
|
||||
buf.append("</i><br>");
|
||||
}
|
||||
if (rate.getLifetimeEventCount() <= 0) {
|
||||
buf.append("No lifetime events<br /> <br />");
|
||||
buf.append("No lifetime events<br> <br>");
|
||||
return;
|
||||
}
|
||||
long now = _context.clock().now();
|
||||
@ -217,9 +217,9 @@ public class StatsGenerator {
|
||||
buf.append(num(rate.getLifetimeAverageValue()));
|
||||
buf.append(" over ");
|
||||
buf.append(rate.getLifetimeEventCount());
|
||||
buf.append(" events<br /></li>");
|
||||
buf.append(" events<br></li>");
|
||||
buf.append("</ul>");
|
||||
buf.append("<br />");
|
||||
buf.append("<br>");
|
||||
}
|
||||
|
||||
private static void renderPeriod(StringBuilder buf, long period, String name) {
|
||||
|
@ -1,15 +1,12 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.text.Collator;
|
||||
import java.text.DateFormat;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.data.Destination;
|
||||
@ -18,7 +15,6 @@ import net.i2p.data.LeaseSet;
|
||||
import net.i2p.data.RouterAddress;
|
||||
import net.i2p.router.CommSystemFacade;
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.router.RouterVersion;
|
||||
import net.i2p.router.TunnelPoolSettings;
|
||||
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
|
||||
@ -367,32 +363,32 @@ public class SummaryHelper extends HelperBase {
|
||||
String name = getName(client);
|
||||
Hash h = client.calculateHash();
|
||||
|
||||
buf.append("<tr><td align=\"right\"><b><img src=\"/themes/console/images/");
|
||||
buf.append("<tr><td align=\"right\"><img src=\"/themes/console/images/");
|
||||
if (_context.clientManager().shouldPublishLeaseSet(h))
|
||||
buf.append("server.png\" alt=\"Server\" title=\"Server\" />");
|
||||
buf.append("server.png\" alt=\"Server\" title=\"Server\">");
|
||||
else
|
||||
buf.append("client.png\" alt=\"Client\" title=\"Client\" />");
|
||||
buf.append("</td><td align=\"left\"><a href=\"tunnels.jsp#").append(h.toBase64().substring(0,4));
|
||||
buf.append("client.png\" alt=\"Client\" title=\"Client\">");
|
||||
buf.append("</td><td align=\"left\"><b><a href=\"tunnels.jsp#").append(h.toBase64().substring(0,4));
|
||||
buf.append("\" target=\"_top\" title=\"Show tunnels\">");
|
||||
if (name.length() < 16)
|
||||
buf.append(name);
|
||||
else
|
||||
buf.append(name.substring(0,15)).append("…");
|
||||
buf.append("</a></td>\n");
|
||||
buf.append("</a></b></td>\n");
|
||||
LeaseSet ls = _context.netDb().lookupLeaseSetLocally(h);
|
||||
if (ls != null) {
|
||||
long timeToExpire = ls.getEarliestLeaseDate() - _context.clock().now();
|
||||
if (timeToExpire < 0) {
|
||||
// red or yellow light
|
||||
buf.append("<td align=\right\"><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Rebuilding…\" title=\"Leases expired ").append(DataHelper.formatDuration(0-timeToExpire));
|
||||
buf.append(" ago. Rebuilding..\"></td></tr>\n");
|
||||
buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Rebuilding…\" title=\"Leases expired ").append(DataHelper.formatDuration(0-timeToExpire));
|
||||
buf.append(" ago. Rebuilding…\"></td></tr>\n");
|
||||
} else {
|
||||
// green light
|
||||
buf.append("<td align=\right\"><img src=\"/themes/console/images/local_up.png\" alt=\"Ready\" title=\"Ready\"></td></tr>\n");
|
||||
buf.append("<td><img src=\"/themes/console/images/local_up.png\" alt=\"Ready\" title=\"Ready\"></td></tr>\n");
|
||||
}
|
||||
} else {
|
||||
// yellow light
|
||||
buf.append("<td align=\right\"><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building…\" title=\"Tunnel building in progress…\"></td></tr>\n");
|
||||
buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building…\" title=\"Tunnel building in progress…\"></td></tr>\n");
|
||||
}
|
||||
}
|
||||
buf.append("</table><hr>\n");
|
||||
|
@ -132,9 +132,11 @@ class SummaryListener implements RateSummaryListener {
|
||||
RrdDb getData() { return _db; }
|
||||
long now() { return _context.clock().now(); }
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return ((obj instanceof SummaryListener) && ((SummaryListener)obj)._rate.equals(_rate));
|
||||
}
|
||||
@Override
|
||||
public int hashCode() { return _rate.hashCode(); }
|
||||
}
|
||||
|
||||
|
@ -3,9 +3,7 @@ package net.i2p.router.web;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
public class TunnelHelper extends HelperBase {
|
||||
public TunnelHelper() {}
|
||||
|
@ -2,7 +2,6 @@ package net.i2p.router.web;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.util.EepGet;
|
||||
@ -109,11 +108,11 @@ public class UnsignedUpdateHandler extends UpdateHandler {
|
||||
_context.router().saveConfig();
|
||||
if ("install".equals(policy)) {
|
||||
_log.log(Log.CRIT, "Update was downloaded, restarting to install it");
|
||||
_status = "<b>Update downloaded</b><br />Restarting";
|
||||
_status = "<b>Update downloaded</b><br>Restarting";
|
||||
restart();
|
||||
} else {
|
||||
_log.log(Log.CRIT, "Update was downloaded, will be installed at next restart");
|
||||
_status = "<b>Update downloaded</b><br />";
|
||||
_status = "<b>Update downloaded</b><br>";
|
||||
if (System.getProperty("wrapper.version") != null)
|
||||
_status += "Click Restart to install";
|
||||
else
|
||||
|
@ -201,11 +201,11 @@ public class UpdateHandler {
|
||||
_context.router().saveConfig();
|
||||
if ("install".equals(policy)) {
|
||||
_log.log(Log.CRIT, "Update was VERIFIED, restarting to install it");
|
||||
_status = "<b>Update verified</b><br />Restarting";
|
||||
_status = "<b>Update verified</b><br>Restarting";
|
||||
restart();
|
||||
} else {
|
||||
_log.log(Log.CRIT, "Update was VERIFIED, will be installed at next restart");
|
||||
_status = "<b>Update downloaded</b><br />";
|
||||
_status = "<b>Update downloaded</b><br>";
|
||||
if (System.getProperty("wrapper.version") != null)
|
||||
_status += "Click Restart to install";
|
||||
else
|
||||
|
@ -25,45 +25,42 @@
|
||||
System.setProperty("net.i2p.router.web.ConfigNetHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigNetHandler.nonce")%>" />
|
||||
<input type="hidden" name="action" value="blah" />
|
||||
<h3>Bandwidth limiter</h3>
|
||||
<p>
|
||||
<h3>Bandwidth limiter</h3><p>
|
||||
<b>I2P will work best if you configure your rates to match the speed of your internet connection.</b>
|
||||
</p>
|
||||
<p>
|
||||
<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 <td>(<jsp:getProperty name="nethelper" property="inboundRateBits" />)<br />
|
||||
</p><p>
|
||||
<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
|
||||
</td><td>(<jsp:getProperty name="nethelper" property="inboundRateBits" />)</td>
|
||||
<!-- let's keep this simple...
|
||||
bursting up to
|
||||
<input name="inboundburstrate" type="text" size="5" value="<jsp:getProperty name="nethelper" property="inboundBurstRate" />" /> KBps for
|
||||
<jsp:getProperty name="nethelper" property="inboundBurstFactorBox" /><br />
|
||||
<jsp:getProperty name="nethelper" property="inboundBurstFactorBox" /><br>
|
||||
-->
|
||||
<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
|
||||
Out <td>(<jsp:getProperty name="nethelper" property="outboundRateBits" />)<br />
|
||||
</tr><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 Out
|
||||
</td><td>(<jsp:getProperty name="nethelper" property="outboundRateBits" />)</td>
|
||||
<!-- let's keep this simple...
|
||||
bursting up to
|
||||
<input name="outboundburstrate" type="text" size="2" value="<jsp:getProperty name="nethelper" property="outboundBurstRate" />" /> KBps for
|
||||
<jsp:getProperty name="nethelper" property="outboundBurstFactorBox" /><br />
|
||||
<i>KBps = kilobytes per second = 1024 bytes per second = 8192 bits per second.<br />
|
||||
A negative rate sets the default.</i><br />
|
||||
<jsp:getProperty name="nethelper" property="outboundBurstFactorBox" /><br>
|
||||
<i>KBps = kilobytes per second = 1024 bytes per second = 8192 bits per second.<br>
|
||||
A negative rate sets the default.</i><br>
|
||||
-->
|
||||
<tr><td><jsp:getProperty name="nethelper" property="sharePercentageBox" />
|
||||
Share <td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)<br />
|
||||
</table></div>
|
||||
</p><p>
|
||||
</tr><tr>
|
||||
<td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> Share</td>
|
||||
<td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)
|
||||
</td></tr></table></div></p><p>
|
||||
<% int share = nethelper.getShareBandwidth();
|
||||
if (share < 12) {
|
||||
out.print("<b>NOTE</b>: You have configured I2P to share only " + share + "KBps. ");
|
||||
out.print("I2P requires at least 12KBps to enable sharing. ");
|
||||
out.print("Please enable sharing (participating in tunnels) by configuring more bandwidth. ");
|
||||
out.print("It improves your anonymity by creating cover traffic, and helps the network.<br />");
|
||||
out.print("It improves your anonymity by creating cover traffic, and helps the network.<br>");
|
||||
} else {
|
||||
out.print("You have configured I2P to share<b> " + share + "KBps</b>. ");
|
||||
out.print("The higher the share bandwidth the more you improve your anonymity and help the network.<hr />");
|
||||
out.print("The higher the share bandwidth the more you improve your anonymity and help the network.<hr>");
|
||||
}
|
||||
%>
|
||||
</p><div class="formaction">
|
||||
</p><div class="formaction">
|
||||
<input type="submit" name="save" value="Save changes" /> <input type="reset" value="Cancel" /></div>
|
||||
<!--
|
||||
<b>Enable load testing: </b>
|
||||
@ -73,26 +70,23 @@
|
||||
to pick faster peers, but can cost substantial bandwidth. Relevant data from the
|
||||
load testing is fed into the profiles as well as the
|
||||
<a href="oldstats.jsp#test.rtt">test.rtt</a> and related stats.</p>
|
||||
<hr />
|
||||
<br>
|
||||
-->
|
||||
<h3>IP and Transport Configuration</h3>
|
||||
<p>
|
||||
<h3>IP and Transport Configuration</h3><p>
|
||||
<b>The default settings will work for most people. There is <a href="#chelp">help below</a>.</b>
|
||||
</p><p>
|
||||
<b>UPnP Configuration:</b><br />
|
||||
</p><p><b>UPnP Configuration:</b><br>
|
||||
<input type="checkbox" class="optbox" name="upnp" value="true" <jsp:getProperty name="nethelper" property="upnpChecked" /> />
|
||||
Enable UPnP to open firewall ports - <a href="peers.jsp#upnp">UPnP status</a>
|
||||
</p><p>
|
||||
<b>IP Configuration:</b><br />
|
||||
Externally reachable hostname or IP address:<br />
|
||||
</p><p><b>IP Configuration:</b><br>
|
||||
Externally reachable hostname or IP address:<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="local,upnp,ssu" <%=nethelper.getUdpAutoIPChecked(3) %> />
|
||||
Use all auto-detect methods<br />
|
||||
Use all auto-detect methods<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> />
|
||||
Disable UPnP IP address detection<br />
|
||||
Disable UPnP IP address detection<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> />
|
||||
Ignore local interface IP address<br />
|
||||
Ignore local interface IP address<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> />
|
||||
Use SSU IP address detection only<br />
|
||||
Use SSU IP address detection only<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> />
|
||||
Specify hostname or IP:
|
||||
<input name ="udpHost1" type="text" size="16" value="<jsp:getProperty name="nethelper" property="udphostname" />" />
|
||||
@ -109,52 +103,47 @@
|
||||
out.print("</select>\n");
|
||||
}
|
||||
%>
|
||||
<br />
|
||||
<br>
|
||||
<input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> />
|
||||
Hidden mode - do not publish IP <i>(prevents participating traffic)</i><br />
|
||||
</p><p>
|
||||
<b>UDP Configuration:</b><br />
|
||||
Hidden mode - do not publish IP <i>(prevents participating traffic)</i><br>
|
||||
</p><p><b>UDP Configuration:</b><br>
|
||||
UDP port:
|
||||
<input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" /><br />
|
||||
<input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" /><br>
|
||||
<!-- let's keep this simple...
|
||||
<input type="checkbox" class="optbox" name="requireIntroductions" value="true" <jsp:getProperty name="nethelper" property="requireIntroductionsChecked" /> />
|
||||
Require SSU introductions
|
||||
<i>(Enable if you cannot open your firewall)</i>
|
||||
</p><p>
|
||||
Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br />
|
||||
Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br>
|
||||
-->
|
||||
</p><p>
|
||||
<b>TCP Configuration:</b><br />
|
||||
Externally reachable hostname or IP address:<br />
|
||||
<b>TCP Configuration:</b><br>
|
||||
Externally reachable hostname or IP address:<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="true" <%=nethelper.getTcpAutoIPChecked(2) %> />
|
||||
Use auto-detected IP address
|
||||
<i>(currently <jsp:getProperty name="nethelper" property="udpIP" />)</i>
|
||||
if we are not firewalled<br />
|
||||
if we are not firewalled<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="always" <%=nethelper.getTcpAutoIPChecked(3) %> />
|
||||
Always use auto-detected IP address (Not firewalled)<br />
|
||||
Always use auto-detected IP address (Not firewalled)<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> />
|
||||
Specify hostname or IP:
|
||||
<input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" /><br />
|
||||
<input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" /><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(0) %> />
|
||||
Disable inbound (Firewalled)<br />
|
||||
Disable inbound (Firewalled)<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> />
|
||||
Completely disable <i>(select only if behind a firewall that throttles or blocks outbound TCP)</i><br />
|
||||
Completely disable <i>(select only if behind a firewall that throttles or blocks outbound TCP)</i><br>
|
||||
</p><p>
|
||||
Externally reachable TCP port:<br />
|
||||
Externally reachable TCP port:<br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> />
|
||||
Use the same port configured for UDP
|
||||
<i>(currently <jsp:getProperty name="nethelper" property="udpPort" />)</i><br />
|
||||
<i>(currently <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
|
||||
<input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> />
|
||||
Specify Port:
|
||||
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" /><br />
|
||||
</p><p><b>Note: Changing these settings will restart your router.</b>
|
||||
</p><hr><div class="formaction">
|
||||
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" /><br>
|
||||
</p><p><b>Note: Changing these settings will restart your router.</b></p>
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="save" value="Save changes" /> <input type="reset" value="Cancel" />
|
||||
</div>
|
||||
</div>
|
||||
<h3><a name="chelp">Configuration Help:</a></h3>
|
||||
<div align="justify">
|
||||
<p>
|
||||
</div><h3><a name="chelp">Configuration Help:</a></h3><div align="justify"><p>
|
||||
While I2P will work fine behind most firewalls, your speeds and network integration will generally improve
|
||||
if the I2P port (generally 8887) is forwarded for both UDP and TCP.
|
||||
</p><p>
|
||||
@ -166,30 +155,30 @@
|
||||
</p>
|
||||
<!-- let's keep this simple...
|
||||
<input type="submit" name="recheckReachability" value="Check network reachability..." />
|
||||
</p>
|
||||
-->
|
||||
</p><p>
|
||||
<p>
|
||||
UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address
|
||||
and forward ports.
|
||||
UPnP support is beta, and may not work for any number of reasons:
|
||||
<ul>
|
||||
<ul>
|
||||
<li class="tidylist">No UPnP-compatible device present
|
||||
<li class="tidylist">UPnP disabled on the device
|
||||
<li class="tidylist">Software firewall interference with UPnP
|
||||
<li class="tidylist">Bugs in the device's UPnP implementation
|
||||
<li class="tidylist">Multiple firewall/routers in the internet connection path
|
||||
<li class="tidylist">UPnP device change, reset, or address change
|
||||
</ul><br>
|
||||
</ul><br>
|
||||
Reviewing the <a href="peers.jsp#upnp">UPnP status</a> may help.
|
||||
UPnP may be enabled or disabled above, but a change requires a router restart to take effect.
|
||||
</p><p>Hostnames entered above will be published in the network database.
|
||||
</p><p>Hostnames entered above will be published in the network database.
|
||||
They are <b>not private</b>.
|
||||
Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.
|
||||
If you specify the wrong IP address or
|
||||
hostname, or do not properly configure your NAT or firewall, your network performance will degrade
|
||||
substantially. When in doubt, leave the settings at the defaults.</p>
|
||||
</p>
|
||||
<h3><a name="help">Reachability Help:</a></h3>
|
||||
<p>
|
||||
substantially. When in doubt, leave the settings at the defaults.
|
||||
</p>
|
||||
<h3><a name="help">Reachability Help:</a></h3><p>
|
||||
While I2P will work fine behind most firewalls, your speeds and network integration will generally improve
|
||||
if the I2P port (generally 8887) to both UDP and TCP.
|
||||
If you think you have opened up your firewall and I2P still thinks you are firewalled, remember
|
||||
@ -244,12 +233,10 @@
|
||||
<li class="tidylist"><b>ERR - Client Manager I2CP Error - check logs</b> -
|
||||
This is usually due to a port 7654 conflict. Check the logs to verify. Do you have another I2P instance running?
|
||||
Stop the conflicting program and restart I2P.
|
||||
</ul>
|
||||
</p>
|
||||
<hr />
|
||||
</ul></p><br>
|
||||
<!--
|
||||
<b>Dynamic Router Keys: </b>
|
||||
<input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br />
|
||||
<input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br>
|
||||
<p>
|
||||
This setting causes your router identity to be regenerated every time your IP address
|
||||
changes. If you have a dynamic IP this option can speed up your reintegration into
|
||||
@ -264,10 +251,6 @@
|
||||
update their profiles - any long lasting client connections will be disconnected,
|
||||
though such would likely already be the case anyway, since the IP address changed.
|
||||
</p>
|
||||
<hr />
|
||||
<br>
|
||||
-->
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></form></div></div></body></html>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config advanced</title>
|
||||
<html><head><title>I2P Router Console - config advanced</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
@ -30,15 +29,9 @@
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce")%>" />
|
||||
<input type="hidden" name="action" value="blah" />
|
||||
<h3>Advanced I2P Configuration</h3>
|
||||
<textarea rows="32" cols="60" name="config" wrap="off"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br /><hr>
|
||||
<textarea rows="32" cols="60" name="config" wrap="off"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br><hr>
|
||||
<div class="formaction">
|
||||
<input type="submit" name="shouldsave" value="Apply" />
|
||||
<input type="reset" value="Cancel" /><br />
|
||||
<input type="reset" value="Cancel" /><br>
|
||||
<b>NOTE:</b> Some changes may require a restart to take effect.
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></form></div></div></div></body></html>
|
||||
|
@ -2,15 +2,13 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config clients</title>
|
||||
<html><head><title>I2P Router Console - config clients</title>
|
||||
<%@include file="css.jsp" %>
|
||||
<style type='text/css'>
|
||||
button span.hide{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
</head><body>
|
||||
</style></head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
|
||||
@ -26,26 +24,21 @@ button span.hide{
|
||||
<jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter("nonce")%>" />
|
||||
<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
|
||||
<jsp:getProperty name="formhandler" property="allMessages" />
|
||||
<div class="configure">
|
||||
<form action="configclients.jsp" method="POST">
|
||||
<div class="configure"><form action="configclients.jsp" method="POST">
|
||||
<% String prev = System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce");
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigClientsHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", new java.util.Random().nextLong()+""); %>
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce")%>" />
|
||||
<h3>Client Configuration</h3>
|
||||
<p>
|
||||
<h3>Client Configuration</h3><p>
|
||||
The Java clients listed below are started by the router and run in the same JVM.
|
||||
</p><p> <div class="wideload">
|
||||
<jsp:getProperty name="clientshelper" property="form1" />
|
||||
</p><p>
|
||||
<i>To change other client options, edit the file
|
||||
</p><div class="wideload">
|
||||
<p><jsp:getProperty name="clientshelper" property="form1" />
|
||||
</p><p><i>To change other client options, edit the file
|
||||
<%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>.
|
||||
All changes require restart to take effect.</i>
|
||||
</p> <hr /><div class="formaction">
|
||||
</p><hr><div class="formaction">
|
||||
<input type="submit" name="action" value="Save Client Configuration" />
|
||||
</div></div>
|
||||
<h3>WebApp Configuration</h3>
|
||||
<p>
|
||||
</div></div><h3>WebApp Configuration</h3><p>
|
||||
The Java web applications listed below are started by the webConsole client and run in the same JVM as the router.
|
||||
They are usually web applications accessible through the router console.
|
||||
They may be complete applications (e.g. i2psnark),
|
||||
@ -55,18 +48,10 @@ All changes require restart to take effect.</i>
|
||||
A web app may also be disabled by removing the .war file from the webapps directory;
|
||||
however the .war file and web app will reappear when you update your router to a newer version,
|
||||
so disabling the web app here is the preferred method.
|
||||
</p><p><div class="wideload">
|
||||
</p><div class="wideload"><p>
|
||||
<jsp:getProperty name="clientshelper" property="form2" />
|
||||
</p>
|
||||
<p>
|
||||
</p><p>
|
||||
<i>All changes require restart to take effect.</i>
|
||||
</p>
|
||||
<hr><div class="formaction">
|
||||
</p><hr><div class="formaction">
|
||||
<input type="submit" name="action" value="Save WebApp Configuration" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></div></form></div></div></body></html>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config keyring</title>
|
||||
<html><head><title>I2P Router Console - config keyring</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
@ -16,21 +15,16 @@
|
||||
<jsp:setProperty name="formhandler" property="*" />
|
||||
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:getProperty name="formhandler" property="allMessages" />
|
||||
|
||||
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" />
|
||||
<jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<div class="configure">
|
||||
<p>
|
||||
<h3>Keyring</h3>
|
||||
<div class="configure"><p><h3>Keyring</h3>
|
||||
The router keyring is used to decrypt encrypted leaseSets.
|
||||
The keyring may contain keys for local or remote encrypted destinations.
|
||||
<div class="wideload"><p>
|
||||
<jsp:getProperty name="keyringhelper" property="summary" />
|
||||
</p></div>
|
||||
|
||||
<hr />
|
||||
<br>
|
||||
|
||||
<form action="configkeyring.jsp" method="POST">
|
||||
<% String prev = System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce");
|
||||
@ -42,22 +36,13 @@
|
||||
Keys for local destinations must be entered on the <a href="i2ptunnel/index.jsp">I2PTunnel page</a>.
|
||||
<p>
|
||||
<div class="wideload">
|
||||
<table>
|
||||
<tr>
|
||||
<table><tr>
|
||||
<td class="mediumtags" align="right">Dest. name, hash, or full key:</td>
|
||||
<td><textarea name="peer" cols="44" rows="1" style="height: 3em;" wrap="off"></textarea></td>
|
||||
<tr>
|
||||
</tr><tr>
|
||||
<td class="mediumtags" align="right">Session Key:</td>
|
||||
<td><input type="text" size="55" name="key" /></td>
|
||||
<tr>
|
||||
<td>
|
||||
<td align="right">
|
||||
<input type="submit" name="action" value="Add key" /></td>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</tr><tr>
|
||||
<td></td>
|
||||
<td align="right"><input type="submit" name="action" value="Add key" /></td>
|
||||
</tr></table></div></form></div></div></body></html>
|
||||
|
@ -28,43 +28,26 @@
|
||||
<h3>Configure I2P Logging Options</h3>
|
||||
<div class="wideload">
|
||||
<table border="0" cellspacing="5">
|
||||
<tr>
|
||||
<td class="mediumtags" align="right"><b>Logging filename:</b>
|
||||
<tr><td class="mediumtags" align="right"><b>Logging filename:</b></td>
|
||||
<td><input type="text" name="logfilename" size="40" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" />
|
||||
<br /> <i>(the symbol '@' will be replaced during log rotation)</i>
|
||||
<tr>
|
||||
<td class="mediumtags" align="right"><b>Log record format:</b>
|
||||
<br><i>(the symbol '@' will be replaced during log rotation)</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Log record format:</b></td>
|
||||
<td><input type="text" name="logformat" size="20" value="<jsp:getProperty name="logginghelper" property="recordPattern" />" />
|
||||
<br /> <i>(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority,
|
||||
'm' = message)</i>
|
||||
<tr>
|
||||
<td class="mediumtags" align="right"><b>Log date format:</b>
|
||||
<br> <i>(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority,
|
||||
'm' = message)</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Log date format:</b></td>
|
||||
<td><input type="text" name="logdateformat" size="20" value="<jsp:getProperty name="logginghelper" property="datePattern" />" />
|
||||
<br /> <i>('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss'
|
||||
= second, 'SSS' = millisecond)</i>
|
||||
<tr>
|
||||
<td class="mediumtags" align="right"><b>Max log file size:</b>
|
||||
<td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" />
|
||||
<br />
|
||||
<tr>
|
||||
<td class="mediumtags" align="right"><b>Default log level:</b>
|
||||
<td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /> <br /> <i>(DEBUG and INFO are not recommended defaults,
|
||||
as they will drastically slow down your router)</i>
|
||||
<tr>
|
||||
<td class="mediumtags" align="right"><b>Log level overrides:</b>
|
||||
<td><jsp:getProperty name="logginghelper" property="logLevelTable" />
|
||||
<tr>
|
||||
<td colspan="2"><hr>
|
||||
<tr>
|
||||
<td>
|
||||
<td> <div align="right">
|
||||
<br> <i>('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss'
|
||||
= second, 'SSS' = millisecond)</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Max log file size:</b></td>
|
||||
<td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" /><br></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Default log level:</b></td>
|
||||
<td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i>(DEBUG and INFO are not recommended defaults,
|
||||
as they will drastically slow down your router)</i></td>
|
||||
</tr><tr><td class="mediumtags" align="right"><b>Log level overrides:</b></td>
|
||||
<td><jsp:getProperty name="logginghelper" property="logLevelTable" /></td>
|
||||
</tr><tr><td colspan="2"><hr></td>
|
||||
</tr><tr class="tablefooter"><td colspan="2"> <div class="formaction">
|
||||
<input type="submit" name="shouldsave" value="Save changes" />
|
||||
<input type="reset" value="Cancel" />
|
||||
</div>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></td></tr></table></div></form></div></div></body></html>
|
||||
|
@ -25,5 +25,4 @@
|
||||
%>Stats | <% } else { %><a href="configstats.jsp">Stats</a> | <% }
|
||||
if (request.getRequestURI().indexOf("configadvanced.jsp") != -1) {
|
||||
%>Advanced<% } else { %><a href="configadvanced.jsp">Advanced</a><% } %>
|
||||
</center>
|
||||
</div>
|
||||
</center></div>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config peers</title>
|
||||
<html><head><title>I2P Router Console - config peers</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
@ -41,7 +40,7 @@
|
||||
<input type="text" size="55" name="peer" value="<%=peer%>" /></div>
|
||||
<h3>Manually Ban / Unban a Peer</h3>
|
||||
Banning will prevent the participation of this peer in tunnels you create.
|
||||
<hr />
|
||||
<hr>
|
||||
<div class="formaction">
|
||||
<input type="submit" name="action" value="Ban peer until restart" />
|
||||
<input type="submit" name="action" value="Unban peer" />
|
||||
@ -61,7 +60,7 @@
|
||||
// get existing bonus values?
|
||||
}
|
||||
%>
|
||||
<hr />
|
||||
<hr>
|
||||
<div class="mediumtags">Speed:
|
||||
<input type="text" size="8" name="speed" value="<%=speed%>" />
|
||||
Capacity:
|
||||
@ -73,12 +72,8 @@
|
||||
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
|
||||
<jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:getProperty name="profilesHelper" property="shitlistSummary" />
|
||||
<hr />
|
||||
<hr>
|
||||
<div class="wideload">
|
||||
<jsp:getProperty name="peerhelper" property="blocklistSummary" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></div></div></body></html>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config service</title>
|
||||
<html><head><title>I2P Router Console - config service</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
@ -52,8 +51,7 @@
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="Show systray icon" />
|
||||
<input type="submit" name="action" value="Hide systray icon" />
|
||||
</div>
|
||||
<h3>Run on startup</h3>
|
||||
</div><h3>Run on startup</h3>
|
||||
<p>You can control whether I2P is run on startup or not by selecting one of the
|
||||
following options - I2P will install (or remove) a service accordingly. You can
|
||||
also run the <code>install_i2p_service_winnt.bat</code> (or
|
||||
@ -83,8 +81,4 @@
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="action" value="View console on startup" />
|
||||
<input type="submit" name="action" value="Do not view console on startup" />
|
||||
</form></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></form></div></div></body></html>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config stats</title>
|
||||
<html><head><title>I2P Router Console - config stats</title>
|
||||
<%@include file="css.jsp" %>
|
||||
<script type="text/javascript">
|
||||
function init()
|
||||
@ -75,17 +74,23 @@ function toggleAll(category)
|
||||
Enable full stats?
|
||||
<input type="checkbox" class="optbox" name="isFull" value="true" <%
|
||||
if (statshelper.getIsFull()) { %>checked="true" <% } %>/>
|
||||
(change requires restart to take effect)<br />
|
||||
Stat file: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br />
|
||||
Filter: (<a href="javascript: void(null);" onclick="toggleAll('*')">toggle all</a>)<hr />
|
||||
(change requires restart to take effect)<br>
|
||||
Stat file: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br>
|
||||
Filter: (<a href="javascript: void(null);" onclick="toggleAll('*')">toggle all</a>)<br>
|
||||
<div class="wideload">
|
||||
<table>
|
||||
<% while (statshelper.hasMoreStats()) {
|
||||
while (statshelper.groupRequired()) { %>
|
||||
<tr class="tablefooter"><td align="left" colspan="3">
|
||||
<tr class="tablefooter">
|
||||
<td align="left" colspan="3">
|
||||
<b><%=statshelper.getCurrentGroupName()%></b>
|
||||
(<a href="javascript: void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')">toggle all</a>)
|
||||
</td></tr><tr class="tablefooter"><td align="center"><b>Log</b></td><td align="center"><b>Graph</b></td><td></td></tr><%
|
||||
</td></tr>
|
||||
<tr class="tablefooter">
|
||||
<td align="center"><b>Log</b></td>
|
||||
<td align="center"><b>Graph</b></td>
|
||||
<td></td></tr>
|
||||
<%
|
||||
} // end iterating over required groups for the current stat %>
|
||||
<tr><td align="center">
|
||||
<a name="<%=statshelper.getCurrentStatName()%>"></a>
|
||||
@ -95,17 +100,12 @@ function toggleAll(category)
|
||||
<% if (statshelper.getCurrentCanBeGraphed()) { %>
|
||||
<input id="<%=statshelper.getCurrentGroupName()%>" type="checkbox" class="optbox" name="graphList" value="<%=statshelper.getCurrentGraphName()%>" <%
|
||||
if (statshelper.getCurrentIsGraphed()) { %>checked="true" <% } %>/><% } %></td>
|
||||
<td align="left"><b><%=statshelper.getCurrentStatName()%>:</b><br />
|
||||
<td align="left"><b><%=statshelper.getCurrentStatName()%>:</b><br>
|
||||
<%=statshelper.getCurrentStatDescription()%></td></tr><%
|
||||
} // end iterating over all stats %>
|
||||
<tr><td colspan="3"></td></tr>
|
||||
<tr><td align="center"><input type="checkbox" class="optbox" name="explicitFilter" /></td>
|
||||
<td colspan="2">Advanced filter:
|
||||
<input type="text" name="explicitFilterValue" value="<%=statshelper.getExplicitFilter()%>" size="40" /></td></tr>
|
||||
<tr class="tablefooter"><td colspan="3" align="right"><input type="submit" name="shouldsave" value="Save changes" /><input type="reset" value="Cancel" /></td></tr></form>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<tr class="tablefooter"><td colspan="3" align="right"><input type="submit" name="shouldsave" value="Save changes" /><input type="reset" value="Cancel" /></td></tr>
|
||||
</table></div></form></div></div></body></html>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config tunnels</title>
|
||||
<html><head><title>I2P Router Console - config tunnels</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
@ -21,16 +20,14 @@
|
||||
<jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter("nonce")%>" />
|
||||
<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
|
||||
<jsp:getProperty name="formhandler" property="allMessages" />
|
||||
<div class="configure">
|
||||
<p><i>
|
||||
<div class="configure"><p><i>
|
||||
NOTE: The default settings work for most people.
|
||||
There is a fundamental tradeoff between anonymity and performance.
|
||||
Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops),
|
||||
or a high quantity + backup quantity, may severely reduce performance or reliability.
|
||||
High CPU and/or high outbound bandwidth usage may result.
|
||||
Change these settings with care, and adjust them if you have problems.
|
||||
</i></p>
|
||||
<div class="wideload">
|
||||
</i></p><div class="wideload">
|
||||
<form action="configtunnels.jsp" method="POST">
|
||||
<% String prev = System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce");
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ConfigTunnelsHandler.noncePrev", prev);
|
||||
@ -38,13 +35,8 @@
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce")%>" />
|
||||
<input type="hidden" name="action" value="blah" />
|
||||
<jsp:getProperty name="tunnelshelper" property="form" />
|
||||
<i>Note - Exploratory tunnel setting changes are stored in the router.config file.</i></br>
|
||||
<i>Note - Exploratory tunnel setting changes are stored in the router.config file.</i><br>
|
||||
<i>Client tunnel changes are temporary and are not saved.</i><br>
|
||||
<i>To make permanent client tunnel changes see the </i><a href="i2ptunnel/index.jsp">i2ptunnel page</a>.<br>
|
||||
<hr /><div class="formaction"><input type="submit" name="shouldsave" value="Save changes" /> <input type="reset" value="Cancel" /></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<hr><div class="formaction"><input type="submit" name="shouldsave" value="Save changes" /> <input type="reset" value="Cancel" /></div>
|
||||
</form></div></div></div></body></html>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config UI</title>
|
||||
<html><head><title>I2P Router Console - config UI</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
@ -21,8 +20,7 @@
|
||||
<jsp:setProperty name="formhandler" property="*" />
|
||||
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:getProperty name="formhandler" property="allMessages" />
|
||||
<div class="configure">
|
||||
<h3>Router Console Theme</h3>
|
||||
<div class="configure"><h3>Router Console Theme</h3>
|
||||
<%
|
||||
// userAgent defined in confignav
|
||||
if (userAgent == null || !userAgent.contains("MSIE")) {
|
||||
@ -36,12 +34,9 @@
|
||||
<jsp:getProperty name="uihelper" property="settings" />
|
||||
<hr><div class="formaction">
|
||||
<input type="submit" name="shouldsave" value="Apply" /> <input type="reset" value="Cancel" />
|
||||
</form></div>
|
||||
</div></form></div>
|
||||
<% } else { %>
|
||||
Theme selection disabled for Internet Explorer, sorry.<hr>If you're not using IE, it's likely that
|
||||
your 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.
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - config update</title>
|
||||
<html><head><title>I2P Router Console - config update</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
@ -16,7 +15,6 @@
|
||||
<jsp:setProperty name="formhandler" property="*" />
|
||||
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:getProperty name="formhandler" property="allMessages" />
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" />
|
||||
<jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<div class="messages">
|
||||
@ -29,56 +27,33 @@
|
||||
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce")%>" />
|
||||
<h3>Check for I2P and news updates</h3>
|
||||
<div class="wideload"><table border="0" cellspacing="5">
|
||||
<tr>
|
||||
<td colspan="2"></tr>
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>News:</b></td>
|
||||
<td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i>Update In Progress</i><br /> <% } else { %> <input type="submit" name="action" value="Check for update now" />
|
||||
<% } %></tr>
|
||||
<tr>
|
||||
<td colspan="2"><hr /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>News URL:</b></td>
|
||||
<tr><td colspan="2"></tr>
|
||||
<tr><td class= "mediumtags" align="right"><b>News & I2P Updates:</b></td>
|
||||
<td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i>Update In Progress</i><br> <% } else { %> <input type="submit" name="action" value="Check for updates" />
|
||||
<% } %></td></tr>
|
||||
<tr><td colspan="2"><br></td></tr>
|
||||
<tr><td class= "mediumtags" align="right"><b>News URL:</b></td>
|
||||
<td><input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>Refresh frequency:</b>
|
||||
<td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" />
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>Update policy:</b>
|
||||
<td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" />
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>Update through the eepProxy?</b>
|
||||
<td><jsp:getProperty name="updatehelper" property="updateThroughProxy" />
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>eepProxy host:</b>
|
||||
<td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" />
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>eepProxy port:</b>
|
||||
<td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" />
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>Update URLs:</b>
|
||||
<td><textarea name="updateURL" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea>
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>Trusted keys:</b>
|
||||
<td><textarea name="trustedKeys" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea>
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>Update with unsigned development builds?</b>
|
||||
<td><jsp:getProperty name="updatehelper" property="updateUnsigned" />
|
||||
<tr>
|
||||
<td class= "mediumtags" align="right"><b>Unsigned Build URL:</b></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Refresh frequency:</b>
|
||||
<td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /></td><tr>
|
||||
<td class= "mediumtags" align="right"><b>Update policy:</b></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /></td>
|
||||
<tr><td class= "mediumtags" align="right"><b>Update through the eepProxy?</b></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updateThroughProxy" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>eepProxy host:</b></td>
|
||||
<td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>eepProxy port:</b></td>
|
||||
<td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Update URLs:</b></td>
|
||||
<td><textarea name="updateURL" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Trusted keys:</b></td>
|
||||
<td><textarea name="trustedKeys" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Update with unsigned development builds?</b></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updateUnsigned" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b>Unsigned Build URL:</b></td>
|
||||
<td><input type="text" size="60" name="zipURL" value="<jsp:getProperty name="updatehelper" property="zipURL" />"></td>
|
||||
<tr>
|
||||
<td>
|
||||
<td><div class="formaction">
|
||||
</tr><tr class="tablefooter"><td colspan="2">
|
||||
<div class="formaction">
|
||||
<input type="submit" name="action" value="Save" />
|
||||
<input type="reset" value="Cancel" />
|
||||
</div>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></td></tr></table></div></form></div></div></body></html>
|
||||
|
@ -17,5 +17,5 @@
|
||||
%>
|
||||
<jsp:useBean class="net.i2p.router.web.CSSHelper" id="cssHelper" scope="request" />
|
||||
<jsp:setProperty name="cssHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css">
|
||||
<!--[if IE]><link href="/themes/console/classic/ieshim.css" rel="stylesheet" type="text/css" /><![endif]-->
|
@ -12,12 +12,10 @@
|
||||
}
|
||||
// If it can't find the iframe or viewtheme.jsp I wonder if the whole thing blows up...
|
||||
%>
|
||||
<html><head>
|
||||
<title>I2P Router Console</title>
|
||||
<html><head><title>I2P Router Console</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<%@include file="css.jsp" %>
|
||||
<link rel="shortcut icon" href="favicon.ico" />
|
||||
</head><body>
|
||||
<link rel="shortcut icon" href="favicon.ico" /></head><body>
|
||||
<%
|
||||
if (System.getProperty("router.consoleNonce") == null) {
|
||||
System.setProperty("router.consoleNonce", new java.util.Random().nextLong() + "");
|
||||
@ -27,6 +25,4 @@ if (System.getProperty("router.consoleNonce") == null) {
|
||||
<h1><%=ERROR_CODE%> <%=ERROR_MESSAGE%></h1>
|
||||
<div class="warning" id="warning">
|
||||
The Router Console page <%=ERROR_URI%> was not found.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -2,8 +2,7 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - graphs</title>
|
||||
<html><head><title>I2P Router Console - graphs</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
@ -18,7 +17,4 @@
|
||||
<jsp:setProperty name="graphHelper" property="writer" value="<%=out%>" />
|
||||
<jsp:getProperty name="graphHelper" property="images" />
|
||||
<jsp:getProperty name="graphHelper" property="form" />
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></div></div></body></html>
|
@ -2,34 +2,27 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - help</title>
|
||||
<html><head><title>I2P Router Console - help</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Router Help & Support</h1>
|
||||
<div class="main" id="main"><div align="justify">
|
||||
If you'd like to help improve or translate the documentation, or
|
||||
help with other aspects of the project, please see the documentation for
|
||||
<a href="http://www.i2p2.i2p/getinvolved.html">volunteers.</a>
|
||||
<br><br>Further assistance is available here:
|
||||
<br></div>
|
||||
<br><br>Further assistance is available here:<br></div>
|
||||
<ul class="links">
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ on www.i2p2.i2p</a>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.
|
||||
</ul>
|
||||
<br>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.</ul><br>
|
||||
You may also try the <a href="http://forum.i2p/">I2P forum</a>
|
||||
or IRC.<br />
|
||||
or IRC.<br>
|
||||
|
||||
<h2>Summary Bar Information</h2><div align="justify">
|
||||
Many of the stats on the summary bar may be
|
||||
<a href="configstats.jsp">configured</a> to be
|
||||
<a href="graphs.jsp">graphed</a> for further analysis.
|
||||
</div>
|
||||
<h3>General</h3>
|
||||
<ul>
|
||||
</div><h3>General</h3><ul>
|
||||
<li class="tidylist"><b>Ident:</b>
|
||||
The first four characters (24 bits) of your 44-character (256-bit) Base64 router hash.
|
||||
The full hash is shown on your <a href="netdb.jsp?r=.">router info page</a>.
|
||||
@ -43,10 +36,7 @@ your computer's time.
|
||||
<li class="tidylist"><b>Reachability:</b>
|
||||
The router's view of whether it can be contacted by other routers.
|
||||
Further information is on the <a href="config.jsp#help">configuration page</a>.
|
||||
</ul>
|
||||
|
||||
<h3>Peers</h3>
|
||||
<ul>
|
||||
</ul><h3>Peers</h3><ul>
|
||||
<li class="tidylist"><b>Active:</b>
|
||||
The first number is the number of peers you've sent or received a message from in the last few minutes.
|
||||
This may range from 8-10 to several hundred, depending on your total bandwidth,
|
||||
@ -75,21 +65,17 @@ This number is not the total size of the network;
|
||||
it may vary widely depending on your total bandwidth,
|
||||
shared bandwidth, and locally-generated traffic.
|
||||
I2P does not require a router to know every other router.
|
||||
</ul>
|
||||
|
||||
<h3>Bandwidth in/out</h3><div align="justify">
|
||||
</ul><h3>Bandwidth in/out</h3><div align="justify">
|
||||
Should be self-explanatory. All values are in bytes per second, not bits per second.
|
||||
Change your bandwidth limits on the <a href="config.jsp#help">configuration page</a>.
|
||||
Bandwidth is <a href="graphs.jsp">graphed</a> by default.
|
||||
</div>
|
||||
Bandwidth is <a href="graphs.jsp">graphed</a> by default.</div>
|
||||
|
||||
<h3>Local destinations</h3><div align="justify">
|
||||
The local applications connecting through your router.
|
||||
These may be clients started through <a href="i2ptunnel/index.jsp">I2PTunnel</a>
|
||||
or external programs connecting through SAM, BOB, or directly to I2CP.
|
||||
</div>
|
||||
<h3>Tunnels in/out</h3><div align="justify">
|
||||
The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><br>
|
||||
<ul>
|
||||
</div><h3>Tunnels in/out</h3><div align="justify">
|
||||
The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><br><ul>
|
||||
<li class="tidylist"><div align="justify"><b>Exploratory:</b>
|
||||
Tunnels built by your router and used for communication with the floodfill peers,
|
||||
building new tunnels, and testing existing tunnels.</div>
|
||||
@ -102,12 +88,10 @@ shared bandwidth, and amount of locally-generated traffic.
|
||||
The recommended method for limiting participating tunnels is
|
||||
to change your share percentage on the <a href="config.jsp#help">configuration page</a>.
|
||||
You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
|
||||
the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.
|
||||
</ul>
|
||||
the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.</ul>
|
||||
|
||||
<h3>Congestion</h3><div align="justify">
|
||||
Some basic indications of router overload:</div><br>
|
||||
<ul>
|
||||
Some basic indications of router overload:</div><br><ul>
|
||||
<li class="tidylist"><b>Job lag:</b>
|
||||
How long jobs are waiting before execution. The job queue is listed on the <a href="jobs.jsp">jobs page</a>.
|
||||
Unfortunately, there are several other job queues in the router that may be congested,
|
||||
@ -143,12 +127,11 @@ participating tunnel through your router.
|
||||
Your router may accept all requests, accept or reject a percentage of requests,
|
||||
or reject all requests for a number of reasons, to control
|
||||
the bandwidth and CPU demands and maintain capacity for
|
||||
local clients.
|
||||
</ul>
|
||||
local clients.</ul>
|
||||
|
||||
<h2>Legal stuff</h2><div align="justify">
|
||||
The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with
|
||||
a few notable exceptions:</div><br /><ul>
|
||||
a few notable exceptions:</div><br><ul>
|
||||
<li class="tidylist">ElGamal and DSA code, under the BSD license, written by TheCrypto</li>
|
||||
<li class="tidylist">SHA256 and HMAC-SHA256, under the MIT license, written by the Legion of the Bouncycastle</li>
|
||||
<li class="tidylist">AES code, under the Cryptix (MIT) license, written by the Cryptix team</li>
|
||||
@ -193,7 +176,4 @@ client applications can be found on our <a href="http://www.i2p2.i2p/download">d
|
||||
|
||||
<p>A more complete list of changes can be found
|
||||
in the history.txt file in your i2p directory.
|
||||
</p><hr />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</p><br></div></body></html>
|
||||
|
@ -1,8 +1,7 @@
|
||||
<html><head><title>I2PTunnel Disabled</title>
|
||||
<html><head><title>I2P Tunnel Manager Not Running</title>
|
||||
<meta http-equiv="cache-control" content="no-cache" />
|
||||
<meta http-equiv="pragma" content="no-cache" />
|
||||
</head>
|
||||
<body>
|
||||
I2PTunnel is not running. Go to <a href="/configclients.jsp">the config clients page</a>
|
||||
to start it.
|
||||
The I2P Tunnel Manager is not currently running. Please visit the<a href="/configclients.jsp">Client Configuration</a> page to start it.
|
||||
</body></html>
|
||||
|
@ -14,9 +14,7 @@ if (System.getProperty("router.consoleNonce") == null) {
|
||||
}
|
||||
%>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
|
||||
<h1>I2P Router Console</h1>
|
||||
<%@include file="summary.jsp" %><h1>I2P Router Console</h1>
|
||||
<div class="news" id="news">
|
||||
<jsp:useBean class="net.i2p.router.web.ContentHelper" id="newshelper" scope="request" />
|
||||
<% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getRouterDir(), "docs/news.xml"); %>
|
||||
@ -26,17 +24,12 @@ if (System.getProperty("router.consoleNonce") == null) {
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" />
|
||||
<jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<hr /><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br />
|
||||
</div>
|
||||
|
||||
<div class="main" id="main">
|
||||
<hr><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br>
|
||||
</div><div class="main" id="main">
|
||||
<jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" />
|
||||
<% fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>
|
||||
<jsp:setProperty name="contenthelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
|
||||
<jsp:setProperty name="contenthelper" property="maxLines" value="300" />
|
||||
<jsp:setProperty name="contenthelper" property="lang" value="<%=request.getParameter("lang")%>" />
|
||||
<jsp:getProperty name="contenthelper" property="content" />
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -2,19 +2,13 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - job queue</title>
|
||||
<html><head><title>I2P Router Console - job queue</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Router Job Queue</h1>
|
||||
<%@include file="summary.jsp" %><h1>I2P Router Job Queue</h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:useBean class="net.i2p.router.web.JobQueueHelper" id="jobQueueHelper" scope="request" />
|
||||
<jsp:setProperty name="jobQueueHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:setProperty name="jobQueueHelper" property="writer" value="<%=out%>" />
|
||||
<jsp:getProperty name="jobQueueHelper" property="jobQueueSummary" />
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -2,37 +2,27 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - logs</title>
|
||||
<html><head><title>I2P Router Console - logs</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Router Logs</h1>
|
||||
<h1>I2P Router Logs</h1>
|
||||
<div class="main" id="main">
|
||||
<div class="joblog">
|
||||
<h3>Version:</h3><a name="version"> </a>
|
||||
<div class="joblog"><h3>Version:</h3><a name="version"> </a>
|
||||
Please include this information in bug reports.
|
||||
<p>
|
||||
I2P <jsp:getProperty name="helper" property="version" /><br />
|
||||
<%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%><br />
|
||||
<%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br />
|
||||
CPU <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br />
|
||||
jbigi <%=net.i2p.util.NativeBigInteger.loadStatus()%><br />
|
||||
Encoding <%=System.getProperty("file.encoding")%><br>
|
||||
</p>
|
||||
<hr />
|
||||
I2P <jsp:getProperty name="helper" property="version" /><br>
|
||||
<%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%><br>
|
||||
<%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br>
|
||||
CPU <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br>
|
||||
jbigi <%=net.i2p.util.NativeBigInteger.loadStatus()%><br>
|
||||
Encoding <%=System.getProperty("file.encoding")%><br></p><br>
|
||||
<jsp:useBean class="net.i2p.router.web.LogsHelper" id="logsHelper" scope="request" />
|
||||
<jsp:setProperty name="logsHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<h3>Critical logs:</h3><a name="criticallogs"> </a>
|
||||
<jsp:getProperty name="logsHelper" property="criticalLogs" />
|
||||
<hr />
|
||||
<jsp:getProperty name="logsHelper" property="criticalLogs" /><br>
|
||||
<h3>Router logs (<a href="configlogging.jsp">configure</a>):</h3>
|
||||
<jsp:getProperty name="logsHelper" property="logs" />
|
||||
<hr />
|
||||
<jsp:getProperty name="logsHelper" property="logs" /><br>
|
||||
<h3>Service (Wrapper) logs:</h3><a name="servicelogs"> </a>
|
||||
<jsp:getProperty name="logsHelper" property="serviceLogs" />
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></div></body></html>
|
||||
|
@ -6,7 +6,6 @@
|
||||
<title>I2P Router Console - network database summary</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Network Database Summary</h1>
|
||||
<div class="main" id="main">
|
||||
@ -18,7 +17,4 @@
|
||||
<jsp:setProperty name="netdbHelper" property="router" value="<%=request.getParameter("r")%>" />
|
||||
<jsp:setProperty name="netdbHelper" property="lease" value="<%=request.getParameter("l")%>" />
|
||||
<jsp:getProperty name="netdbHelper" property="netDbSummary" />
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></div></body></html>
|
||||
|
@ -2,20 +2,14 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - internals</title>
|
||||
<html><head><title>I2P Router Console - internals</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.OldConsoleHelper" id="conhelper" scope="request" />
|
||||
<jsp:setProperty name="conhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:setProperty name="conhelper" property="writer" value="<%=out%>" />
|
||||
<h1>I2P Router » Old Console</h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:getProperty name="conhelper" property="console" />
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -2,20 +2,14 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - statistics</title>
|
||||
<html><head><title>I2P Router Console - statistics</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
|
||||
<jsp:useBean class="net.i2p.router.web.OldConsoleHelper" id="oldhelper" scope="request" />
|
||||
<jsp:setProperty name="oldhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:setProperty name="oldhelper" property="writer" value="<%=out%>" />
|
||||
<h1>I2P Router Statistics</h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:getProperty name="oldhelper" property="stats" />
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -2,13 +2,11 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - peer connections</title>
|
||||
<html><head><title>I2P Router Console - peer connections</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Network Peers</h1>
|
||||
<h1>I2P Network Peers</h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:useBean class="net.i2p.router.web.PeerHelper" id="peerHelper" scope="request" />
|
||||
<jsp:setProperty name="peerHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
@ -16,7 +14,4 @@
|
||||
<jsp:setProperty name="peerHelper" property="urlBase" value="peers.jsp" />
|
||||
<jsp:setProperty name="peerHelper" property="sort" value="<%=request.getParameter("sort") != null ? request.getParameter("sort") : ""%>" />
|
||||
<jsp:getProperty name="peerHelper" property="peerSummary" />
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -2,21 +2,15 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - peer profiles</title>
|
||||
<html><head><title>I2P Router Console - peer profiles</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Network Peer Profiles</h1>
|
||||
</head><body><%@include file="summary.jsp" %>
|
||||
<h1>I2P Network Peer Profiles</h1>
|
||||
<div class="main" id="main"><div class="wideload">
|
||||
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
|
||||
<jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:getProperty name="profilesHelper" property="profileSummary" />
|
||||
<hr />
|
||||
<br>
|
||||
<a name="shitlist"> </a>
|
||||
<jsp:getProperty name="profilesHelper" property="shitlistSummary" />
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div></div></body></html>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<% // put width here too to prevent bad layout at startup %>
|
||||
|
||||
<div class="routersummaryouter" style="width: 200px;">
|
||||
<% // let's remove that for now since we're no longer using percentage width here %>
|
||||
<div class="routersummaryouter">
|
||||
<%
|
||||
// skip the iframe if refresh disabled
|
||||
String d = request.getParameter("refresh");
|
||||
@ -11,7 +11,7 @@
|
||||
// pass the new delay parameter to the iframe
|
||||
newDelay = "?refresh=" + d;
|
||||
if (!"0".equals(d))
|
||||
out.print("<iframe src=\"summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"100%\" scrolling=\"auto\" frameborder=\"0\" allowtransparency=\"true\">\n");
|
||||
out.print("<iframe src=\"summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\n");
|
||||
%>
|
||||
<div class="routersummary">
|
||||
<%@include file="summarynoframe.jsp" %>
|
||||
@ -22,10 +22,10 @@
|
||||
} else {
|
||||
// since we don't have an iframe this will reload the base page, and
|
||||
// the new delay will be passed to the iframe above
|
||||
out.print("<hr /><p><center><form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n");
|
||||
out.print("<form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n");
|
||||
out.print("<b>Refresh (s):</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" />\n");
|
||||
out.print("<button type=\"submit\">Enable</button>\n");
|
||||
out.print("</form></center></p></div>\n");
|
||||
out.print("</form></div>\n");
|
||||
}
|
||||
%>
|
||||
</div>
|
||||
|
@ -49,16 +49,12 @@
|
||||
}
|
||||
}
|
||||
%>
|
||||
</head>
|
||||
|
||||
<body style="margin: 0;">
|
||||
|
||||
<div class="routersummary">
|
||||
</head><body style="margin: 0;"><div class="routersummary">
|
||||
<%@include file="summarynoframe.jsp" %>
|
||||
<%
|
||||
// d and shutdownSoon defined above
|
||||
if (!shutdownSoon) {
|
||||
out.print("<hr /><p><form action=\"summaryframe.jsp\" method=\"GET\">\n");
|
||||
out.print("<hr><form action=\"summaryframe.jsp\" method=\"GET\">\n");
|
||||
if ("0".equals(d)) {
|
||||
out.print("<b>Refresh (s):<b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" align=\"right\" />\n");
|
||||
out.print("<button type=\"submit\">Enable</button>\n");
|
||||
@ -67,10 +63,7 @@
|
||||
out.print("<input type=\"hidden\" name=\"refresh\" value=\"0\" />\n");
|
||||
out.print("<button type=\"submit\">Disable " + d + "s Refresh</button>\n");
|
||||
}
|
||||
out.print("</form></p><hr />\n");
|
||||
out.print("</form><hr>\n");
|
||||
}
|
||||
%>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -12,7 +12,7 @@
|
||||
<jsp:useBean class="net.i2p.router.web.UpdateHandler" id="update" scope="request" />
|
||||
<jsp:setProperty name="update" property="*" />
|
||||
<jsp:setProperty name="update" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<a href="index.jsp" target="_top"><img src="/themes/console/images/i2plogo.png" alt="I2P Router Console" title="I2P Router Console"/></a><hr />
|
||||
<a href="index.jsp" target="_top"><img src="/themes/console/images/i2plogo.png" alt="I2P Router Console" title="I2P Router Console"></a><hr>
|
||||
<% java.io.File lpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/toolbar.html");
|
||||
// you better have target="_top" for the links in there...
|
||||
if (lpath.exists()) { %>
|
||||
@ -21,17 +21,14 @@
|
||||
<jsp:setProperty name="linkhelper" property="maxLines" value="100" />
|
||||
<jsp:getProperty name="linkhelper" property="content" />
|
||||
<% } else { %>
|
||||
<h3><a href="/configclients.jsp" target="_top" title="Configure startup of clients and webapps (services); manually start dormant services.">I2P Services</a></h3><hr>
|
||||
<table>
|
||||
<tr>
|
||||
<td><a href="susidns/index.jsp" target="_blank" title="Manage your I2P hosts file here (I2P domain name resolution).">Addressbook</a>
|
||||
<h3><a href="/configclients.jsp" target="_top" title="Configure startup of clients and webapps (services); manually start dormant services.">I2P Services</a></h3>
|
||||
<hr><table>
|
||||
<tr><td><a href="susidns/index.jsp" target="_blank" title="Manage your I2P hosts file here (I2P domain name resolution).">Addressbook</a>
|
||||
<a href="i2psnark/" target="_blank" title="Built-in anonymous BitTorrent Client">Torrents</a>
|
||||
<a href="susimail/susimail" target="blank" title="Anonymous webmail client.">Webmail</a>
|
||||
<a href="http://127.0.0.1:7658/" target="_blank" title="Anonymous resident webserver.">Webserver</a></td>
|
||||
</tr></table><hr>
|
||||
<h3><a href="config.jsp" target="_top" title="Configure I2P Router.">I2P Internals</a></h3><hr>
|
||||
<table><tr>
|
||||
<td>
|
||||
<a href="http://127.0.0.1:7658/" target="_blank" title="Anonymous resident webserver.">Webserver</a></td></tr></table>
|
||||
<hr><h3><a href="config.jsp" target="_top" title="Configure I2P Router.">I2P Internals</a></h3><hr>
|
||||
<table><tr><td>
|
||||
<a href="tunnels.jsp" target="_top" title="View existing tunnels and tunnel build status.">Tunnels</a>
|
||||
<a href="peers.jsp" target="_top" title="Show all current peer connections.">Peers</a>
|
||||
<a href="profiles.jsp" target="_top" title="Show recent peer performance profiles.">Profiles</a>
|
||||
@ -39,24 +36,18 @@
|
||||
<a href="logs.jsp" target="_top" title="Health Report.">Logs</a>
|
||||
<a href="jobs.jsp" target="_top" title="Show the router's workload, and how it's performing.">Jobs</a>
|
||||
<a href="graphs.jsp" target="_top" title="Graph router performance.">Graphs</a>
|
||||
<a href="oldstats.jsp" target="_top" title="Textual router performance statistics.">Stats</a>
|
||||
</td></tr></table>
|
||||
<a href="oldstats.jsp" target="_top" title="Textual router performance statistics.">Stats</a></td></tr></table>
|
||||
<% } %>
|
||||
<hr>
|
||||
<h3><a href="help.jsp" target="_top" title="I2P Router Help.">General</a></h3><hr>
|
||||
<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>
|
||||
<table><tr>
|
||||
<td align="left">
|
||||
<hr><h3><a href="help.jsp" target="_top" title="I2P Router Help.">General</a></h3><hr>
|
||||
<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>
|
||||
<table><tr><td align="left">
|
||||
<b>Version:</b></td>
|
||||
<td align="right"><jsp:getProperty name="helper" property="version" /></td></tr>
|
||||
<tr title="How long we've been running for this session.">
|
||||
<td align="left">
|
||||
<b>Uptime:</b></td>
|
||||
<td align="right"><jsp:getProperty name="helper" property="uptime" /></td></tr></table>
|
||||
<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>
|
||||
<td align="left"><b>Uptime:</b></td>
|
||||
<td align="right"><jsp:getProperty name="helper" property="uptime" />
|
||||
</td></tr></table>
|
||||
<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>
|
||||
<%
|
||||
if (helper.updateAvailable() || helper.unsignedUpdateAvailable()) {
|
||||
// display all the time so we display the final failure message
|
||||
@ -71,26 +62,27 @@
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+"");
|
||||
String uri = request.getRequestURI();
|
||||
out.print("<p><form action=\"" + uri + "\" method=\"GET\">\n");
|
||||
out.print("<form action=\"" + uri + "\" method=\"GET\">\n");
|
||||
out.print("<input type=\"hidden\" name=\"updateNonce\" value=\"" + nonce + "\" />\n");
|
||||
if (helper.updateAvailable())
|
||||
out.print("<button type=\"submit\" name=\"updateAction\" value=\"signed\" >Download " + helper.getUpdateVersion() + " Update</button>\n");
|
||||
if (helper.unsignedUpdateAvailable())
|
||||
out.print("<button type=\"submit\" name=\"updateAction\" value=\"Unsigned\" >Download Unsigned<br>Update " + helper.getUnsignedUpdateVersion() + "</button>\n");
|
||||
out.print("</form></p>\n");
|
||||
out.print("</form>\n");
|
||||
}
|
||||
}
|
||||
%>
|
||||
<p>
|
||||
<%=net.i2p.router.web.ConfigRestartBean.renderStatus(request.getRequestURI(), request.getParameter("action"), request.getParameter("consoleNonce"))%>
|
||||
</p>
|
||||
<hr />
|
||||
<h3><a href="peers.jsp" target="_top" title="Show all current peer connections.">Peers</a></h3><hr><table>
|
||||
</p><hr><h3><a href="peers.jsp" target="_top" title="Show all current peer connections.">Peers</a></h3><hr>
|
||||
<table>
|
||||
<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>
|
||||
<tr><td align="left"><b>Fast:</b></td><td align="right"><jsp:getProperty name="helper" property="fastPeers" /></td></tr>
|
||||
<tr><td align="left"><b>High capacity:</b></td><td align="right"><jsp:getProperty name="helper" property="highCapacityPeers" /></td></tr>
|
||||
<tr><td align="left"><b>Integrated:</b></td><td align="right"><jsp:getProperty name="helper" property="wellIntegratedPeers" /></td></tr>
|
||||
<tr><td align="left"><b>Known:</b></td><td align="right"><jsp:getProperty name="helper" property="allPeers" /></td></tr></table><hr><%
|
||||
<tr><td align="left"><b>Known:</b></td><td align="right"><jsp:getProperty name="helper" property="allPeers" /></td></tr>
|
||||
</table><hr>
|
||||
<%
|
||||
if (helper.showFirewallWarning()) {
|
||||
%><h4><a href="config.jsp" target="_top" title="Help with firewall configuration.">Check NAT/firewall</a></h4><%
|
||||
}
|
||||
@ -99,7 +91,7 @@
|
||||
if (helper.allowReseed()) {
|
||||
if (reseedInProgress) {
|
||||
// While reseed occurring, show status message instead
|
||||
out.print("<i>" + System.getProperty("net.i2p.router.web.ReseedHandler.statusMessage","") + "</i><br />");
|
||||
out.print("<i>" + System.getProperty("net.i2p.router.web.ReseedHandler.statusMessage","") + "</i><br>");
|
||||
} else {
|
||||
// While no reseed occurring, show reseed link
|
||||
long nonce = new java.util.Random().nextLong();
|
||||
@ -107,38 +99,34 @@
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.ReseedHandler.noncePrev", prev);
|
||||
System.setProperty("net.i2p.router.web.ReseedHandler.nonce", nonce+"");
|
||||
String uri = request.getRequestURI();
|
||||
out.print("<p><form action=\"" + uri + "\" method=\"GET\">\n");
|
||||
out.print("<form action=\"" + uri + "\" method=\"GET\">\n");
|
||||
out.print("<input type=\"hidden\" name=\"reseedNonce\" value=\"" + nonce + "\" />\n");
|
||||
out.print("<button type=\"submit\" >Reseed</button></form></p>\n");
|
||||
out.print("<button type=\"submit\" >Reseed</button></form>\n");
|
||||
}
|
||||
}
|
||||
// If a new reseed ain't running, and the last reseed had errors, show error message
|
||||
if (!reseedInProgress) {
|
||||
String reseedErrorMessage = System.getProperty("net.i2p.router.web.ReseedHandler.errorMessage","");
|
||||
if (reseedErrorMessage.length() > 0) {
|
||||
out.print("<i>" + reseedErrorMessage + "</i><br />");
|
||||
out.print("<i>" + reseedErrorMessage + "</i><br>");
|
||||
}
|
||||
}
|
||||
%><hr />
|
||||
<h3><a href="config.jsp" title="Configure router bandwidth allocation." target="_top">Bandwidth in/out</a></h3><hr>
|
||||
%>
|
||||
<hr><h3><a href="config.jsp" title="Configure router bandwidth allocation." target="_top">Bandwidth in/out</a></h3><hr>
|
||||
<table>
|
||||
<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>
|
||||
<tr><td align="left"><b>5m:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundFiveMinuteKBps" />/<jsp:getProperty name="helper" property="outboundFiveMinuteKBps" />K/s</td></tr>
|
||||
<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>
|
||||
<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>
|
||||
<hr>
|
||||
<h3><a href="tunnels.jsp" target="_blank" title="View existing tunnels and tunnel build status.">Tunnels in/out</a></h3><hr>
|
||||
<table><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>
|
||||
<hr><h3><a href="tunnels.jsp" target="_top" title="View existing tunnels and tunnel build status.">Tunnels in/out</a></h3><hr>
|
||||
<table>
|
||||
<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>
|
||||
<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>
|
||||
<tr><td align="left"><b>Participating:</b></td><td align="right"><jsp:getProperty name="helper" property="participatingTunnels" /></td></tr></table>
|
||||
<hr>
|
||||
<h3><a href="/oldstats.jsp#JobQueue" target="_top" title="What's in the router's job queue?">Congestion</a></h3><hr>
|
||||
<table><tr>
|
||||
<td align="left"><b>Job lag:</b></td><td align="right"><jsp:getProperty name="helper" property="jobLag" /></td></tr>
|
||||
<tr><td align="left"><b>Participating:</b></td><td align="right"><jsp:getProperty name="helper" property="participatingTunnels" /></td></tr>
|
||||
</table><hr><h3><a href="/jobs.jsp" target="_top" title="What's in the router's job queue?">Congestion</a></h3><hr>
|
||||
<table>
|
||||
<tr><td align="left"><b>Job lag:</b></td><td align="right"><jsp:getProperty name="helper" property="jobLag" /></td></tr>
|
||||
<tr><td align="left"><b>Message delay:</b></td><td align="right"><jsp:getProperty name="helper" property="messageDelay" /></td></tr>
|
||||
<tr><td align="left"><b>Tunnel lag:</b></td><td align="right"><jsp:getProperty name="helper" property="tunnelLag" /></td></tr>
|
||||
<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.">
|
||||
<hr><h4><jsp:getProperty name="helper" property="tunnelStatus" /></h4>
|
||||
<hr>
|
||||
<jsp:getProperty name="helper" property="destinations" />
|
||||
<tr><td align="left"><b>Backlog:</b></td><td align="right"><jsp:getProperty name="helper" property="inboundBacklog" /></td></tr>
|
||||
</table><hr><h4><jsp:getProperty name="helper" property="tunnelStatus" /></h4><hr><jsp:getProperty name="helper" property="destinations" />
|
||||
|
@ -2,19 +2,13 @@
|
||||
<%@page pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
|
||||
<html><head>
|
||||
<title>I2P Router Console - tunnel summary</title>
|
||||
<html><head><title>I2P Router Console - tunnel summary</title>
|
||||
<%@include file="css.jsp" %>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsp" %>
|
||||
<h1>I2P Tunnel Summary</h1>
|
||||
<%@include file="summary.jsp" %><h1>I2P Tunnel Summary</h1>
|
||||
<div class="main" id="main">
|
||||
<jsp:useBean class="net.i2p.router.web.TunnelHelper" id="tunnelHelper" scope="request" />
|
||||
<jsp:setProperty name="tunnelHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<jsp:setProperty name="tunnelHelper" property="writer" value="<%=out%>" />
|
||||
<jsp:getProperty name="tunnelHelper" property="tunnelSummary" />
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</div></body></html>
|
||||
|
@ -8,7 +8,7 @@ import net.i2p.util.Log;
|
||||
* connection was reset.</p>
|
||||
*
|
||||
* <h2>Entry conditions:</h2><ul>
|
||||
* <li>Both sides have closed and ACKed and the timeout has passed. <br />
|
||||
* <li>Both sides have closed and ACKed and the timeout has passed. <br>
|
||||
* <b>or</b></li>
|
||||
* <li>A RESET was received</li>
|
||||
* </ul>
|
||||
|
@ -536,9 +536,9 @@ public class TransientSessionKeyManager extends SessionKeyManager {
|
||||
Set<OutboundSession> outbound = getOutboundSessions();
|
||||
for (Iterator<OutboundSession> iter = outbound.iterator(); iter.hasNext();) {
|
||||
OutboundSession sess = iter.next();
|
||||
buf.append("<tr><td><b>Target key:</b> ").append(sess.getTarget().toString()).append("<br />");
|
||||
buf.append("<b>Established:</b> ").append(new Date(sess.getEstablishedDate())).append("<br />");
|
||||
buf.append("<b>Last Used:</b> ").append(new Date(sess.getLastUsedDate())).append("<br />");
|
||||
buf.append("<tr><td><b>Target key:</b> ").append(sess.getTarget().toString()).append("<br>");
|
||||
buf.append("<b>Established:</b> ").append(new Date(sess.getEstablishedDate())).append("<br>");
|
||||
buf.append("<b>Last Used:</b> ").append(new Date(sess.getLastUsedDate())).append("<br>");
|
||||
buf.append("<b># Sets:</b> ").append(sess.getTagSets().size()).append("</td></tr>");
|
||||
buf.append("<tr><td><b>Session key:</b> ").append(sess.getCurrentKey().toBase64()).append("</td></tr>");
|
||||
buf.append("<tr><td><ul>");
|
||||
|
17
history.txt
17
history.txt
@ -1,3 +1,20 @@
|
||||
2009-08-19 sponge
|
||||
* Java code to set Router Console password for dr|z3d
|
||||
|
||||
2009-08-18 dr|z3d
|
||||
* Fixes for sidepanel
|
||||
* Overhauled classic theme for i2ptunnels
|
||||
* First stage of code validation to fix broken and "illegal" code
|
||||
* Multifarious other UI tweaks and fiddles.
|
||||
|
||||
2009-08-15 sponge
|
||||
* Merge in dr|z3d and my own html fixes for router console java and jsp
|
||||
files so that Opera (and now IE?) doesn't puke anymore on the missing
|
||||
and misplaced HTML tags.
|
||||
* Optimized all jsp files so that they are shorter to save space, which
|
||||
is then used to fix the broken HTML. We should break even space-wise.
|
||||
* Bump to -13.
|
||||
|
||||
2009-08-11 sponge
|
||||
* Code Janitor time! Many fixes and documenting fixes that should be
|
||||
done in the future. for the most part, this is a general code cleanup.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Optimised for less capable browers and system specifications */
|
||||
/* Optimised for less capable browsers and system specifications */
|
||||
|
||||
body {
|
||||
margin: 2px 0 0 2px;
|
||||
@ -20,7 +20,8 @@ img {
|
||||
pre {
|
||||
overflow: auto;
|
||||
font-size: 8pt !important;
|
||||
width: 100%;
|
||||
width: 95%;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
div.logo {
|
||||
@ -110,7 +111,7 @@ div.toolbar {
|
||||
|
||||
div.routersummaryouter {
|
||||
float: left;
|
||||
width: 205px;
|
||||
width: 200px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
@ -119,7 +120,7 @@ div.routersummaryouter {
|
||||
|
||||
div.routersummary {
|
||||
background: #ddf;
|
||||
width: 190px;
|
||||
width: 185px;
|
||||
color: inherit;
|
||||
margin: 0;
|
||||
padding: 7px 1px;
|
||||
@ -171,7 +172,7 @@ div.routersummary h4 {
|
||||
div.routersummary table {
|
||||
border: 0;
|
||||
text-align: center !important;
|
||||
margin: -5px 5px;
|
||||
margin: -5px 5px -5px 2px;
|
||||
width: 180px !important;
|
||||
overflow: hidden;
|
||||
font-size: 8pt;
|
||||
@ -225,7 +226,7 @@ div.warning h3 {
|
||||
}
|
||||
|
||||
div.main {
|
||||
margin: 0px 0px 0px 196px;
|
||||
margin: 0px 0px 0px 195px;
|
||||
padding: 15px 15px 15px 15px;
|
||||
background: #eef;
|
||||
border: 5px solid #bbf;
|
||||
@ -251,7 +252,7 @@ div.main textarea {
|
||||
}
|
||||
|
||||
div.news {
|
||||
margin: -5px 0px 0 196px;
|
||||
margin: -5px 0px 0 195px;
|
||||
padding: -10px 15px 8px 15px;
|
||||
background: #ffffc0;
|
||||
border: 5px solid #bbf;
|
||||
@ -271,7 +272,7 @@ div.news li {
|
||||
list-style: none;
|
||||
margin: -15px 15px -20px -20px;
|
||||
padding: 0px 0 15px 0;
|
||||
border-bottom: 2px solid #cc7;
|
||||
border-bottom: 5px solid #cc7;
|
||||
border-top: 0px solid #cc7;
|
||||
padding: 3px 5px 5px 5px;
|
||||
font-size: 12pt;
|
||||
@ -358,7 +359,7 @@ h1 {
|
||||
text-align: center;
|
||||
border: 5px solid #bbf;
|
||||
padding: 13px 10px 12px 10px;
|
||||
margin: 0 0px 0 196px;
|
||||
margin: 0 0px 0 195px;
|
||||
line-height: 93%;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.3em;
|
||||
|
@ -1,182 +1,204 @@
|
||||
body {
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
text-align : center;
|
||||
font-family : Arial, Helvetica, sans-serif;
|
||||
background-color : #ffffff;
|
||||
color : #000000;
|
||||
font-size : 100%;
|
||||
|
||||
/* we've avoided Tantek Hacks so far,
|
||||
** but we can't avoid using the non-w3c method of
|
||||
** box rendering. (and therefore one of mozilla's
|
||||
** proprietry -moz properties (which hopefully they'll
|
||||
** drop soon).
|
||||
*/
|
||||
-moz-box-sizing : border-box;
|
||||
box-sizing : border-box;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
text-align: center;
|
||||
font: 10pt/140% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
background: #bbf;
|
||||
color: #000;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
div {
|
||||
-moz-box-sizing : border-box;
|
||||
box-sizing : border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
h4, label {
|
||||
margin : 0px;
|
||||
padding : 2px;
|
||||
float : left;
|
||||
width : 150px;
|
||||
height : 24px;
|
||||
font-weight : bold;
|
||||
text-align : right;
|
||||
font-size : 1.0em;
|
||||
margin: 0px;
|
||||
padding: 2px;
|
||||
float: left;
|
||||
width: 150px;
|
||||
height: 24px;
|
||||
font-weight: normal;
|
||||
text-align: right;
|
||||
font-size: 8.5pt;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing : border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size : 1.2em;
|
||||
text-align : center;
|
||||
width : 750px;
|
||||
font-size: 10.5pt;
|
||||
text-align: center !important;
|
||||
font-weight: bold;
|
||||
border: 1px solid #77f;
|
||||
border-top: 2px solid #77f;
|
||||
margin: -6px 0 5px -10px !important;
|
||||
padding: 5px 10px 25px 10px;
|
||||
background: #fff;
|
||||
text-shadow: 0px 0px 1px rgba(32, 32, 192, 0.3);
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
width: 782px;
|
||||
letter-spacing: 0.09em;
|
||||
}
|
||||
|
||||
label {
|
||||
font-style: italic;
|
||||
margin: 0 3px 0 -3px;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration : none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
form {
|
||||
margin : 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
textarea, input, select, button, a {
|
||||
font-family : Arial, Helvetica, sans-serif;
|
||||
-moz-box-sizing : border-box;
|
||||
box-sizing : border-box;
|
||||
font-size : 1.0em;
|
||||
float : left;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
font: 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
|
||||
float: left;
|
||||
margin: 2px 0 5px 0;
|
||||
}
|
||||
|
||||
button {
|
||||
float : none;
|
||||
float: none;
|
||||
height: 20px !important;
|
||||
}
|
||||
|
||||
textarea {
|
||||
border : 1px solid #ddddc0;
|
||||
border: 1px solid #ddddc0;
|
||||
}
|
||||
|
||||
br {
|
||||
clear : left;
|
||||
clear: left;
|
||||
}
|
||||
|
||||
div.statusNotRunning {
|
||||
float : left;
|
||||
width : 82px;
|
||||
height : 24px;
|
||||
color : #dd0000;
|
||||
float: left;
|
||||
width: 82px;
|
||||
height: 24px;
|
||||
color: #d00;
|
||||
}
|
||||
|
||||
div.statusRunning {
|
||||
float : left;
|
||||
width : 82px;
|
||||
height : 24px;
|
||||
color : #00dd00;
|
||||
float: left;
|
||||
width: 82px;
|
||||
height: 24px;
|
||||
color: #0d0;
|
||||
}
|
||||
|
||||
div.statusStarting {
|
||||
float : left;
|
||||
width : 82px;
|
||||
height : 24px;
|
||||
color : #339933;
|
||||
float: left;
|
||||
width: 82px;
|
||||
height: 24px;
|
||||
color: #393;
|
||||
}
|
||||
|
||||
hr {
|
||||
display : none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.separator, .subdivider {
|
||||
clear : both;
|
||||
height : 1px;
|
||||
margin : 3px 0px 3px 0px;
|
||||
border-bottom : 1px solid #ddddc0;
|
||||
clear: both;
|
||||
height: 1px;
|
||||
margin: 5px -8px 5px -8px;
|
||||
border-bottom: 1px solid #aaf;
|
||||
}
|
||||
|
||||
.subdivider {
|
||||
border-bottom : 1px dashed #ddddc0;
|
||||
border-bottom: 1px dotted #aaf;
|
||||
margin: 0 0 10px 0;
|
||||
}
|
||||
|
||||
.freetext {
|
||||
width : 150px;
|
||||
height : 22px;
|
||||
border : 1px solid #aaaac0;
|
||||
width: 150px;
|
||||
height: 22px;
|
||||
border: 1px solid #aaf;
|
||||
}
|
||||
|
||||
.control {
|
||||
margin : 0 4px 0 0;
|
||||
padding : 0 0 4px 0;
|
||||
overflow : hidden;
|
||||
height : 20px;
|
||||
width : 60px;
|
||||
font-weight : normal;
|
||||
background-color : #dddddd;
|
||||
color : black;
|
||||
border : 1px outset #ddddc0;
|
||||
text-align : center;
|
||||
white-space : nowrap;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
overflow: hidden;
|
||||
height: 20px;
|
||||
width: 60px;
|
||||
font-weight: bold;
|
||||
background: #ddd;
|
||||
color: #000;
|
||||
border: 1px outset #ddddc0;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.control:hover {
|
||||
background-color : #ffffed;
|
||||
background: #229;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.control:active {
|
||||
border : 2px inset;
|
||||
border: 2px inset;
|
||||
}
|
||||
|
||||
.panel {
|
||||
width : 760px;
|
||||
margin : 16px auto 16px auto;
|
||||
overflow : hidden;
|
||||
text-align : left;
|
||||
font-size : 0.8em;
|
||||
background-color : #ffffef;
|
||||
border : 4px solid #ffffd0;
|
||||
width: 790px;
|
||||
margin: 16px auto 16px auto;
|
||||
padding: 5px 10px;
|
||||
overflow: hidden;
|
||||
text-align: left;
|
||||
font-size: 8pt;
|
||||
background: #eef;
|
||||
border: 4px solid #77f;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #99f;
|
||||
}
|
||||
|
||||
.panel .footer {
|
||||
float : right;
|
||||
padding : 4px;
|
||||
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.toolbox {
|
||||
float : right;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.rowItem {
|
||||
width : 750px;
|
||||
float : left;
|
||||
margin : 0px;
|
||||
width: 750px;
|
||||
float: left;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.comment {
|
||||
font-style : italic;
|
||||
font-style: italic;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.text {
|
||||
height : 24px;
|
||||
width : 150px;
|
||||
padding : 2px 0 0 2px;
|
||||
float : left;
|
||||
margin : 0;
|
||||
height: 24px;
|
||||
width: 150px;
|
||||
padding: 2px 0 0 2px;
|
||||
float: left;
|
||||
margin: 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.accessKey {
|
||||
text-decoration : underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#globalOperationsPanel {
|
||||
background-color : #ffefef;
|
||||
border : 4px solid #ffd0d0;
|
||||
background: #eef;
|
||||
border: 4px solid #77f;
|
||||
-moz-box-shadow: inset 0px 0px 0px 1px #900;
|
||||
padding: 5px 5px 10px 5px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#globalOperationsPanel .control {
|
||||
width : 100px;
|
||||
width: 100px !important;
|
||||
margin-top: 3px;
|
||||
float: right;
|
||||
}
|
@ -110,9 +110,11 @@
|
||||
}
|
||||
|
||||
#tunnelListPage textarea {
|
||||
width : 750px;
|
||||
height : 100px;
|
||||
width : 100%;
|
||||
height : 88px;
|
||||
padding : 0 0 0 4px;
|
||||
color: green;
|
||||
margin-bottom: 7px;
|
||||
}
|
||||
|
||||
#tunnelListPage .footer .control {
|
||||
|
@ -122,7 +122,7 @@ div.routersummary hr {
|
||||
div.routersummary h3 {
|
||||
border: 0px solid #f00;
|
||||
text-align: center !important;
|
||||
font-size: 10pt;
|
||||
font-size: 9pt;
|
||||
letter-spacing: 0.05em;
|
||||
margin: -14px 0px -15px 1px;
|
||||
padding: 5px 0px 5px 0px;
|
||||
@ -133,7 +133,7 @@ div.routersummary h3 {
|
||||
div.routersummary h4 {
|
||||
border: 0px solid #f00;
|
||||
border-bottom: 0 !important;
|
||||
font-size: 9pt;
|
||||
font-size: 8.5pt;
|
||||
letter-spacing: 0.05em;
|
||||
margin: -14px 0px -15px 1px !important;
|
||||
padding: 2px 3px 3px 3px;
|
||||
@ -154,6 +154,7 @@ div.routersummary table {
|
||||
padding: 0px -10px;
|
||||
background-image: none !important;
|
||||
background-color: transparent !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
div.routersummary tr {
|
||||
@ -172,10 +173,12 @@ div.routersummary p {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
div.routersummary img {
|
||||
margin: 5px -10px -5px -10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
*/
|
||||
|
||||
div.routersummary a:link, div.routersummary a:visited {
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.3);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Not yet complete. Subject to flux and change. dr|z3d - 07.25.09 */
|
||||
|
||||
body {
|
||||
margin: 25px 10px 0 5px;
|
||||
margin: 20px 5px 0 15px;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
background: #002;
|
||||
@ -79,7 +79,7 @@ a:active{
|
||||
div.routersummaryouter {
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin: 0 0 10px 20px;
|
||||
margin: 0 0 10px 5px;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
clear: left;/* fixes a bug in Opera */
|
||||
@ -125,7 +125,7 @@ div.routersummary hr {
|
||||
div.routersummary h3 {
|
||||
border: 0;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0.05em;
|
||||
letter-spacing: 0.04em;
|
||||
margin: -7px -9px -10px -9px;
|
||||
padding: 3px 0px 5px 0px;
|
||||
background: #007;
|
||||
@ -140,8 +140,8 @@ div.routersummary h3 {
|
||||
div.routersummary h4 {
|
||||
border: 0;
|
||||
border-bottom: 0 !important;
|
||||
font-size: 9pt;
|
||||
letter-spacing: 0.05em;
|
||||
font-size: 8.5pt;
|
||||
letter-spacing: 0.03em;
|
||||
margin: -7px -9px -10px -9px !important;
|
||||
padding: 2px 3px 5px 3px;
|
||||
background: #005;
|
||||
@ -154,7 +154,7 @@ div.routersummary h4 {
|
||||
div.routersummary table {
|
||||
border: 0;
|
||||
text-align: center !important;
|
||||
margin: -5px -5px;
|
||||
margin: -1px -4px -4px -4px;
|
||||
width: 185px !important;
|
||||
overflow: hidden;
|
||||
font-size: 8pt;
|
||||
@ -178,7 +178,7 @@ div.routersummary p {
|
||||
}
|
||||
|
||||
div.routersummary a:link, div.routersummary a:visited {
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.3);
|
||||
text-shadow: 0px 0px 1px rgba(192, 192, 255, 0.5);
|
||||
}
|
||||
|
||||
div.routersummary a:hover {
|
||||
@ -224,7 +224,7 @@ div.warning {
|
||||
}
|
||||
|
||||
div.main {
|
||||
margin: 0px 0px 20px 215px;
|
||||
margin: 0px 0px 20px 195px;
|
||||
padding: 0 15px 15px 25px;
|
||||
background: #002;
|
||||
text-align: left;
|
||||
@ -240,7 +240,7 @@ div.main textarea {
|
||||
}
|
||||
|
||||
div.news {
|
||||
margin: 0px 15px 20px 240px;
|
||||
margin: 0px 15px 20px 220px;
|
||||
padding: 20px 30px 20px 30px;
|
||||
border: 1px solid #99f;
|
||||
background: #004;
|
||||
@ -266,7 +266,7 @@ div.news li {
|
||||
|
||||
div.confignav {
|
||||
padding: 15px 10px !important;
|
||||
margin: 0 0 25px 0;
|
||||
margin: 0 0 15px 0;
|
||||
background: #004 url('images/darkbluebg.png');
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
@ -325,7 +325,7 @@ div.messages li {
|
||||
}
|
||||
|
||||
div.graphspanel {
|
||||
padding: 15px 15px 15px 15px;
|
||||
padding: 15px;
|
||||
margin: 10px 0px;
|
||||
background: #005;
|
||||
-moz-border-radius: 4px;
|
||||
@ -336,6 +336,12 @@ div.graphspanel {
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.graphspanel form {
|
||||
text-align: left;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
div.graphspanel img {
|
||||
@ -347,7 +353,7 @@ div.graphspanel img {
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
opacity: 0.9;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
div.graphspanel img:hover {
|
||||
@ -361,6 +367,7 @@ div.graphspanel img:hover {
|
||||
box-shadow: inset 0px 0px 1px 1px #f60;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
@ -497,7 +504,7 @@ h1 {
|
||||
text-align: left;
|
||||
color: #fff;
|
||||
padding: 10px 15px;
|
||||
margin: 0 15px 25px 240px;
|
||||
margin: 0 15px 15px 220px;
|
||||
font-size: 16pt;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
@ -529,7 +536,7 @@ h2 {
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
vertical-align: middle;
|
||||
margin: 25px 0 20px 0 !important;
|
||||
margin: 15px 0 10px 0 !important;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
-khtml-box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
box-shadow: inset 0px 0px 1px 0px #eef;
|
||||
@ -757,8 +764,8 @@ form {}
|
||||
}
|
||||
|
||||
.joblog {
|
||||
margin: 25px 0 25px 0;
|
||||
padding: 20px 30px 20px 30px !important;
|
||||
margin: 15px 0 15px 0;
|
||||
padding: 20px !important;
|
||||
border: 1px solid #99f;
|
||||
background-color: #004;
|
||||
background: url("images/darkbluebg.png");
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 512 B After Width: | Height: | Size: 563 B |
Binary file not shown.
Before Width: | Height: | Size: 514 B After Width: | Height: | Size: 597 B |
Binary file not shown.
Before Width: | Height: | Size: 579 B After Width: | Height: | Size: 640 B |
@ -119,21 +119,21 @@ div.routersummary hr {
|
||||
}
|
||||
|
||||
div.routersummary h3 {
|
||||
border: 0px solid #f00;
|
||||
/* border-bottom: 1px solid #99f !important;*/
|
||||
border: 0;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0.05em;
|
||||
letter-spacing: 0.04em;
|
||||
margin: -7px -9px -7px -9px;
|
||||
padding: 5px 0px 5px 0px;
|
||||
background: #c5d5fb;
|
||||
text-transform: uppercase;
|
||||
background-image: -moz-linear-gradient(top, bottom, from(#ddf), to(#c5d5fb), color-stop(25%, #c5d5fb), color-stop(100%, #ddf));
|
||||
}
|
||||
|
||||
div.routersummary h4 {
|
||||
border: 0px solid #f00;
|
||||
border-bottom: 0 !important;
|
||||
font-size: 9pt;
|
||||
letter-spacing: 0.05em;
|
||||
font-size: 8.5pt;
|
||||
letter-spacing: 0.02em;
|
||||
margin: -7px -9px -7px -9px !important;
|
||||
padding: 2px 3px 3px 3px;
|
||||
background: #c1d1f7;
|
||||
@ -145,7 +145,7 @@ div.routersummary h4 {
|
||||
div.routersummary table {
|
||||
border: 0;
|
||||
text-align: center !important;
|
||||
margin: -5px -5px;
|
||||
margin: -2px -4px;
|
||||
width: 185px !important;
|
||||
overflow: hidden;
|
||||
font-size: 8pt;
|
||||
@ -169,11 +169,11 @@ div.routersummary p {
|
||||
}
|
||||
|
||||
div.routersummary a:link, div.routersummary a:visited {
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.3);
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.5);
|
||||
}
|
||||
|
||||
div.routersummary a:hover {
|
||||
text-shadow: 0px 0px 1px rgba(255, 96, 0, 0.7);
|
||||
text-shadow: 0px 0px 0.5px rgba(255, 255, 255, 0.7);
|
||||
color: #f60;
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ body {
|
||||
color: #f30;
|
||||
border-bottom: 3px solid #f30;
|
||||
border-top: 3px solid #f30;
|
||||
text-shadow: 0px 0px 1px rgba(255, 163, 0, 0.9);
|
||||
text-shadow: 0px 0px 1px rgba(255, 32, 0, 0.5);
|
||||
}
|
||||
|
||||
.snarkMessages {
|
||||
@ -95,7 +95,7 @@ th {
|
||||
border-top: 1px outset #001;
|
||||
border-bottom: 1px inset #001;
|
||||
background: #f60 url('/themes/console/images/tabletitleorange.png') repeat-x;
|
||||
text-align: right;
|
||||
/* text-align: right; */
|
||||
whitespace: nowrap;
|
||||
}
|
||||
|
||||
@ -107,7 +107,7 @@ th {
|
||||
|
||||
td {
|
||||
padding: 5px;
|
||||
text-align: right;
|
||||
/* text-align: right;*/
|
||||
}
|
||||
.snarkTorrentEven {
|
||||
background-color: #fb1;
|
||||
@ -139,8 +139,8 @@ td {
|
||||
color:#310;
|
||||
min-width: 800px !important;
|
||||
/* max-width: 800px !important; */
|
||||
margin: 20px;
|
||||
padding: 10px 20px 5px 20px;
|
||||
margin: 5px 0px;
|
||||
padding: 10px 10px 0px 10px;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
@ -224,7 +224,7 @@ img:hover{
|
||||
|
||||
|
||||
div.section {
|
||||
margin: 0 0 20px 0;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
background: #ffe;
|
||||
border: 1px solid #001;
|
||||
@ -241,7 +241,7 @@ div.section {
|
||||
}
|
||||
|
||||
div.mainsection {
|
||||
margin: 0 0 20px 0;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
background: #ffe;
|
||||
border: 1px solid #001;
|
||||
@ -258,7 +258,7 @@ div.mainsection {
|
||||
}
|
||||
|
||||
div.newtorrentsection {
|
||||
margin: 0 0 20px 0;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
background: #ffe;
|
||||
border: 1px solid #001;
|
||||
@ -275,7 +275,7 @@ div.newtorrentsection {
|
||||
}
|
||||
|
||||
div.addtorrentsection {
|
||||
margin: 0 0 20px 0;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
background: #ffe;
|
||||
border: 1px solid #001;
|
||||
@ -292,7 +292,7 @@ div.addtorrentsection {
|
||||
}
|
||||
|
||||
div.configsection {
|
||||
margin: 0 0 20px 0;
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
background: #ffe;
|
||||
border: 1px solid #001;
|
||||
@ -317,7 +317,7 @@ div.configsection a:hover{
|
||||
}
|
||||
|
||||
.snarknavbar {
|
||||
margin: 5px 0 20px 0 !important;
|
||||
margin: 0 0 10px 0 !important;
|
||||
padding: 10px;
|
||||
border: 1px solid #001;
|
||||
-moz-border-radius: 4px;
|
||||
@ -326,4 +326,10 @@ div.configsection a:hover{
|
||||
background: #eef;
|
||||
-moz-box-shadow: inset 0px 0px 1px 0px #002;
|
||||
background: #ddf url('../console/light/images/tabletile.png');
|
||||
text-transform: uppercase !important;
|
||||
letter-spacing: 0.05em;
|
||||
font-weight: bold;
|
||||
font-size: 11pt;
|
||||
color: #001;
|
||||
text-shadow: 0px 0px 1px rgba(0, 0, 148, 0.9);
|
||||
}
|
||||
|
10
readme.html
10
readme.html
@ -10,7 +10,7 @@
|
||||
<p>If you've just started I2P, the Active: numbers on the left should start to
|
||||
grow over the next few minutes and you'll see a "shared clients" local destination
|
||||
listed on the left (if not, <a href="#trouble">see below</a>). Once those show
|
||||
up, you can:
|
||||
up, you can:</p>
|
||||
<ul>
|
||||
<li><b>browse "eepsites"</b> - on I2P there are anonymously hosted websites
|
||||
- tell your browser to use the <b>HTTP proxy at 127.0.0.1 port 4444</b>, then
|
||||
@ -32,12 +32,10 @@
|
||||
Freenet proxy</li>
|
||||
<li><a href="http://echelon.i2p">echelon.i2p</a>: software
|
||||
archive and information for I2P</li>
|
||||
<p></p>
|
||||
</ul></ul><ul>
|
||||
There are many more eepsites - just follow the links from the ones you see,
|
||||
bookmark your favorites, and visit them often!
|
||||
</ul></ul>
|
||||
<br />
|
||||
<br />
|
||||
</ul>
|
||||
<ul>
|
||||
<li class="tidylist"><b>browse the web</b> - there is currently an HTTP
|
||||
"outproxy" in I2P hooked up to your own HTTP proxy on port 4444 - simply
|
||||
@ -80,4 +78,4 @@
|
||||
post up messages to the <a href="http://forum.i2p2.de/">I2P discussion forum</a>,
|
||||
or swing by #i2p or #i2p-chat on IRC at <a href="irc://irc.freenode.net/#i2p">irc.freenode.net</a>,
|
||||
irc.postman.i2p or irc.freshcoffee.i2p (they're linked together).</p>
|
||||
<hr />
|
||||
<hr>
|
||||
|
@ -778,7 +778,7 @@ public class Blocklist {
|
||||
if (to != from) {
|
||||
out.write(toStr(to)); out.write("</td></tr>\n");
|
||||
} else
|
||||
out.write(" </td></tr>\n");
|
||||
out.write(" </td></tr>\n");
|
||||
}
|
||||
if (_blocklistSize > MAX_DISPLAY)
|
||||
out.write("<tr><th colspan=2>First " + MAX_DISPLAY + " displayed, see the " +
|
||||
|
@ -615,7 +615,7 @@ public class JobQueue {
|
||||
// for (int i = 0; i < states.length; i++)
|
||||
// buf.append(states[i]).append(" ");
|
||||
//buf.append(']');
|
||||
buf.append("</b><br />\n");
|
||||
buf.append("</b><br>\n");
|
||||
|
||||
long now = _context.clock().now();
|
||||
|
||||
|
@ -597,23 +597,23 @@ public class Router {
|
||||
"<option value=\"/oldconsole.jsp#netdb\">Network Database</option>\n" +
|
||||
"<option value=\"/oldconsole.jsp#logs\">Log messages</option>\n" +
|
||||
"</select> <input type=\"submit\" value=\"GO\" /> </form>" +
|
||||
"<hr />\n");
|
||||
"<hr>\n");
|
||||
|
||||
StringBuilder buf = new StringBuilder(32*1024);
|
||||
|
||||
if ( (_routerInfo != null) && (_routerInfo.getIdentity() != null) )
|
||||
buf.append("<b>Router: </b> ").append(_routerInfo.getIdentity().getHash().toBase64()).append("<br />\n");
|
||||
buf.append("<b>As of: </b> ").append(new Date(_context.clock().now())).append(" (uptime: ").append(DataHelper.formatDuration(getUptime())).append(") <br />\n");
|
||||
buf.append("<b>Started on: </b> ").append(new Date(getWhenStarted())).append("<br />\n");
|
||||
buf.append("<b>Clock offset: </b> ").append(_context.clock().getOffset()).append("ms (OS time: ").append(new Date(_context.clock().now() - _context.clock().getOffset())).append(")<br />\n");
|
||||
buf.append("<b>Router: </b> ").append(_routerInfo.getIdentity().getHash().toBase64()).append("<br>\n");
|
||||
buf.append("<b>As of: </b> ").append(new Date(_context.clock().now())).append(" (uptime: ").append(DataHelper.formatDuration(getUptime())).append(") <br>\n");
|
||||
buf.append("<b>Started on: </b> ").append(new Date(getWhenStarted())).append("<br>\n");
|
||||
buf.append("<b>Clock offset: </b> ").append(_context.clock().getOffset()).append("ms (OS time: ").append(new Date(_context.clock().now() - _context.clock().getOffset())).append(")<br>\n");
|
||||
long tot = Runtime.getRuntime().totalMemory()/1024;
|
||||
long free = Runtime.getRuntime().freeMemory()/1024;
|
||||
buf.append("<b>Memory:</b> In use: ").append((tot-free)).append("KB Free: ").append(free).append("KB <br />\n");
|
||||
buf.append("<b>Version:</b> Router: ").append(RouterVersion.VERSION).append(" / SDK: ").append(CoreVersion.VERSION).append("<br />\n");
|
||||
buf.append("<b>Memory:</b> In use: ").append((tot-free)).append("KB Free: ").append(free).append("KB <br>\n");
|
||||
buf.append("<b>Version:</b> Router: ").append(RouterVersion.VERSION).append(" / SDK: ").append(CoreVersion.VERSION).append("<br>\n");
|
||||
if (_higherVersionSeen)
|
||||
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");
|
||||
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");
|
||||
|
||||
buf.append("<hr /><a name=\"bandwidth\"> </a><h2>Bandwidth</h2>\n");
|
||||
buf.append("<hr><a name=\"bandwidth\"> </a><h2>Bandwidth</h2>\n");
|
||||
long sent = _context.bandwidthLimiter().getTotalAllocatedOutboundBytes();
|
||||
long received = _context.bandwidthLimiter().getTotalAllocatedInboundBytes();
|
||||
buf.append("<ul>");
|
||||
@ -723,41 +723,41 @@ public class Router {
|
||||
|
||||
_context.bandwidthLimiter().renderStatusHTML(out);
|
||||
|
||||
out.write("<hr /><a name=\"clients\"> </a>\n");
|
||||
out.write("<hr><a name=\"clients\"> </a>\n");
|
||||
|
||||
_context.clientManager().renderStatusHTML(out);
|
||||
|
||||
out.write("\n<hr /><a name=\"transports\"> </a>\n");
|
||||
out.write("\n<hr><a name=\"transports\"> </a>\n");
|
||||
|
||||
_context.commSystem().renderStatusHTML(out);
|
||||
|
||||
out.write("\n<hr /><a name=\"profiles\"> </a>\n");
|
||||
out.write("\n<hr><a name=\"profiles\"> </a>\n");
|
||||
|
||||
_context.peerManager().renderStatusHTML(out);
|
||||
|
||||
out.write("\n<hr /><a name=\"tunnels\"> </a>\n");
|
||||
out.write("\n<hr><a name=\"tunnels\"> </a>\n");
|
||||
|
||||
_context.tunnelManager().renderStatusHTML(out);
|
||||
|
||||
out.write("\n<hr /><a name=\"jobs\"> </a>\n");
|
||||
out.write("\n<hr><a name=\"jobs\"> </a>\n");
|
||||
|
||||
_context.jobQueue().renderStatusHTML(out);
|
||||
|
||||
out.write("\n<hr /><a name=\"shitlist\"> </a>\n");
|
||||
out.write("\n<hr><a name=\"shitlist\"> </a>\n");
|
||||
|
||||
_context.shitlist().renderStatusHTML(out);
|
||||
|
||||
out.write("\n<hr /><a name=\"pending\"> </a>\n");
|
||||
out.write("\n<hr><a name=\"pending\"> </a>\n");
|
||||
|
||||
_context.messageRegistry().renderStatusHTML(out);
|
||||
|
||||
out.write("\n<hr /><a name=\"netdb\"> </a>\n");
|
||||
out.write("\n<hr><a name=\"netdb\"> </a>\n");
|
||||
|
||||
_context.netDb().renderLeaseSetHTML(out);
|
||||
_context.netDb().renderStatusHTML(out);
|
||||
|
||||
buf.setLength(0);
|
||||
buf.append("\n<hr /><a name=\"logs\"> </a>\n");
|
||||
buf.append("\n<hr><a name=\"logs\"> </a>\n");
|
||||
List msgs = _context.logManager().getBuffer().getMostRecentMessages();
|
||||
buf.append("\n<h2>Most recent console messages:</h2><table>\n");
|
||||
for (Iterator iter = msgs.iterator(); iter.hasNext(); ) {
|
||||
|
@ -18,7 +18,7 @@ public class RouterVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
public final static String VERSION = CoreVersion.VERSION;
|
||||
public final static long BUILD = 12;
|
||||
public final static long BUILD = 15;
|
||||
/** for example "-test" */
|
||||
public final static String EXTRA = "";
|
||||
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;
|
||||
|
@ -274,7 +274,7 @@ public class Shitlist {
|
||||
if ( (transports != null) && (transports.size() > 0) )
|
||||
buf.append(" on the following transport: ").append(transports);
|
||||
if (entry.cause != null) {
|
||||
buf.append("<br />\n");
|
||||
buf.append("<br>\n");
|
||||
buf.append(entry.cause);
|
||||
}
|
||||
buf.append(" (<a href=\"configpeer.jsp?peer=").append(key.toBase64()).append("#unsh\">unban now</a>)");
|
||||
|
@ -388,7 +388,7 @@ public class ClientManager {
|
||||
|
||||
public void renderStatusHTML(Writer out) throws IOException {
|
||||
StringBuilder buf = new StringBuilder(8*1024);
|
||||
buf.append("<u><b>Local destinations</b></u><br />");
|
||||
buf.append("<u><b>Local destinations</b></u><br>");
|
||||
|
||||
Map runners = null;
|
||||
synchronized (_runners) {
|
||||
@ -397,39 +397,39 @@ public class ClientManager {
|
||||
for (Iterator iter = runners.keySet().iterator(); iter.hasNext(); ) {
|
||||
Destination dest = (Destination)iter.next();
|
||||
ClientConnectionRunner runner = (ClientConnectionRunner)runners.get(dest);
|
||||
buf.append("<b>*</b> ").append(dest.calculateHash().toBase64().substring(0,6)).append("<br />\n");
|
||||
buf.append("<b>*</b> ").append(dest.calculateHash().toBase64().substring(0,6)).append("<br>\n");
|
||||
LeaseSet ls = runner.getLeaseSet();
|
||||
if (ls == null) {
|
||||
buf.append("<font color=\"red\"><i>No lease</i></font><br />\n");
|
||||
buf.append("<font color=\"red\"><i>No lease</i></font><br>\n");
|
||||
} else {
|
||||
long leaseAge = ls.getEarliestLeaseDate() - _ctx.clock().now();
|
||||
if (leaseAge <= 0) {
|
||||
buf.append("<font color=\"red\"><i>Lease expired ");
|
||||
buf.append(DataHelper.formatDuration(0-leaseAge)).append(" ago</i></font><br />\n");
|
||||
buf.append(DataHelper.formatDuration(0-leaseAge)).append(" ago</i></font><br>\n");
|
||||
} else {
|
||||
int count = ls.getLeaseCount();
|
||||
if (count <= 0) {
|
||||
buf.append("<font color=\"red\"><i>No tunnels</i></font><br />\n");
|
||||
buf.append("<font color=\"red\"><i>No tunnels</i></font><br>\n");
|
||||
} else {
|
||||
TunnelId id = ls.getLease(0).getTunnelId();
|
||||
TunnelInfo info = _ctx.tunnelManager().getTunnelInfo(id);
|
||||
if (info == null) {
|
||||
buf.append("<font color=\"red\"><i>Failed tunnels</i></font><br />\n");
|
||||
buf.append("<font color=\"red\"><i>Failed tunnels</i></font><br>\n");
|
||||
} else {
|
||||
buf.append(count).append(" x ");
|
||||
buf.append(info.getLength() - 1).append(" hop tunnel");
|
||||
if (count != 1)
|
||||
buf.append('s');
|
||||
buf.append("<br />\n");
|
||||
buf.append("<br>\n");
|
||||
buf.append("Expiring in ").append(DataHelper.formatDuration(leaseAge));
|
||||
buf.append("<br />\n");
|
||||
buf.append("<br>\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buf.append("\n<hr />\n");
|
||||
buf.append("\n<hr>\n");
|
||||
out.write(buf.toString());
|
||||
out.flush();
|
||||
}
|
||||
|
@ -971,18 +971,18 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
||||
else
|
||||
buf.append(dest.toBase64().substring(0, 6));
|
||||
}
|
||||
buf.append(")</b><br />\n");
|
||||
buf.append(")</b><br>\n");
|
||||
long exp = ls.getEarliestLeaseDate()-now;
|
||||
if (exp > 0)
|
||||
buf.append("Expires in ").append(DataHelper.formatDuration(exp)).append("<br />\n");
|
||||
buf.append("Expires in ").append(DataHelper.formatDuration(exp)).append("<br>\n");
|
||||
else
|
||||
buf.append("Expired ").append(DataHelper.formatDuration(0-exp)).append(" ago<br />\n");
|
||||
buf.append("Expired ").append(DataHelper.formatDuration(0-exp)).append(" ago<br>\n");
|
||||
for (int i = 0; i < ls.getLeaseCount(); i++) {
|
||||
buf.append("Lease ").append(i + 1).append(": Gateway ");
|
||||
buf.append(_context.commSystem().renderPeerHTML(ls.getLease(i).getGateway()));
|
||||
buf.append(" Tunnel ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br />\n");
|
||||
buf.append(" Tunnel ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br>\n");
|
||||
}
|
||||
buf.append("<hr />\n");
|
||||
buf.append("<hr>\n");
|
||||
out.write(buf.toString());
|
||||
buf.setLength(0);
|
||||
}
|
||||
@ -996,7 +996,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
||||
if (full)
|
||||
size *= 4;
|
||||
StringBuilder buf = new StringBuilder(size);
|
||||
out.write("<h2>Network Database Contents</h2>\n");
|
||||
out.write("<h2>Network Database Contents (<a href=\"netdb.jsp?l=1\">View LeaseSets</a>)</h2>\n");
|
||||
if (!_initialized) {
|
||||
buf.append("<i>Not initialized</i>\n");
|
||||
out.write(buf.toString());
|
||||
@ -1004,7 +1004,6 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
||||
return;
|
||||
}
|
||||
|
||||
out.write("<a href=\"netdb.jsp?l=1\">View LeaseSets</a>");
|
||||
Hash us = _context.routerHash();
|
||||
out.write("<a name=\"routers\" ></a><h3>Routers (<a href=\"netdb.jsp");
|
||||
if (full)
|
||||
@ -1084,18 +1083,18 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
||||
String hash = info.getIdentity().getHash().toBase64();
|
||||
buf.append("<a name=\"").append(hash.substring(0, 6)).append("\" ></a>");
|
||||
if (isUs) {
|
||||
buf.append("<a name=\"our-info\" ></a><b>Our info: ").append(hash).append("</b><br />\n");
|
||||
buf.append("<a name=\"our-info\" ></a><b>Our info: ").append(hash).append("</b><br>\n");
|
||||
} else {
|
||||
buf.append("<b>Peer info for:</b> ").append(hash).append("<br />\n");
|
||||
buf.append("<b>Peer info for:</b> ").append(hash).append("<br>\n");
|
||||
}
|
||||
|
||||
long age = _context.clock().now() - info.getPublished();
|
||||
if (isUs && _context.router().isHidden())
|
||||
buf.append("Hidden, Updated: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br />\n");
|
||||
buf.append("Hidden, Updated: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br>\n");
|
||||
else if (age > 0)
|
||||
buf.append("Published: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br />\n");
|
||||
buf.append("Published: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br>\n");
|
||||
else
|
||||
buf.append("Published: <i>in ").append(DataHelper.formatDuration(0-age)).append("???</i><br />\n");
|
||||
buf.append("Published: <i>in ").append(DataHelper.formatDuration(0-age)).append("???</i><br>\n");
|
||||
buf.append("Address(es): <i>");
|
||||
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
||||
if(country != null) {
|
||||
@ -1111,19 +1110,19 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
||||
buf.append('[').append(DataHelper.stripHTML(name)).append('=').append(DataHelper.stripHTML(val)).append("] ");
|
||||
}
|
||||
}
|
||||
buf.append("</i><br />\n");
|
||||
buf.append("</i><br>\n");
|
||||
if (full) {
|
||||
buf.append("Stats: <br /><i><code>\n");
|
||||
buf.append("Stats: <br><i><code>\n");
|
||||
for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) {
|
||||
String key = (String)iter.next();
|
||||
String val = info.getOption(key);
|
||||
buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br />\n");
|
||||
buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br>\n");
|
||||
}
|
||||
buf.append("</code></i>\n");
|
||||
} else {
|
||||
buf.append("<a href=\"netdb.jsp?r=").append(hash.substring(0, 6)).append("\" >Full entry</a>\n");
|
||||
}
|
||||
buf.append("<hr />\n");
|
||||
buf.append("<hr>\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ class ProfileOrganizerRenderer {
|
||||
}
|
||||
|
||||
if (tier != prevTier)
|
||||
buf.append("<tr><td colspan=\"7\"><hr /></td></tr>\n");
|
||||
buf.append("<tr><td colspan=\"7\"><hr></td></tr>\n");
|
||||
prevTier = tier;
|
||||
|
||||
buf.append("<tr><td align=\"center\" nowrap>");
|
||||
@ -149,7 +149,7 @@ class ProfileOrganizerRenderer {
|
||||
if (total / fails <= 10) // hide if < 10%
|
||||
buf.append(' ').append(fails).append('/').append(total).append(" Test Fails");
|
||||
}
|
||||
buf.append(" </td>");
|
||||
buf.append(" </td>");
|
||||
buf.append("<td nowrap align=\"center\"><a target=\"_blank\" href=\"dumpprofile.jsp?peer=").append(peer.toBase64().substring(0,6)).append("\">profile</a>");
|
||||
buf.append(" <a href=\"configpeer.jsp?peer=").append(peer.toBase64()).append("\">+-</a></td>\n");
|
||||
buf.append("</tr>");
|
||||
@ -219,8 +219,8 @@ class ProfileOrganizerRenderer {
|
||||
buf.append("</table>");
|
||||
|
||||
buf.append("<h3>Thresholds:</h3>");
|
||||
buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br />");
|
||||
buf.append("<b>Capacity:</b> ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)<br />");
|
||||
buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br>");
|
||||
buf.append("<b>Capacity:</b> ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)<br>");
|
||||
buf.append("<b>Integration:</b> ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)");
|
||||
buf.append("<h3>Definitions:</h3><ul>" +
|
||||
"<li><b>groups</b>: as determined by the profile organizer</li>" +
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user