Replace all <hr /> and <br /> with <hr> and <br> whilst we're in html4 transitional.
This commit is contained in:
@ -111,9 +111,9 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
out.write(TABLE_HEADER);
|
out.write(TABLE_HEADER);
|
||||||
if (_manager.util().connected() && snarks.size() > 0) {
|
if (_manager.util().connected() && snarks.size() > 0) {
|
||||||
if (peerParam != null)
|
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
|
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(TABLE_HEADER2);
|
||||||
out.write("<th align=\"left\">");
|
out.write("<th align=\"left\">");
|
||||||
@ -455,7 +455,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
else {
|
else {
|
||||||
if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
|
if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
|
||||||
err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "…";
|
err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "…";
|
||||||
statusString = "TrackerErr<br />(" + err + ")";
|
statusString = "TrackerErr<br>(" + err + ")";
|
||||||
}
|
}
|
||||||
} else if (remaining <= 0) {
|
} else if (remaining <= 0) {
|
||||||
if (isRunning && curPeers > 0 && !showPeers)
|
if (isRunning && curPeers > 0 && !showPeers)
|
||||||
@ -553,7 +553,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
out.write("<a href=\"" + uri + "?action=Start" + parameters
|
out.write("<a href=\"" + uri + "?action=Start" + parameters
|
||||||
+ "\" title=\"Start the torrent\">Start</a> ");
|
+ "\" title=\"Start the torrent\">Start</a> ");
|
||||||
out.write("<a href=\"" + uri + "?action=Remove" + parameters
|
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
|
out.write("<a href=\"" + uri + "?action=Delete" + parameters
|
||||||
+ "\" title=\"Delete the .torrent file and the associated data file(s)\">Delete</a> ");
|
+ "\" title=\"Delete the .torrent file and the associated data file(s)\">Delete</a> ");
|
||||||
}
|
}
|
||||||
@ -655,13 +655,13 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
// *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file
|
// *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("<form action=\"" + uri + "\" method=\"POST\">\n");
|
||||||
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\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");
|
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)
|
// 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("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("<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("<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("Removing that .torrent file will cause the torrent to stop.<br></span>\n");
|
||||||
out.write("</form>\n</span></div>");
|
out.write("</form>\n</span></div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -675,11 +675,11 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
// *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file
|
// *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("<form action=\"" + uri + "\" method=\"POST\">\n");
|
||||||
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
|
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
|
||||||
out.write("<span class=\"snarkConfigTitle\">Create Torrent:</span><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("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
|
||||||
out.write("Data to seed: " + _manager.getDataDir().getAbsolutePath() + File.separatorChar
|
out.write("Data to seed: " + _manager.getDataDir().getAbsolutePath() + File.separatorChar
|
||||||
+ "<input type=\"text\" name=\"baseFile\" size=\"20\" value=\"" + baseFile
|
+ "<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");
|
out.write("Tracker: <select name=\"announceURL\"><option value=\"\">Select a tracker</option>\n");
|
||||||
Map trackers = _manager.getTrackers();
|
Map trackers = _manager.getTrackers();
|
||||||
for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) {
|
for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) {
|
||||||
@ -709,15 +709,15 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
|
out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
|
||||||
out.write("<div class=\"configsection\"><span class=\"snarkConfig\">\n");
|
out.write("<div class=\"configsection\"><span class=\"snarkConfig\">\n");
|
||||||
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\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("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\" "
|
out.write("Auto start: <input type=\"checkbox\" class=\"optbox\" name=\"autoStart\" value=\"true\" "
|
||||||
+ (autoStart ? "checked " : "")
|
+ (autoStart ? "checked " : "")
|
||||||
+ "title=\"If true, automatically start torrents that are added\" />");
|
+ "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 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" />
|
//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");
|
out.write("Seed percentage: <select name=\"seedPct\" disabled=\"true\" >\n\t");
|
||||||
if (seedPct <= 0)
|
if (seedPct <= 0)
|
||||||
@ -732,28 +732,28 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
out.write("<option value=\"150\" selected=\"true\">150%</option>\n\t");
|
out.write("<option value=\"150\" selected=\"true\">150%</option>\n\t");
|
||||||
else
|
else
|
||||||
out.write("<option value=\"150\">150%</option>\n\t");
|
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=\""
|
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=\""
|
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\" "
|
out.write("Use open trackers also: <input type=\"checkbox\" class=\"optbox\" name=\"useOpenTrackers\" value=\"true\" "
|
||||||
+ (useOpenTrackers ? "checked " : "")
|
+ (useOpenTrackers ? "checked " : "")
|
||||||
+ "title=\"If true, uses open trackers in addition\" /> ");
|
+ "title=\"If true, uses open trackers in addition\" /> ");
|
||||||
out.write("Announce URLs: <input type=\"text\" name=\"openTrackers\" value=\""
|
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("\n");
|
||||||
out.write("EepProxy host: <input type=\"text\" name=\"eepHost\" value=\""
|
out.write("EepProxy host: <input type=\"text\" name=\"eepHost\" value=\""
|
||||||
+ _manager.util().getEepProxyHost() + "\" size=\"15\" /> ");
|
+ _manager.util().getEepProxyHost() + "\" size=\"15\" /> ");
|
||||||
out.write("port: <input type=\"text\" name=\"eepPort\" value=\""
|
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=\""
|
out.write("I2CP host: <input type=\"text\" name=\"i2cpHost\" value=\""
|
||||||
+ _manager.util().getI2CPHost() + "\" size=\"15\" /> ");
|
+ _manager.util().getI2CPHost() + "\" size=\"15\" /> ");
|
||||||
out.write("port: <input type=\"text\" name=\"i2cpPort\" value=\"" +
|
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);
|
StringBuilder opts = new StringBuilder(64);
|
||||||
Map options = new TreeMap(_manager.util().getI2CPOptions());
|
Map options = new TreeMap(_manager.util().getI2CPOptions());
|
||||||
for (Iterator iter = options.entrySet().iterator(); iter.hasNext(); ) {
|
for (Iterator iter = options.entrySet().iterator(); iter.hasNext(); ) {
|
||||||
@ -763,7 +763,7 @@ public class I2PSnarkServlet extends HttpServlet {
|
|||||||
opts.append(key).append('=').append(val).append(' ');
|
opts.append(key).append('=').append(val).append(' ');
|
||||||
}
|
}
|
||||||
out.write("I2CP opts: <input type=\"text\" name=\"i2cpOpts\" size=\"80\" value=\""
|
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("<input type=\"submit\" value=\"Save configuration\" name=\"action\" />\n");
|
||||||
out.write("</span>\n");
|
out.write("</span>\n");
|
||||||
out.write("</form></div>");
|
out.write("</form></div>");
|
||||||
|
@ -464,7 +464,7 @@ public class TunnelController implements Logging {
|
|||||||
private void getHttpClientSummary(StringBuilder buf) {
|
private void getHttpClientSummary(StringBuilder buf) {
|
||||||
String description = getDescription();
|
String description = getDescription();
|
||||||
if ( (description != null) && (description.trim().length() > 0) )
|
if ( (description != null) && (description.trim().length() > 0) )
|
||||||
buf.append("<i>").append(description).append("</i><br />\n");
|
buf.append("<i>").append(description).append("</i><br>\n");
|
||||||
buf.append("HTTP proxy listening on port ").append(getListenPort());
|
buf.append("HTTP proxy listening on port ").append(getListenPort());
|
||||||
String listenOn = getListenOnInterface();
|
String listenOn = getListenOnInterface();
|
||||||
if ("0.0.0.0".equals(listenOn))
|
if ("0.0.0.0".equals(listenOn))
|
||||||
@ -473,19 +473,19 @@ public class TunnelController implements Logging {
|
|||||||
buf.append(" (reachable locally only)");
|
buf.append(" (reachable locally only)");
|
||||||
else
|
else
|
||||||
buf.append(" (reachable at the ").append(listenOn).append(" interface)");
|
buf.append(" (reachable at the ").append(listenOn).append(" interface)");
|
||||||
buf.append("<br />\n");
|
buf.append("<br>\n");
|
||||||
String proxies = getProxyList();
|
String proxies = getProxyList();
|
||||||
if ( (proxies == null) || (proxies.trim().length() <= 0) )
|
if ( (proxies == null) || (proxies.trim().length() <= 0) )
|
||||||
buf.append("Outproxy: default [squid.i2p]<br />\n");
|
buf.append("Outproxy: default [squid.i2p]<br>\n");
|
||||||
else
|
else
|
||||||
buf.append("Outproxy: ").append(proxies).append("<br />\n");
|
buf.append("Outproxy: ").append(proxies).append("<br>\n");
|
||||||
getOptionSummary(buf);
|
getOptionSummary(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getClientSummary(StringBuilder buf) {
|
private void getClientSummary(StringBuilder buf) {
|
||||||
String description = getDescription();
|
String description = getDescription();
|
||||||
if ( (description != null) && (description.trim().length() > 0) )
|
if ( (description != null) && (description.trim().length() > 0) )
|
||||||
buf.append("<i>").append(description).append("</i><br />\n");
|
buf.append("<i>").append(description).append("</i><br>\n");
|
||||||
buf.append("Client tunnel listening on port ").append(getListenPort());
|
buf.append("Client tunnel listening on port ").append(getListenPort());
|
||||||
buf.append(" pointing at ").append(getTargetDestination());
|
buf.append(" pointing at ").append(getTargetDestination());
|
||||||
String listenOn = getListenOnInterface();
|
String listenOn = getListenOnInterface();
|
||||||
@ -495,58 +495,58 @@ public class TunnelController implements Logging {
|
|||||||
buf.append(" (reachable locally only)");
|
buf.append(" (reachable locally only)");
|
||||||
else
|
else
|
||||||
buf.append(" (reachable at the ").append(listenOn).append(" interface)");
|
buf.append(" (reachable at the ").append(listenOn).append(" interface)");
|
||||||
buf.append("<br />\n");
|
buf.append("<br>\n");
|
||||||
getOptionSummary(buf);
|
getOptionSummary(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getServerSummary(StringBuilder buf) {
|
private void getServerSummary(StringBuilder buf) {
|
||||||
String description = getDescription();
|
String description = getDescription();
|
||||||
if ( (description != null) && (description.trim().length() > 0) )
|
if ( (description != null) && (description.trim().length() > 0) )
|
||||||
buf.append("<i>").append(description).append("</i><br />\n");
|
buf.append("<i>").append(description).append("</i><br>\n");
|
||||||
buf.append("Server tunnel pointing at port ").append(getTargetPort());
|
buf.append("Server tunnel pointing at port ").append(getTargetPort());
|
||||||
buf.append(" on ").append(getTargetHost());
|
buf.append(" on ").append(getTargetHost());
|
||||||
buf.append("<br />\n");
|
buf.append("<br>\n");
|
||||||
buf.append("Private destination loaded from ").append(getPrivKeyFile()).append("<br />\n");
|
buf.append("Private destination loaded from ").append(getPrivKeyFile()).append("<br>\n");
|
||||||
getOptionSummary(buf);
|
getOptionSummary(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getHttpServerSummary(StringBuilder buf) {
|
private void getHttpServerSummary(StringBuilder buf) {
|
||||||
String description = getDescription();
|
String description = getDescription();
|
||||||
if ( (description != null) && (description.trim().length() > 0) )
|
if ( (description != null) && (description.trim().length() > 0) )
|
||||||
buf.append("<i>").append(description).append("</i><br />\n");
|
buf.append("<i>").append(description).append("</i><br>\n");
|
||||||
buf.append("Server tunnel pointing at port ").append(getTargetPort());
|
buf.append("Server tunnel pointing at port ").append(getTargetPort());
|
||||||
buf.append(" on ").append(getTargetHost());
|
buf.append(" on ").append(getTargetHost());
|
||||||
buf.append(" for the site ").append(getSpoofedHost());
|
buf.append(" for the site ").append(getSpoofedHost());
|
||||||
buf.append("<br />\n");
|
buf.append("<br>\n");
|
||||||
buf.append("Private destination loaded from ").append(getPrivKeyFile()).append("<br />\n");
|
buf.append("Private destination loaded from ").append(getPrivKeyFile()).append("<br>\n");
|
||||||
getOptionSummary(buf);
|
getOptionSummary(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getOptionSummary(StringBuilder buf) {
|
private void getOptionSummary(StringBuilder buf) {
|
||||||
String opts = getClientOptions();
|
String opts = getClientOptions();
|
||||||
if ( (opts != null) && (opts.length() > 0) )
|
if ( (opts != null) && (opts.length() > 0) )
|
||||||
buf.append("Network options: ").append(opts).append("<br />\n");
|
buf.append("Network options: ").append(opts).append("<br>\n");
|
||||||
if (_running) {
|
if (_running) {
|
||||||
List sessions = _tunnel.getSessions();
|
List sessions = _tunnel.getSessions();
|
||||||
for (int i = 0; i < sessions.size(); i++) {
|
for (int i = 0; i < sessions.size(); i++) {
|
||||||
I2PSession session = (I2PSession)sessions.get(i);
|
I2PSession session = (I2PSession)sessions.get(i);
|
||||||
Destination dest = session.getMyDestination();
|
Destination dest = session.getMyDestination();
|
||||||
if (dest != null) {
|
if (dest != null) {
|
||||||
buf.append("Destination hash: ").append(dest.calculateHash().toBase64()).append("<br />\n");
|
buf.append("Destination hash: ").append(dest.calculateHash().toBase64()).append("<br>\n");
|
||||||
if ( ("server".equals(getType())) || ("httpserver".equals(getType())) ) {
|
if ( ("server".equals(getType())) || ("httpserver".equals(getType())) ) {
|
||||||
buf.append("Full destination: ");
|
buf.append("Full destination: ");
|
||||||
buf.append("<input type=\"text\" size=\"10\" onclick=\"this.select();\" ");
|
buf.append("<input type=\"text\" size=\"10\" onclick=\"this.select();\" ");
|
||||||
buf.append("value=\"").append(dest.toBase64()).append("\" />\n");
|
buf.append("value=\"").append(dest.toBase64()).append("\" />\n");
|
||||||
long val = new Random().nextLong();
|
long val = new Random().nextLong();
|
||||||
if (val < 0) val = 0 - val;
|
if (val < 0) val = 0 - val;
|
||||||
buf.append("<br />You can <a href=\"http://temp").append(val);
|
buf.append("<br>You can <a href=\"http://temp").append(val);
|
||||||
buf.append(".i2p/?i2paddresshelper=").append(dest.toBase64()).append("\">view</a>");
|
buf.append(".i2p/?i2paddresshelper=").append(dest.toBase64()).append("\">view</a>");
|
||||||
buf.append(" it in a browser (only when you're using the eepProxy)\n");
|
buf.append(" it in a browser (only when you're using the eepProxy)\n");
|
||||||
buf.append("<br />If you are going to share this on IRC, you need to split it up:<br />\n");
|
buf.append("<br>If you are going to share this on IRC, you need to split it up:<br>\n");
|
||||||
String str = dest.toBase64();
|
String str = dest.toBase64();
|
||||||
buf.append(str.substring(0, str.length()/2)).append("<br />\n");
|
buf.append(str.substring(0, str.length()/2)).append("<br>\n");
|
||||||
buf.append(str.substring(str.length()/2)).append("<br />\n");
|
buf.append(str.substring(str.length()/2)).append("<br>\n");
|
||||||
buf.append("You can also post it to <a href=\"http://forum.i2p/viewforum.php?f=16\">Eepsite announcement forum</a><br />");
|
buf.append("You can also post it to <a href=\"http://forum.i2p/viewforum.php?f=16\">Eepsite announcement forum</a><br>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="nameField" class="rowItem">
|
<div id="nameField" class="rowItem">
|
||||||
@ -71,7 +71,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="accessField" class="rowItem">
|
<div id="accessField" class="rowItem">
|
||||||
@ -129,7 +129,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType)) {
|
<% if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType)) {
|
||||||
@ -197,7 +197,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="tunnelOptionsField" class="rowItem">
|
<div id="tunnelOptionsField" class="rowItem">
|
||||||
@ -265,7 +265,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsField" class="rowItem">
|
<div id="optionsField" class="rowItem">
|
||||||
@ -286,7 +286,7 @@
|
|||||||
|
|
||||||
<% if (!"streamrclient".equals(tunnelType)) { // streamr client sends pings so it will never be idle %>
|
<% if (!"streamrclient".equals(tunnelType)) { // streamr client sends pings so it will never be idle %>
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsField" class="rowItem">
|
<div id="optionsField" class="rowItem">
|
||||||
@ -314,7 +314,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsField" class="rowItem">
|
<div id="optionsField" class="rowItem">
|
||||||
@ -349,7 +349,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsField" class="rowItem">
|
<div id="optionsField" class="rowItem">
|
||||||
@ -366,7 +366,7 @@
|
|||||||
<% } // !streamrclient %>
|
<% } // !streamrclient %>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if ("client".equals(tunnelType) || "ircclient".equals(tunnelType)) { %>
|
<% if ("client".equals(tunnelType) || "ircclient".equals(tunnelType)) { %>
|
||||||
@ -393,7 +393,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="nameField" class="rowItem">
|
<div id="nameField" class="rowItem">
|
||||||
@ -78,7 +78,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="targetField" class="rowItem">
|
<div id="targetField" class="rowItem">
|
||||||
@ -110,7 +110,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if ("httpserver".equals(tunnelType)) {
|
<% if ("httpserver".equals(tunnelType)) {
|
||||||
@ -164,7 +164,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="tunnelOptionsField" class="rowItem">
|
<div id="tunnelOptionsField" class="rowItem">
|
||||||
@ -232,7 +232,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsField" class="rowItem">
|
<div id="optionsField" class="rowItem">
|
||||||
@ -252,7 +252,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsField" class="rowItem">
|
<div id="optionsField" class="rowItem">
|
||||||
@ -281,7 +281,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsField" class="rowItem">
|
<div id="optionsField" class="rowItem">
|
||||||
@ -304,7 +304,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="optionsField" class="rowItem">
|
<div id="optionsField" class="rowItem">
|
||||||
@ -332,7 +332,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="tunnelOptionsField" class="rowItem">
|
<div id="tunnelOptionsField" class="rowItem">
|
||||||
@ -382,7 +382,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="customOptionsField" class="rowItem">
|
<div id="customOptionsField" class="rowItem">
|
||||||
|
@ -27,13 +27,13 @@ p-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<textarea id="statusMessages" rows="4" cols="60" readonly="readonly"><jsp:getProperty name="indexBean" property="messages" /></textarea>
|
<textarea id="statusMessages" rows="4" cols="60" readonly="readonly"><jsp:getProperty name="indexBean" property="messages" /></textarea>
|
||||||
|
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
@ -74,7 +74,7 @@ p-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|||||||
</div>
|
</div>
|
||||||
<div class="statusHeaderField rowItem">
|
<div class="statusHeaderField rowItem">
|
||||||
<label>Status:</label>
|
<label>Status:</label>
|
||||||
<hr /> </div>
|
<hr> </div>
|
||||||
|
|
||||||
<%
|
<%
|
||||||
for (int curServer = 0; curServer < indexBean.getTunnelCount(); curServer++) {
|
for (int curServer = 0; curServer < indexBean.getTunnelCount(); curServer++) {
|
||||||
@ -141,13 +141,13 @@ p-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
<%
|
<%
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
@ -194,7 +194,7 @@ p-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
<%
|
<%
|
||||||
for (int curClient = 0; curClient < indexBean.getTunnelCount(); curClient++) {
|
for (int curClient = 0; curClient < indexBean.getTunnelCount(); curClient++) {
|
||||||
@ -262,13 +262,13 @@ p-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="subdivider">
|
<div class="subdivider">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
<%
|
<%
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
<div class="separator">
|
<div class="separator">
|
||||||
<hr />
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
|
@ -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>
|
* <ul>
|
||||||
* <li><b>sendSizeKB</b>: how many KB to send, or -1 for unlimited</li>
|
* <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>
|
* <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>
|
* <ul>
|
||||||
* <li><b>sendFile</b>: filename to send</li>
|
* <li><b>sendFile</b>: filename to send</li>
|
||||||
* <li><b>writeDelayMs</b>: how long to wait between each .write (0 for no delay)</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>
|
* <ul>
|
||||||
* <li><b>sinkDir</b>: Directory to store received files in</li>
|
* <li><b>sinkDir</b>: Directory to store received files in</li>
|
||||||
* <li><b>ourDestFile</b>: filename to write our binary destination to</li>
|
* <li><b>ourDestFile</b>: filename to write our binary destination to</li>
|
||||||
|
@ -8,7 +8,7 @@ import net.i2p.util.Log;
|
|||||||
* connection was reset.</p>
|
* connection was reset.</p>
|
||||||
*
|
*
|
||||||
* <h2>Entry conditions:</h2><ul>
|
* <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>
|
* <b>or</b></li>
|
||||||
* <li>A RESET was received</li>
|
* <li>A RESET was received</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
|
@ -536,9 +536,9 @@ public class TransientSessionKeyManager extends SessionKeyManager {
|
|||||||
Set<OutboundSession> outbound = getOutboundSessions();
|
Set<OutboundSession> outbound = getOutboundSessions();
|
||||||
for (Iterator<OutboundSession> iter = outbound.iterator(); iter.hasNext();) {
|
for (Iterator<OutboundSession> iter = outbound.iterator(); iter.hasNext();) {
|
||||||
OutboundSession sess = iter.next();
|
OutboundSession sess = iter.next();
|
||||||
buf.append("<tr><td><b>Target key:</b> ").append(sess.getTarget().toString()).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>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>Last Used:</b> ").append(new Date(sess.getLastUsedDate())).append("<br>");
|
||||||
buf.append("<b># Sets:</b> ").append(sess.getTagSets().size()).append("</td></tr>");
|
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><b>Session key:</b> ").append(sess.getCurrentKey().toBase64()).append("</td></tr>");
|
||||||
buf.append("<tr><td><ul>");
|
buf.append("<tr><td><ul>");
|
||||||
|
@ -611,7 +611,7 @@ public class JobQueue {
|
|||||||
if (states != null)
|
if (states != null)
|
||||||
for (int i = 0; i < states.length; i++)
|
for (int i = 0; i < states.length; i++)
|
||||||
buf.append(states[i]).append(" ");
|
buf.append(states[i]).append(" ");
|
||||||
buf.append("]</b><br />\n");
|
buf.append("]</b><br>\n");
|
||||||
|
|
||||||
long now = _context.clock().now();
|
long now = _context.clock().now();
|
||||||
|
|
||||||
@ -720,7 +720,7 @@ public class JobQueue {
|
|||||||
avgPendingTime = totPendingTime / totRuns;
|
avgPendingTime = totPendingTime / totRuns;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf.append("<tr><td colspan=\"10\"><hr /></td><tr>");
|
buf.append("<tr><td colspan=\"10\"><hr></td><tr>");
|
||||||
buf.append("<tr>");
|
buf.append("<tr>");
|
||||||
buf.append("<td><i><b>").append("SUMMARY").append("</b></i></td>");
|
buf.append("<td><i><b>").append("SUMMARY").append("</b></i></td>");
|
||||||
buf.append("<td><i>").append(totRuns).append("</i></td>");
|
buf.append("<td><i>").append(totRuns).append("</i></td>");
|
||||||
|
@ -597,23 +597,23 @@ public class Router {
|
|||||||
"<option value=\"/oldconsole.jsp#netdb\">Network Database</option>\n" +
|
"<option value=\"/oldconsole.jsp#netdb\">Network Database</option>\n" +
|
||||||
"<option value=\"/oldconsole.jsp#logs\">Log messages</option>\n" +
|
"<option value=\"/oldconsole.jsp#logs\">Log messages</option>\n" +
|
||||||
"</select> <input type=\"submit\" value=\"GO\" /> </form>" +
|
"</select> <input type=\"submit\" value=\"GO\" /> </form>" +
|
||||||
"<hr />\n");
|
"<hr>\n");
|
||||||
|
|
||||||
StringBuilder buf = new StringBuilder(32*1024);
|
StringBuilder buf = new StringBuilder(32*1024);
|
||||||
|
|
||||||
if ( (_routerInfo != null) && (_routerInfo.getIdentity() != null) )
|
if ( (_routerInfo != null) && (_routerInfo.getIdentity() != null) )
|
||||||
buf.append("<b>Router: </b> ").append(_routerInfo.getIdentity().getHash().toBase64()).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>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>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>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 tot = Runtime.getRuntime().totalMemory()/1024;
|
||||||
long free = Runtime.getRuntime().freeMemory()/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>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>Version:</b> Router: ").append(RouterVersion.VERSION).append(" / SDK: ").append(CoreVersion.VERSION).append("<br>\n");
|
||||||
if (_higherVersionSeen)
|
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 sent = _context.bandwidthLimiter().getTotalAllocatedOutboundBytes();
|
||||||
long received = _context.bandwidthLimiter().getTotalAllocatedInboundBytes();
|
long received = _context.bandwidthLimiter().getTotalAllocatedInboundBytes();
|
||||||
buf.append("<ul>");
|
buf.append("<ul>");
|
||||||
@ -723,41 +723,41 @@ public class Router {
|
|||||||
|
|
||||||
_context.bandwidthLimiter().renderStatusHTML(out);
|
_context.bandwidthLimiter().renderStatusHTML(out);
|
||||||
|
|
||||||
out.write("<hr /><a name=\"clients\"> </a>\n");
|
out.write("<hr><a name=\"clients\"> </a>\n");
|
||||||
|
|
||||||
_context.clientManager().renderStatusHTML(out);
|
_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);
|
_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);
|
_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);
|
_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);
|
_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);
|
_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);
|
_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().renderLeaseSetHTML(out);
|
||||||
_context.netDb().renderStatusHTML(out);
|
_context.netDb().renderStatusHTML(out);
|
||||||
|
|
||||||
buf.setLength(0);
|
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();
|
List msgs = _context.logManager().getBuffer().getMostRecentMessages();
|
||||||
buf.append("\n<h2>Most recent console messages:</h2><table>\n");
|
buf.append("\n<h2>Most recent console messages:</h2><table>\n");
|
||||||
for (Iterator iter = msgs.iterator(); iter.hasNext(); ) {
|
for (Iterator iter = msgs.iterator(); iter.hasNext(); ) {
|
||||||
|
@ -270,7 +270,7 @@ public class Shitlist {
|
|||||||
if ( (transports != null) && (transports.size() > 0) )
|
if ( (transports != null) && (transports.size() > 0) )
|
||||||
buf.append(" on the following transport: ").append(transports);
|
buf.append(" on the following transport: ").append(transports);
|
||||||
if (entry.cause != null) {
|
if (entry.cause != null) {
|
||||||
buf.append("<br />\n");
|
buf.append("<br>\n");
|
||||||
buf.append(entry.cause);
|
buf.append(entry.cause);
|
||||||
}
|
}
|
||||||
buf.append(" (<a href=\"configpeer.jsp?peer=").append(key.toBase64()).append("#unsh\">unban now</a>)");
|
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 {
|
public void renderStatusHTML(Writer out) throws IOException {
|
||||||
StringBuilder buf = new StringBuilder(8*1024);
|
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;
|
Map runners = null;
|
||||||
synchronized (_runners) {
|
synchronized (_runners) {
|
||||||
@ -397,39 +397,39 @@ public class ClientManager {
|
|||||||
for (Iterator iter = runners.keySet().iterator(); iter.hasNext(); ) {
|
for (Iterator iter = runners.keySet().iterator(); iter.hasNext(); ) {
|
||||||
Destination dest = (Destination)iter.next();
|
Destination dest = (Destination)iter.next();
|
||||||
ClientConnectionRunner runner = (ClientConnectionRunner)runners.get(dest);
|
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();
|
LeaseSet ls = runner.getLeaseSet();
|
||||||
if (ls == null) {
|
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 {
|
} else {
|
||||||
long leaseAge = ls.getEarliestLeaseDate() - _ctx.clock().now();
|
long leaseAge = ls.getEarliestLeaseDate() - _ctx.clock().now();
|
||||||
if (leaseAge <= 0) {
|
if (leaseAge <= 0) {
|
||||||
buf.append("<font color=\"red\"><i>Lease expired ");
|
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 {
|
} else {
|
||||||
int count = ls.getLeaseCount();
|
int count = ls.getLeaseCount();
|
||||||
if (count <= 0) {
|
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 {
|
} else {
|
||||||
TunnelId id = ls.getLease(0).getTunnelId();
|
TunnelId id = ls.getLease(0).getTunnelId();
|
||||||
TunnelInfo info = _ctx.tunnelManager().getTunnelInfo(id);
|
TunnelInfo info = _ctx.tunnelManager().getTunnelInfo(id);
|
||||||
if (info == null) {
|
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 {
|
} else {
|
||||||
buf.append(count).append(" x ");
|
buf.append(count).append(" x ");
|
||||||
buf.append(info.getLength() - 1).append(" hop tunnel");
|
buf.append(info.getLength() - 1).append(" hop tunnel");
|
||||||
if (count != 1)
|
if (count != 1)
|
||||||
buf.append('s');
|
buf.append('s');
|
||||||
buf.append("<br />\n");
|
buf.append("<br>\n");
|
||||||
buf.append("Expiring in ").append(DataHelper.formatDuration(leaseAge));
|
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.write(buf.toString());
|
||||||
out.flush();
|
out.flush();
|
||||||
}
|
}
|
||||||
|
@ -967,18 +967,18 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
|||||||
else
|
else
|
||||||
buf.append(dest.toBase64().substring(0, 6));
|
buf.append(dest.toBase64().substring(0, 6));
|
||||||
}
|
}
|
||||||
buf.append(")</b><br />\n");
|
buf.append(")</b><br>\n");
|
||||||
long exp = ls.getEarliestLeaseDate()-now;
|
long exp = ls.getEarliestLeaseDate()-now;
|
||||||
if (exp > 0)
|
if (exp > 0)
|
||||||
buf.append("Earliest expiration date in: <i>").append(DataHelper.formatDuration(exp)).append("</i><br />\n");
|
buf.append("Earliest expiration date in: <i>").append(DataHelper.formatDuration(exp)).append("</i><br>\n");
|
||||||
else
|
else
|
||||||
buf.append("Earliest expiration date was: <i>").append(DataHelper.formatDuration(0-exp)).append(" ago</i><br />\n");
|
buf.append("Earliest expiration date was: <i>").append(DataHelper.formatDuration(0-exp)).append(" ago</i><br>\n");
|
||||||
for (int i = 0; i < ls.getLeaseCount(); i++) {
|
for (int i = 0; i < ls.getLeaseCount(); i++) {
|
||||||
buf.append("Lease ").append(i).append(": gateway <i>");
|
buf.append("Lease ").append(i).append(": gateway <i>");
|
||||||
buf.append(ls.getLease(i).getGateway().toBase64().substring(0,6));
|
buf.append(ls.getLease(i).getGateway().toBase64().substring(0,6));
|
||||||
buf.append("</i> tunnelId <i>").append(ls.getLease(i).getTunnelId().getTunnelId()).append("</i><br />\n");
|
buf.append("</i> tunnelId <i>").append(ls.getLease(i).getTunnelId().getTunnelId()).append("</i><br>\n");
|
||||||
}
|
}
|
||||||
buf.append("<hr />\n");
|
buf.append("<hr>\n");
|
||||||
out.write(buf.toString());
|
out.write(buf.toString());
|
||||||
buf.setLength(0);
|
buf.setLength(0);
|
||||||
}
|
}
|
||||||
@ -1076,18 +1076,18 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
|||||||
String hash = info.getIdentity().getHash().toBase64();
|
String hash = info.getIdentity().getHash().toBase64();
|
||||||
buf.append("<a name=\"").append(hash.substring(0, 6)).append("\" ></a>");
|
buf.append("<a name=\"").append(hash.substring(0, 6)).append("\" ></a>");
|
||||||
if (isUs) {
|
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 {
|
} 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();
|
long age = _context.clock().now() - info.getPublished();
|
||||||
if (isUs && _context.router().isHidden())
|
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)
|
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
|
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>");
|
buf.append("Address(es): <i>");
|
||||||
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
|
||||||
if(country != null) {
|
if(country != null) {
|
||||||
@ -1103,19 +1103,19 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
|
|||||||
buf.append('[').append(DataHelper.stripHTML(name)).append('=').append(DataHelper.stripHTML(val)).append("] ");
|
buf.append('[').append(DataHelper.stripHTML(name)).append('=').append(DataHelper.stripHTML(val)).append("] ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buf.append("</i><br />\n");
|
buf.append("</i><br>\n");
|
||||||
if (full) {
|
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(); ) {
|
for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) {
|
||||||
String key = (String)iter.next();
|
String key = (String)iter.next();
|
||||||
String val = info.getOption(key);
|
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");
|
buf.append("</code></i>\n");
|
||||||
} else {
|
} else {
|
||||||
buf.append("<a href=\"netdb.jsp?r=").append(hash.substring(0, 6)).append("\" >Full entry</a>\n");
|
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)
|
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;
|
prevTier = tier;
|
||||||
|
|
||||||
buf.append("<tr><td align=\"center\" nowrap>");
|
buf.append("<tr><td align=\"center\" nowrap>");
|
||||||
@ -219,8 +219,8 @@ class ProfileOrganizerRenderer {
|
|||||||
buf.append("</table>");
|
buf.append("</table>");
|
||||||
|
|
||||||
buf.append("<h3>Thresholds:</h3>");
|
buf.append("<h3>Thresholds:</h3>");
|
||||||
buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast 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>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("<b>Integration:</b> ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)");
|
||||||
buf.append("<h3>Definitions:</h3><ul>");
|
buf.append("<h3>Definitions:</h3><ul>");
|
||||||
buf.append("<li><b>groups</b>: as determined by the profile organizer</li>");
|
buf.append("<li><b>groups</b>: as determined by the profile organizer</li>");
|
||||||
|
@ -454,7 +454,7 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis
|
|||||||
/** warning - slow */
|
/** warning - slow */
|
||||||
public String renderStatusHTML() {
|
public String renderStatusHTML() {
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
sb.append("<a name=\"upnp\"></a><b>UPnP Status:</b><br />");
|
sb.append("<a name=\"upnp\"></a><b>UPnP Status:</b><br>");
|
||||||
|
|
||||||
if(isDisabled) {
|
if(isDisabled) {
|
||||||
sb.append("UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?");
|
sb.append("UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?");
|
||||||
|
@ -720,7 +720,7 @@ public class NTCPTransport extends TransportImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (peers.size() > 0) {
|
if (peers.size() > 0) {
|
||||||
// buf.append("<tr> <td colspan=\"11\"><hr /></td></tr>\n");
|
// buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n");
|
||||||
buf.append("<tr class=\"tablefooter\"> <td align=\"center\"><b>").append(peers.size()).append(" peers</b></td> <td> </td> <td> ");
|
buf.append("<tr class=\"tablefooter\"> <td align=\"center\"><b>").append(peers.size()).append(" peers</b></td> <td> </td> <td> ");
|
||||||
buf.append("</td> <td align=\"center\"><b>").append(formatRate(bpsRecv/1024)).append("/").append(formatRate(bpsSend/1024)).append("K/s</b>");
|
buf.append("</td> <td align=\"center\"><b>").append(formatRate(bpsRecv/1024)).append("/").append(formatRate(bpsSend/1024)).append("K/s</b>");
|
||||||
buf.append("</td> <td align=\"center\"><b>").append(DataHelper.formatDuration(totalUptime/peers.size()));
|
buf.append("</td> <td align=\"center\"><b>").append(DataHelper.formatDuration(totalUptime/peers.size()));
|
||||||
|
@ -1843,17 +1843,17 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
|
|
||||||
boolean appended = false;
|
boolean appended = false;
|
||||||
if (_activeThrottle.isChoked(peer.getRemotePeer())) {
|
if (_activeThrottle.isChoked(peer.getRemotePeer())) {
|
||||||
if (!appended) buf.append("<br />");
|
if (!appended) buf.append("<br>");
|
||||||
buf.append(" <i>Choked</i>");
|
buf.append(" <i>Choked</i>");
|
||||||
appended = true;
|
appended = true;
|
||||||
}
|
}
|
||||||
if (peer.getConsecutiveFailedSends() > 0) {
|
if (peer.getConsecutiveFailedSends() > 0) {
|
||||||
if (!appended) buf.append("<br />");
|
if (!appended) buf.append("<br>");
|
||||||
buf.append(" <i>").append(peer.getConsecutiveFailedSends()).append(" fail(s)</i>");
|
buf.append(" <i>").append(peer.getConsecutiveFailedSends()).append(" fail(s)</i>");
|
||||||
appended = true;
|
appended = true;
|
||||||
}
|
}
|
||||||
if (_context.shitlist().isShitlisted(peer.getRemotePeer(), STYLE)) {
|
if (_context.shitlist().isShitlisted(peer.getRemotePeer(), STYLE)) {
|
||||||
if (!appended) buf.append("<br />");
|
if (!appended) buf.append("<br>");
|
||||||
buf.append(" <i>Shitlist</i>");
|
buf.append(" <i>Shitlist</i>");
|
||||||
appended = true;
|
appended = true;
|
||||||
}
|
}
|
||||||
@ -1985,7 +1985,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
numPeers++;
|
numPeers++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// buf.append("<tr><td colspan=\"16\"><hr /></td></tr>\n");
|
// buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n");
|
||||||
buf.append(" <tr class=\"tablefooter\"> <td colspan=\"3\" align=\"right\"><b>Total</b></td>");
|
buf.append(" <tr class=\"tablefooter\"> <td colspan=\"3\" align=\"right\"><b>Total</b></td>");
|
||||||
buf.append(" <td align=\"center\" nowrap><b>");
|
buf.append(" <td align=\"center\" nowrap><b>");
|
||||||
buf.append(formatKBps(bpsIn)).append("/").append(formatKBps(bpsOut));
|
buf.append(formatKBps(bpsIn)).append("/").append(formatKBps(bpsOut));
|
||||||
@ -2012,7 +2012,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
double nondupSent = ((double)bytesTransmitted - ((double)resentTotal)*averagePacketSize);
|
double nondupSent = ((double)bytesTransmitted - ((double)resentTotal)*averagePacketSize);
|
||||||
double bwResent = (nondupSent <= 0 ? 0d : ((((double)resentTotal)*averagePacketSize) / nondupSent));
|
double bwResent = (nondupSent <= 0 ? 0d : ((((double)resentTotal)*averagePacketSize) / nondupSent));
|
||||||
buf.append("<h3>Percentage of bytes retransmitted (lifetime): ").append(formatPct(bwResent));
|
buf.append("<h3>Percentage of bytes retransmitted (lifetime): ").append(formatPct(bwResent));
|
||||||
buf.append("</h3><i>(Includes retransmission required by packet loss)</i><br /></p>\n");
|
buf.append("</h3><i>(Includes retransmission required by packet loss)</i><br></p>\n");
|
||||||
out.write(buf.toString());
|
out.write(buf.toString());
|
||||||
buf.setLength(0);
|
buf.setLength(0);
|
||||||
out.write(KEY);
|
out.write(KEY);
|
||||||
@ -2032,24 +2032,24 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static final String KEY = "<h3>Definitions:</h3><div class=\"configure\">" +
|
private static final String KEY = "<h3>Definitions:</h3><div class=\"configure\">" +
|
||||||
"<br><b id=\"def.peer\">Peer</b>: the remote peer.<br />\n" +
|
"<br><b id=\"def.peer\">Peer</b>: the remote peer.<br>\n" +
|
||||||
"<b id=\"def.dir\">Dir</b>: v means they offer to introduce us, ^ means we offer to introduce them.<br />\n" +
|
"<b id=\"def.dir\">Dir</b>: v means they offer to introduce us, ^ means we offer to introduce them.<br>\n" +
|
||||||
"<b id=\"def.idle\">Idle</b>: the idle time is how long since a packet has been received or sent.<br />\n" +
|
"<b id=\"def.idle\">Idle</b>: the idle time is how long since a packet has been received or sent.<br>\n" +
|
||||||
"<b id=\"def.rate\">In/out</b>: the rates show a smoothed inbound and outbound transfer rate (KBytes per second).<br />\n" +
|
"<b id=\"def.rate\">In/out</b>: the rates show a smoothed inbound and outbound transfer rate (KBytes per second).<br>\n" +
|
||||||
"<b id=\"def.up\">Up</b>: the uptime is how long ago this session was established.<br />\n" +
|
"<b id=\"def.up\">Up</b>: the uptime is how long ago this session was established.<br>\n" +
|
||||||
"<b id=\"def.skew\">Skew</b>: the skew says how far off the other user's clock is, relative to your own.<br />\n" +
|
"<b id=\"def.skew\">Skew</b>: the skew says how far off the other user's clock is, relative to your own.<br>\n" +
|
||||||
"<b id=\"def.cwnd\">Cwnd</b>: the congestion window is how many bytes in 'in flight' you can send w/out an acknowledgement, / <br />\n" +
|
"<b id=\"def.cwnd\">Cwnd</b>: the congestion window is how many bytes in 'in flight' you can send w/out an acknowledgement, / <br>\n" +
|
||||||
" the number of currently active messages being sent, /<br />\n" +
|
" the number of currently active messages being sent, /<br>\n" +
|
||||||
" the maximum number of concurrent messages to send, /<br />\n"+
|
" the maximum number of concurrent messages to send, /<br>\n"+
|
||||||
" the number of consecutive sends which were blocked due to throws message window size.<br />\n" +
|
" the number of consecutive sends which were blocked due to throws message window size.<br>\n" +
|
||||||
"<b id=\"def.ssthresh\">Sst</b>: the slow start threshold helps make sure the cwnd doesn't grow too fast.<br />\n" +
|
"<b id=\"def.ssthresh\">Sst</b>: the slow start threshold helps make sure the cwnd doesn't grow too fast.<br>\n" +
|
||||||
"<b id=\"def.rtt\">Rtt</b>: the round trip time is how long it takes to get an acknowledgement of a packet.<br />\n" +
|
"<b id=\"def.rtt\">Rtt</b>: the round trip time is how long it takes to get an acknowledgement of a packet.<br>\n" +
|
||||||
"<b id=\"def.dev\">Dev</b>: the standard deviation of the round trip time, to help control the retransmit timeout.<br />\n" +
|
"<b id=\"def.dev\">Dev</b>: the standard deviation of the round trip time, to help control the retransmit timeout.<br>\n" +
|
||||||
"<b id=\"def.rto\">Rto</b>: the retransmit timeout controls how frequently an unacknowledged packet will be retransmitted.<br />\n" +
|
"<b id=\"def.rto\">Rto</b>: the retransmit timeout controls how frequently an unacknowledged packet will be retransmitted.<br>\n" +
|
||||||
"<b id=\"def.mtu\">Mtu</b>: current sending packet size / estimated receiving packet size.<br />\n" +
|
"<b id=\"def.mtu\">Mtu</b>: current sending packet size / estimated receiving packet size.<br>\n" +
|
||||||
"<b id=\"def.send\">TX</b>: the number of packets sent to the peer.<br />\n" +
|
"<b id=\"def.send\">TX</b>: the number of packets sent to the peer.<br>\n" +
|
||||||
"<b id=\"def.recv\">RX</b>: the number of packets received from the peer.<br />\n" +
|
"<b id=\"def.recv\">RX</b>: the number of packets received from the peer.<br>\n" +
|
||||||
"<b id=\"def.resent\">ReTX</b>: the number of packets retransmitted to the peer.<br />\n" +
|
"<b id=\"def.resent\">ReTX</b>: the number of packets retransmitted to the peer.<br>\n" +
|
||||||
"<b id=\"def.dupRecv\">DupRX</b>: the number of duplicate packets received from the peer." +
|
"<b id=\"def.dupRecv\">DupRX</b>: the number of duplicate packets received from the peer." +
|
||||||
"</div>\n";
|
"</div>\n";
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import java.util.Vector;
|
|||||||
* a comma separated list of class names of factories or parsers to try (in order from
|
* a comma separated list of class names of factories or parsers to try (in order from
|
||||||
* left to the right). If none found, it will throw an exception.
|
* left to the right). If none found, it will throw an exception.
|
||||||
*
|
*
|
||||||
* <br /><strong>NOTE:</strong>In J2SE or J2EE environments, you may want to use
|
* <br><strong>NOTE:</strong>In J2SE or J2EE environments, you may want to use
|
||||||
* <code>newInstance(property, classLoaderCtx)</code>
|
* <code>newInstance(property, classLoaderCtx)</code>
|
||||||
* where first argument is
|
* where first argument is
|
||||||
* <code>System.getProperty(XmlPullParserFactory.PROPERTY_NAME)</code>
|
* <code>System.getProperty(XmlPullParserFactory.PROPERTY_NAME)</code>
|
||||||
|
@ -233,15 +233,15 @@ public interface XmlSerializer {
|
|||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * Writes a start tag with the given namespace and name.
|
// * Writes a start tag with the given namespace and name.
|
||||||
// * <br />If there is no prefix defined (prefix == null) for the given namespace,
|
// * <br>If there is no prefix defined (prefix == null) for the given namespace,
|
||||||
// * a prefix will be defined automatically.
|
// * a prefix will be defined automatically.
|
||||||
// * <br />If explicit prefixes is passed (prefix != null) then it will be used
|
// * <br>If explicit prefixes is passed (prefix != null) then it will be used
|
||||||
// *and namespace declared if not already declared or
|
// *and namespace declared if not already declared or
|
||||||
// * throw IllegalStateException the same prefix was already set on this
|
// * throw IllegalStateException the same prefix was already set on this
|
||||||
// * element (setPrefix()) and was bound to different namespace.
|
// * element (setPrefix()) and was bound to different namespace.
|
||||||
// * <br />If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
// * <br>If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
||||||
// * <br />If namespace is null then no namespace prefix is printed but just name.
|
// * <br>If namespace is null then no namespace prefix is printed but just name.
|
||||||
// * <br />If namespace is empty string then serializer will make sure that
|
// * <br>If namespace is empty string then serializer will make sure that
|
||||||
// * default empty namespace is declared (in XML 1.0 xmlns='')
|
// * default empty namespace is declared (in XML 1.0 xmlns='')
|
||||||
// * or throw IllegalStateException if default namespace is already bound
|
// * or throw IllegalStateException if default namespace is already bound
|
||||||
// * to non-empty string.
|
// * to non-empty string.
|
||||||
@ -252,15 +252,15 @@ public interface XmlSerializer {
|
|||||||
// /**
|
// /**
|
||||||
// * Write an attribute. Calls to attribute() MUST follow a call to
|
// * Write an attribute. Calls to attribute() MUST follow a call to
|
||||||
// * startTag() immediately.
|
// * startTag() immediately.
|
||||||
// * <br />If there is no prefix defined (prefix == null) for the given namespace,
|
// * <br>If there is no prefix defined (prefix == null) for the given namespace,
|
||||||
// * a prefix will be defined automatically.
|
// * a prefix will be defined automatically.
|
||||||
// * <br />If explicit prefixes is passed (prefix != null) then it will be used
|
// * <br>If explicit prefixes is passed (prefix != null) then it will be used
|
||||||
// * and namespace declared if not already declared or
|
// * and namespace declared if not already declared or
|
||||||
// * throw IllegalStateException the same prefix was already set on this
|
// * throw IllegalStateException the same prefix was already set on this
|
||||||
// * element (setPrefix()) and was bound to different namespace.
|
// * element (setPrefix()) and was bound to different namespace.
|
||||||
// * <br />If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
// * <br>If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
||||||
// * <br />If namespace is null then no namespace prefix is printed but just name.
|
// * <br>If namespace is null then no namespace prefix is printed but just name.
|
||||||
// * <br />If namespace is empty string then serializer will make sure that
|
// * <br>If namespace is empty string then serializer will make sure that
|
||||||
// * default empty namespace is declared (in XML 1.0 xmlns='')
|
// * default empty namespace is declared (in XML 1.0 xmlns='')
|
||||||
// * or throw IllegalStateException if default namespace is already bound
|
// * or throw IllegalStateException if default namespace is already bound
|
||||||
// * to non-empty string.
|
// * to non-empty string.
|
||||||
@ -270,12 +270,12 @@ public interface XmlSerializer {
|
|||||||
//
|
//
|
||||||
// /**
|
// /**
|
||||||
// * Write end tag. Repetition of namespace, prefix, and name is just for avoiding errors.
|
// * Write end tag. Repetition of namespace, prefix, and name is just for avoiding errors.
|
||||||
// * <br />If namespace or name arguments are different from corresponding startTag call
|
// * <br>If namespace or name arguments are different from corresponding startTag call
|
||||||
// * then IllegalArgumentException is thrown, if prefix argument is not null and is different
|
// * then IllegalArgumentException is thrown, if prefix argument is not null and is different
|
||||||
// * from corresponding starTag then IllegalArgumentException is thrown.
|
// * from corresponding starTag then IllegalArgumentException is thrown.
|
||||||
// * <br />If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
// * <br>If namespace is null then prefix must be null too or IllegalStateException is thrown.
|
||||||
// * <br />If namespace is null then no namespace prefix is printed but just name.
|
// * <br>If namespace is null then no namespace prefix is printed but just name.
|
||||||
// * <br />If namespace is empty string then serializer will make sure that
|
// * <br>If namespace is empty string then serializer will make sure that
|
||||||
// * default empty namespace is declared (in XML 1.0 xmlns='').
|
// * default empty namespace is declared (in XML 1.0 xmlns='').
|
||||||
// * <p><b>Background:</b> in kXML endTag had no arguments, and non matching tags were
|
// * <p><b>Background:</b> in kXML endTag had no arguments, and non matching tags were
|
||||||
// * very difficult to find...</p>
|
// * very difficult to find...</p>
|
||||||
|
Reference in New Issue
Block a user