propagate from branch 'i2p.i2p' (head f672021bb9871a728005be3bd9581710738b9e5f)

to branch 'i2p.i2p.zzz.test' (head e115e218dbb666839e69fa1e1ba7378554b9874f)
This commit is contained in:
zzz
2009-12-10 13:34:05 +00:00
56 changed files with 3627 additions and 2327 deletions

View File

@ -2,6 +2,6 @@
<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>
<file>file:/usblv/NetBeansProjects/i2p.i2p/apps/BOB/src/net/i2p/BOB/TCPio.java</file>
</open-files>
</project-private>

View File

@ -50,7 +50,7 @@ public class DoCMDS implements Runnable {
// FIX ME
// I need a better way to do versioning, but this will do for now.
public static final String BMAJ = "00", BMIN = "00", BREV = "08", BEXT = "";
public static final String BMAJ = "00", BMIN = "00", BREV = "0A", BEXT = "";
public static final String BOBversion = BMAJ + "." + BMIN + "." + BREV + BEXT;
private Socket server;
private Properties props;

View File

@ -60,20 +60,9 @@ public class I2Plistener implements Runnable {
this._log = _log;
this.socketManager = S;
this.serverSocket = SS;
// tgwatch = 1;
this.lives = lives;
}
private void rlock() throws Exception {
database.getReadLock();
info.getReadLock();
}
private void runlock() throws Exception {
database.releaseReadLock();
info.releaseReadLock();
}
/**
* Simply listen on I2P port, and thread connections
*
@ -83,34 +72,31 @@ public class I2Plistener implements Runnable {
I2PSocket sessSocket = null;
int conn = 0;
try {
die:
{
try {
serverSocket.setSoTimeout(50);
while (lives.get()) {
try {
sessSocket = serverSocket.accept();
g = true;
} catch (ConnectException ce) {
g = false;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
g = false;
conn++;
// toss the connection to a new thread.
I2PtoTCP conn_c = new I2PtoTCP(sessSocket, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
t.start();
}
try {
serverSocket.setSoTimeout(50);
while (lives.get()) {
try {
sessSocket = serverSocket.accept();
g = true;
} catch (ConnectException ce) {
g = false;
} catch (SocketTimeoutException ste) {
g = false;
}
} catch (I2PException e) {
// bad shit
System.out.println("Exception " + e);
if (g) {
g = false;
conn++;
// toss the connection to a new thread.
I2PtoTCP conn_c = new I2PtoTCP(sessSocket, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
t.start();
}
}
} catch (I2PException e) {
// bad shit
System.out.println("Exception " + e);
}
} finally {
try {

View File

@ -104,10 +104,10 @@ public class MUXlisten implements Runnable {
this.database.releaseReadLock();
this.info.releaseReadLock();
socketManager = I2PSocketManagerFactory.createManager(prikey, Q);
if (this.come_in) {
this.listener = new ServerSocket(port, backlog, host);
}
socketManager = I2PSocketManagerFactory.createManager(prikey, Q);
// I2PException, IOException, RuntimeException
// To bad we can't just catch and enumerate....
// } catch (I2PException e) {
@ -141,8 +141,6 @@ public class MUXlisten implements Runnable {
this.info.add("STARTING", new Boolean(false));
this.info.releaseWriteLock();
this.database.releaseWriteLock();
// throw new Exception(e);
// Debugging, I guess.
e.printStackTrace();
throw new RuntimeException(e);
}

View File

@ -78,16 +78,20 @@ public class TCPio implements Runnable {
* --Sponge
*
* Tested with 128 bytes, and there was no performance gain.
* 8192 bytes did lower load average across many connections.
* Should I raise it higer? The correct thing to do would be to
* override... perhaps use NTCP, but I2P's streaming lib lacks
* anything NTCP compatable.
*
* --Sponge
*/
int b;
byte a[] = new byte[1];
byte a[] = new byte[8192];
try {
try {
while (lives.get()) {
b = Ain.read(a, 0, 1);
b = Ain.read(a, 0, 8192);
if (b > 0) {
Aout.write(a, 0, b);
} else if (b == 0) {

View File

@ -64,16 +64,6 @@ public class TCPlistener implements Runnable {
this.lives = lives;
}
private void rlock() throws Exception {
database.getReadLock();
info.getReadLock();
}
private void runlock() throws Exception {
database.releaseReadLock();
info.releaseReadLock();
}
/**
* Simply listen on TCP port, and thread connections
*
@ -81,30 +71,27 @@ public class TCPlistener implements Runnable {
public void run() {
boolean g = false;
int conn = 0;
Socket server = null;
try {
die:
{
try {
Socket server = new Socket();
listener.setSoTimeout(50); // We don't block, we cycle and check.
while (lives.get()) {
try {
server = listener.accept();
g = true;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
conn++;
// toss the connection to a new thread.
TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
t.start();
g = false;
}
try {
listener.setSoTimeout(50); // We don't block, we cycle and check.
while (lives.get()) {
try {
server = listener.accept();
g = true;
} catch (SocketTimeoutException ste) {
g = false;
}
if (g) {
conn++;
// toss the connection to a new thread.
TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives);
Thread t = new Thread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
t.start();
g = false;
}
} catch (IOException ioe) {
}
} catch (IOException ioe) {
}
} finally {
try {

View File

@ -734,12 +734,12 @@ public class I2PSnarkServlet extends HttpServlet {
out.write("<span class=\"snarkNewTorrent\">\n");
// *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("From URL&nbsp;: <input type=\"text\" name=\"newURL\" size=\"80\" value=\"" + newURL + "\" /> \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("From URL&nbsp;: <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("<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>");
@ -754,12 +754,12 @@ public class I2PSnarkServlet extends HttpServlet {
out.write("<div class=\"newtorrentsection\"><span class=\"snarkNewTorrent\">\n");
// *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("<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("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(); ) {
@ -773,8 +773,8 @@ public class I2PSnarkServlet extends HttpServlet {
}
out.write("</select>\n");
out.write("or <input type=\"text\" name=\"announceURLOther\" size=\"50\" value=\"http://\" " +
"title=\"Custom tracker URL\" /> ");
out.write("<input type=\"submit\" value=\"Create torrent\" name=\"action\" />\n");
"title=\"Custom tracker URL\" > ");
out.write("<input type=\"submit\" value=\"Create torrent\" name=\"action\" >\n");
out.write("</form>\n</span></div>");
}
@ -788,13 +788,13 @@ 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("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("Auto start: <input type=\"checkbox\" class=\"optbox\" name=\"autoStart\" value=\"true\" "
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" >\n");
out.write("<span class=\"snarkConfigTitle\">Configuration</span><br>\n");
out.write("<table border=\"0\"><tr><td>Data directory: <td><input type=\"text\" size=\"50\" name=\"dataDir\" value=\"" + dataDir + "\" ");
out.write("title=\"Directory to store torrents and data\" disabled=\"true\" ><br><i>(Edit i2psnark.config and restart to change)</i><br>\n");
out.write("<tr><td>Auto start: <td><input type=\"checkbox\" class=\"optbox\" name=\"autoStart\" value=\"true\" "
+ (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 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");
@ -814,26 +814,26 @@ public class I2PSnarkServlet extends HttpServlet {
out.write("<option value=\"150\">150%</option>\n\t");
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");
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");
out.write("<tr><td>Total uploader limit: <td><input type=\"text\" name=\"upLimit\" value=\""
+ _manager.util().getMaxUploaders() + "\" size=\"3\" maxlength=\"3\" > peers<br>\n");
out.write("<tr><td>Up bandwidth limit: <td><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");
out.write("Use open trackers also: <input type=\"checkbox\" class=\"optbox\" name=\"useOpenTrackers\" value=\"true\" "
out.write("<tr><td>Use open trackers also: <td><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");
+ "title=\"If true, uses open trackers in addition\" > ");
out.write("<tr><td>Open tracker announce URLs: <td><input type=\"text\" name=\"openTrackers\" value=\""
+ 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");
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");
out.write("<tr><td>I2CP host: <td><input type=\"text\" name=\"i2cpHost\" value=\""
+ _manager.util().getI2CPHost() + "\" size=\"15\" > ");
out.write("<tr><td>I2CP port: <td><input type=\"text\" name=\"i2cpPort\" value=\"" +
+ _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(); ) {
@ -842,10 +842,10 @@ public class I2PSnarkServlet extends HttpServlet {
String val = (String)entry.getValue();
opts.append(key).append('=').append(val).append(' ');
}
out.write("I2CP opts: <input type=\"text\" name=\"i2cpOpts\" size=\"80\" value=\""
+ opts.toString() + "\" /><br>\n");
out.write("<input type=\"submit\" value=\"Save configuration\" name=\"action\" />\n");
out.write("</span>\n");
out.write("<tr><td>I2CP options: <td><textarea name=\"i2cpOpts\" cols=\"60\" rows=\"1\" wrap=\"off\" >"
+ opts.toString() + "</textarea><br>\n");
out.write("<tr><td>&nbsp;<td><input type=\"submit\" value=\"Save configuration\" name=\"action\" >\n");
out.write("</table></span>\n");
out.write("</form></div>");
}
@ -869,7 +869,7 @@ public class I2PSnarkServlet extends HttpServlet {
return ((bytes + 512*1024*1024)/(1024*1024*1024)) + "GB";
}
private static final String HEADER = "<link href=\"../themes/console/snark.css\" rel=\"stylesheet\" type=\"text/css\" />";
private static final String HEADER = "<link href=\"../themes/console/snark.css\" rel=\"stylesheet\" type=\"text/css\" >";
private static final String TABLE_HEADER = "<table border=\"0\" class=\"snarkTorrents\" width=\"100%\" cellpadding=\"0 10px\">\n" +

View File

@ -268,6 +268,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
OutputStream out = null;
String targetRequest = null;
boolean usingWWWProxy = false;
boolean usingInternalServer = false;
String currentProxy = null;
long requestId = ++__requestId;
try {
@ -294,6 +295,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
int pos = line.indexOf(" ");
if (pos == -1) break;
method = line.substring(0, pos);
// TODO use Java URL class to make all this simpler and more robust
String request = line.substring(pos + 1);
if (request.startsWith("/") && getTunnel().getClientOptions().getProperty("i2ptunnel.noproxy") != null) {
request = "http://i2p" + request;
@ -339,8 +341,11 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
}
}
// Quick hack for foo.bar.i2p
if (host.toLowerCase().endsWith(".i2p")) {
if (host.toLowerCase().equals("proxy.i2p")) {
// so we don't do any naming service lookups
destination = "proxy.i2p";
usingInternalServer = true;
} else if (host.toLowerCase().endsWith(".i2p")) {
// Destination gets the host name
destination = host;
// Host becomes the destination key
@ -477,15 +482,15 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
}
destination = request.substring(0, pos);
line = method + " " + request.substring(pos);
}
} // end host name processing
boolean isValid = usingWWWProxy || isSupportedAddress(host, protocol);
boolean isValid = usingWWWProxy || usingInternalServer || isSupportedAddress(host, protocol);
if (!isValid) {
if (_log.shouldLog(Log.INFO)) _log.info(getPrefix(requestId) + "notValid(" + host + ")");
method = null;
destination = null;
break;
} else if (!usingWWWProxy) {
} else if ((!usingWWWProxy) && (!usingInternalServer)) {
if (_log.shouldLog(Log.INFO)) _log.info(getPrefix(requestId) + "host=getHostName(" + destination + ")");
host = getHostName(destination); // hide original host
}
@ -496,7 +501,9 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
_log.debug(getPrefix(requestId) + "HOST :" + host + ":");
_log.debug(getPrefix(requestId) + "DEST :" + destination + ":");
}
// end first line processing
} else {
if (lowercaseLine.startsWith("host: ") && !usingWWWProxy) {
line = "Host: " + host;
@ -528,14 +535,14 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
continue; // completely strip the line
}
}
if (line.length() == 0) {
String ok = getTunnel().getClientOptions().getProperty("i2ptunnel.gzip");
boolean gzip = DEFAULT_GZIP;
if (ok != null)
gzip = Boolean.valueOf(ok).booleanValue();
if (gzip) {
if (gzip && !usingInternalServer) {
// according to rfc2616 s14.3, this *should* force identity, even if
// an explicit q=0 for gzip doesn't. tested against orion.i2p, and it
// seems to work.
@ -549,7 +556,8 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
} else {
newRequest.append(line).append("\r\n"); // HTTP spec
}
}
} // end header processing
if (_log.shouldLog(Log.DEBUG))
_log.debug(getPrefix(requestId) + "NewRequest header: [" + newRequest.toString() + "]");
@ -571,7 +579,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
// Serve local proxy files (images, css linked from error pages)
// Ignore all the headers
if (destination.equals("proxy.i2p")) {
if (usingInternalServer) {
serveLocalFile(out, method, targetRequest);
s.close();
return;

View File

@ -55,7 +55,7 @@ public class I2PSOCKSTunnel extends I2PTunnelClientBase {
I2PSocket destSock = serv.getDestinationI2PSocket(this);
new I2PTunnelRunner(clientSock, destSock, sockLock, null, mySockets);
} catch (SOCKSException e) {
_log.error("Error from SOCKS connection: " + e.getMessage());
_log.error("Error from SOCKS connection", e);
closeSocket(s);
}
}

View File

@ -89,7 +89,7 @@
<!-- jar again to get the latest messages_*.class files -->
<jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class" update="true" />
</target>
<target name="poupdate" depends="compile">
<target name="poupdate" depends="build">
<ant target="war" />
<!-- Update the messages_*.po files.
We need to supply the bat file for windows, and then change the fail property to true -->

View File

@ -232,7 +232,7 @@ public class ConfigNetHandler extends FormHandler {
if (_requireIntroductions) {
_context.router().setConfigSetting(UDPTransport.PROP_FORCE_INTRODUCERS, "true");
addFormNotice(_("Requiring SSU introduers"));
addFormNotice(_("Requiring SSU introducers"));
} else {
_context.router().removeConfigSetting(UDPTransport.PROP_FORCE_INTRODUCERS);
}

View File

@ -36,10 +36,10 @@ public class ConfigUIHelper extends HelperBase {
return rv;
}
private static final String langs[] = {"de", "en", "fr", "nl", "se", "zh"};
private static final String flags[] = {"de", "us", "fr", "nl", "se", "cn"};
private static final String langs[] = {"de", "en", "fr", "nl", "ru", "sv", "zh"};
private static final String flags[] = {"de", "us", "fr", "nl", "ru", "se", "cn"};
private static final String xlangs[] = {_x("German"), _x("English"), _x("French"),
_x("Dutch"), _x("Swedish"), _x("Chinese")};
_x("Dutch"), _x("Russian"), _x("Swedish"), _x("Chinese")};
/** todo sort by translated string */
public String getLangSettings() {

View File

@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import net.i2p.data.DataHelper;
public class NetDbHelper extends HelperBase {
private String _routerPrefix;
@ -12,7 +13,11 @@ public class NetDbHelper extends HelperBase {
public NetDbHelper() {}
public void setRouter(String r) { _routerPrefix = r; }
public void setRouter(String r) {
if (r != null)
_routerPrefix = DataHelper.stripHTML(r); // XSS
}
public void setFull(String f) {
try {
_full = Integer.parseInt(f);

View File

@ -46,13 +46,13 @@ class ProfileOrganizerRenderer {
Hash peer = (Hash)iter.next();
if (_organizer.getUs().equals(peer)) continue;
PeerProfile prof = _organizer.getProfile(peer);
if (_organizer.isWellIntegrated(peer)) {
integratedPeers.add(prof);
} else {
//if (_organizer.isWellIntegrated(peer)) {
// integratedPeers.add(prof);
//} else {
RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
if (info != null && info.getCapabilities().indexOf("f") >= 0)
integratedPeers.add(prof);
}
//}
if (prof.getLastSendSuccessful() <= hideBefore) {
older++;
continue;

View File

@ -32,15 +32,18 @@
<div class="wideload"><p><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" />" />
<%=intl._("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>
-->
*********/ %>
</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" />" />
<%=intl._("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
@ -48,6 +51,7 @@
<i>KBps = kilobytes per second = 1024 bytes per second = 8192 bits per second.<br>
A negative rate sets the default.</i><br>
-->
*********/ %>
</tr><tr>
<td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> <%=intl._("Share")%></td>
<td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)
@ -121,6 +125,7 @@
</p><p><b><%=intl._("UDP Configuration:")%></b><br>
<%=intl._("UDP port:")%>
<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
@ -128,6 +133,7 @@
</p><p>
Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br>
-->
*********/ %>
</p><p>
<b><%=intl._("TCP Configuration")%>:</b><br>
<%=intl._("Externally reachable hostname or IP address")%>:<br>
@ -163,10 +169,12 @@
<%=intl._("Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm.")%>
<%=intl._("Certain firewalls such as symmetric NATs may not work well with I2P.")%>
</p>
<% /********
<!-- let's keep this simple...
<input type="submit" name="recheckReachability" value="Check network reachability..." />
</p>
-->
*********/ %>
<p>
<%=intl._("UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports.")%>
<%=intl._("UPnP support is beta, and may not work for any number of reasons")%>:

View File

@ -24,7 +24,7 @@
<% String peer = "";
if (request.getParameter("peer") != null)
peer = request.getParameter("peer");
peer = net.i2p.data.DataHelper.stripHTML(request.getParameter("peer")); // XSS
%>
<div class="configure">
<form action="configpeer.jsp" method="POST">

View File

@ -3,5 +3,5 @@
<meta http-equiv="pragma" content="no-cache" />
</head>
<body>
The I2P Tunnel Manager is not currently running. Please visit the<a href="/configclients.jsp">Client Configuration</a> page 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>

View File

@ -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=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\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.jsi" %>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -35,6 +35,8 @@ import java.util.Iterator;
import java.util.LinkedList;
import java.util.Properties;
import net.i2p.data.DataHelper;
public class AddressbookBean
{
private String book, action, serial, lastSerial, filter, search, hostname, destination;
@ -140,7 +142,7 @@ public class AddressbookBean
return book;
}
public void setBook(String book) {
this.book = book;
this.book = DataHelper.stripHTML(book); // XSS
}
public String getSerial() {
lastSerial = "" + Math.random();
@ -326,7 +328,7 @@ public class AddressbookBean
return destination;
}
public void setDestination(String destination) {
this.destination = destination;
this.destination = DataHelper.stripHTML(destination); // XSS
}
public String getHostname() {
return hostname;
@ -338,7 +340,7 @@ public class AddressbookBean
deletionMarks.addLast( name );
}
public void setHostname(String hostname) {
this.hostname = hostname;
this.hostname = DataHelper.stripHTML(hostname); // XSS
}
private int getBeginInt() {
return Math.max(0, Math.min(entries.length - 1, beginIndex));

View File

@ -348,19 +348,19 @@
</copy>
<!-- make a "classic" theme -->
<copy todir="pkg-temp/docs/themes/console/classic/" >
<fileset dir="installer/resources/themes/console/classic/" />
<fileset dir="installer/resources/themes/console/classic/" excludes="**/i2plogo.png" />
</copy>
<!-- Add dark theme -->
<copy todir="pkg-temp/docs/themes/console/dark/" >
<fileset dir="installer/resources/themes/console/dark/" />
<fileset dir="installer/resources/themes/console/dark/" excludes="**/i2plogo.png" />
</copy>
<!-- Add light theme -->
<copy todir="pkg-temp/docs/themes/console/light/" >
<fileset dir="installer/resources/themes/console/light/" />
<fileset dir="installer/resources/themes/console/light/" excludes="**/i2plogo.png" />
</copy>
<!-- Add midnight theme -->
<copy todir="pkg-temp/docs/themes/console/midnight/" >
<fileset dir="installer/resources/themes/console/midnight/" />
<fileset dir="installer/resources/themes/console/midnight/" excludes="**/i2plogo.png" />
</copy>
<!-- Add shared images.. these are subject to flux and change! -->
<copy todir="pkg-temp/docs/themes/console/images/" >

View File

@ -16,7 +16,7 @@ package net.i2p;
public class CoreVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = "0.7.7";
public final static String VERSION = "0.7.8";
public static void main(String args[]) {
System.out.println("I2P Core version: " + VERSION);

View File

@ -1,3 +1,41 @@
* 2009-12-08 0.7.8 released
2009-12-08 zzz
* Misc. cleanups after review, prep for release
2009-12-06 zzz
* netdb.jsp: Fix bug caused by XSS fix
* Translations: drop ru until after release
2009-12-05 zzz
* Build: Fix poupdate dependency
* Console: Add Russian option
2009-12-05 sponge
* BOB: fix a critical bug causing ghosts on probes
and remove unused code.
2009-12-04 zzz
* Console: Close up some possible XSS (thanks Pragmatk)
* i2psnark: Config cleanup, more HTML transitional fixes
* readme*.html: Point to translated pages on www.i2p2.i2p
2009-11-29 zzz
* config.jsp: Comment out unused stuff better
* profiles.jsp: Hide non-ff from ff table
* HTTP Proxy: Don't send proxy.i2p to the naming service,
it was making the error pages load slowly
* SOCKS Proxy: Fix an error message
* Transport: Fix the default inbound burst
2009-11-29 sponge
* net.i2p.router.transport.udp deadwood code cleanup.
* documented rare NPE in InboundEstablishState.java.
2009-11-28 sponge
* Improvement to BOB's TCPio to hopefully lower load average. It seems
to be helping a little when stress-tested with Robert.
2009-11-24 zzz
* DataStructures: Remove unused Logs
* OrderedProperties: Simplify, use in i2psnark

View File

@ -4,7 +4,7 @@
<info>
<appname>i2p</appname>
<appversion>0.7.7</appversion>
<appversion>0.7.8</appversion>
<authors>
<author name="I2P" email="http://forum.i2p2.de/"/>
</authors>

View File

@ -1,42 +1,36 @@
<i2p.news date="$Date: 2009-10-12 00:00:00 $">
<i2p.release version="0.7.7" date="2009/10/12" minVersion="0.6"/>
<h4>Congratulations on getting I2P installed!</h4>
<ul>
<li>
<i2p.news date="$Date: 2009-12-08 00:00:00 $">
<i2p.release version="0.7.8" date="2009/12/08" minVersion="0.6"/>
<h4><ul><li>Congratulations on getting I2P installed!</li></ul></h4>
<p>
<b>Welcome to I2P!</b>
Please <b>have patience</b> as I2P boots up and finds peers.
</li>
<li>
</p>
<p>
While you are waiting, please <b>adjust your bandwidth settings</b> on the
<a href="config.jsp">configuration page</a>.
</li>
<li>
</p>
<p>
Once you have a "shared clients" destination listed on the left,
please <b>check out</b> our
<a href="http://www.i2p2.i2p/faq.html">FAQ</a>.
</li>
<li>
</p>
<p>
Point your IRC client to <b>localhost:6668</b> and say hi to us on #i2p.
</li>
</ul>
<br>
<h4>Gratulation zur erfolgreichen Installation von I2P!</h4>
<ul>
<li>
</p>
<h4><ul><li>Gratulation zur erfolgreichen Installation von I2P!</li></ul></h4>
<p>
<b>Willkommen bei I2P!</b>
Bitte noch <b>etwas Geduld</b> w&auml;hrend I2P startet und weitere I2P Router findet.
</li>
<li>
</p>
<p>
Passe bitte In der Wartezeit <b>deine Einstellungen zur Bandbreite</b> auf der
<a href="config.jsp">Einstellungsseite</a> an.
</li>
<li>
</p>
<p>
Sobald auf der linken Seite eine "shared clients" Verbindung aufgelistet ist <b>besuche bitte</b> unsere <a href="http://www.i2p2.i2p/faq_de.html">FAQ</a>.
</li>
<li>
</p>
<p>
Verbinde deinen IRC Klienten mit dem Server auf <b>localhost:6668</b> und sage Hallo zu uns im Kanal #i2p.
</li>
</ul>
</p>
</i2p.news>

View File

@ -1,42 +1,26 @@
<i2p.news date="$Date: 2009-10-12 00:00:00 $">
<i2p.release version="0.7.7" date="2009/10/12" minVersion="0.6"
anonurl="http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/i2p/i2pupdate.sud"
publicurl="http://dev.i2p.net/i2p/i2pupdate.sud"
anonannouncement="http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/pipermail/i2p/2005-September/000878.html"
publicannouncement="http://dev.i2p.net/pipermail/i2p/2005-September/000878.html" />
<i2p.notes date="2005/08/08"
anonurl="http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/pipermail/i2p/2005-July/000826.html"
publicurl="http://dev.i2p.net/pipermail/i2p/2005-July/000826.html"
anonlogs="http://i2p/Nf3ab-ZFkmI-LyMt7GjgT-jfvZ3zKDl0L96pmGQXF1B82W2Bfjf0n7~288vafocjFLnQnVcmZd~-p0-Oolfo9aW2Rm-AhyqxnxyLlPBqGxsJBXjPhm1JBT4Ia8FB-VXt0BuY0fMKdAfWwN61-tj4zIcQWRxv3DFquwEf035K~Ra4SWOqiuJgTRJu7~o~DzHVljVgWIzwf8Z84cz0X33pv-mdG~~y0Bsc2qJVnYwjjR178YMcRSmNE0FVMcs6f17c6zqhMw-11qjKpY~EJfHYCx4lBWF37CD0obbWqTNUIbL~78vxqZRT3dgAgnLixog9nqTO-0Rh~NpVUZnoUi7fNR~awW5U3Cf7rU7nNEKKobLue78hjvRcWn7upHUF45QqTDuaM3yZa7OsjbcH-I909DOub2Q0Dno6vIwuA7yrysccN1sbnkwZbKlf4T6~iDdhaSLJd97QCyPOlbyUfYy9QLNExlRqKgNVJcMJRrIual~Lb1CLbnzt0uvobM57UpqSAAAA/meeting141"
publiclogs="http://www.i2p.net/meeting141" />
<h4><ul><li>2009-10-18: Website &amp; Console Translation - Help Needed!</li></ul></h4>
<i2p.news date="$Date: 2009-12-08 00:00:00 $">
<i2p.release version="0.7.8" date="2009/12/08" minVersion="0.6" />
<h4><ul><li>2009-12-08: <b>0.7.8 <a href="http://www.i2p2.i2p/release-0.7.8.html">Released</a></b></li></ul></h4>
<p>
Shortly after the release of <a href="http://www.i2p2.i2p/release-0.7.7.html">I2P version 0.7.7</a>, we are happy to announce the first stage of the <a href="http://i2p2.i2p/index_zh.html">Chinese translation</a> of the <a href="http://www.i2p2.i2p">website</a>, thanks to our new Chinese translator, "walking". This we hope is the start of a bigger trend to get the website and console translated into YOUR language. Please visit the #i2p chat channel on <a href="irc://irc.freenode.net/i2p"> Freenode IRC</a> or anonymously over I2P via <a href="irc://127.0.0.1:6668/i2p">localhost:6668</a> if you wish to help. We appeal at this time especially to French and Spanish translators, since we seem to have plenty of you running I2P!</p>
<h4><ul><li>2009-10-12: <b>0.7.7 <a href="http://www.i2p2.i2p/release-0.7.7.html">Released</a></b></li></ul></h4>
<p>
I2P version 0.7.7 contains several anonymity improvements.
The use of session keys for crypto was completely reworked,
and <a href="/i2psnark">I2PSnark</a> now uses its own tunnels for tracker communication.
Work continues on improving the router console,
including conformance to HTML standards, better support of UTF-8, and dr|z3d's ongoing
<a href="/configui.jsp">console theme</a> wizardry, including an extensively
reworked "classic" theme optimized for less capable computers or browsers.
The 9th I2P release for 2009,
0.7.8, contains initial support for router console translations, and
changes to the floodfill system which lay the foundation for supporting large growth in the network.
</p><p>
Work also continues on increasing speeds, both by reducing the
number of session keys transferred, by improving the
methods of dropping messages during overload, and by reducing
drops by high-bandwidth routers.
There is a new <a href="/configupdate.jsp">unsigned update option</a>
for those of you that would like automatic updates to bleeding-edge development versions.
To prevent easy blocking of I2P by malicious firewalls, the release randomizes the I2P port for new installs.
For existing installs, please help those who are vulnerable to blocking by changing UDP to a random port on
<a href="config.jsp">the network configuration page</a>
and adjusting your firewall if necessary.
Say goodbye to port 8887!
</p><p>
The release also contains several changes to reduce memory and CPU usage,
The release also contains more changes to reduce memory and CPU usage,
and a large assortment of bug fixes.
Upgrading is recommended.
We especially encourage those of you still running release 0.7.6 or earlier to upgrade as soon as possible.
Please give the
developers feedback on IRC #i2p or <a href="http://forum.i2p">forum.i2p</a>
and <a href="http://www.i2p2.i2p/getinvolved.html">get involved</a>!
and <a href="http://www.i2p2.i2p/getinvolved.html">get involved</a>
or <a href="http://www.i2p2.i2p/donate.html">donate</a>!
We are also looking for help on new and existing translations.
Please volunteer on IRC #i2p.
</p>
</i2p.news>

View File

@ -21,4 +21,4 @@ Proxy-Connection: close
或您的路由器在网络中的整合度不佳。
你可以尝试
<a href="javascript: window.location.reload()">重试</a>。
<hr><b>找不到下目标:</b><BR><BR>
<hr><b>找不到下目标:</b><BR><BR>

View File

@ -4,6 +4,7 @@
<a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
</div>
<div class="welcome"><h2>Welcome to I2P!</h2></div>

View File

@ -1,5 +1,5 @@
<div align="right">
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
</div>
<div class="welcome"><h2>Willkommen zu I2P!</h2></div>
<p>Wenn Du gerade I2P gestartet hast, sollten die "Active:" Zahlen links in den n&auml;chsten paar Minuten anwachsen und Du siehst dann dort ein "shared clients" lokales Ziel gelistet (falls nicht, <a href="#trouble">siehe Unten</a>). Sobald das erscheint, kannst Du:</p>

View File

@ -1,5 +1,5 @@
<div align="right">
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
</div>
<div class="welcome"><h2>Bienvenu a I2P!</h2></div>
<p>Si vous venez juste de lancer I2P, les chiffres sur la gauche &agrave; cot&eacute; de Active devraient commencer &agrave; augmenter dans les prochaines minutes et vous verrez un "Shared client" en destination locale list&eacute;s sur la gauche (si non, <a href=#trouble>voir plus bas</a>). Une fois qu'ils apparaissent, vous pouvez:</p>
@ -9,8 +9,8 @@
<li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> et
<a href="http://perv.i2p/stats.cgi">perv.i2p</a>: listent les eepsites actifs</li>
<li><a href="http://forum.i2p/">forum.i2p</a>: une connection s&eacute;curis&eacute;e et anonyme vers <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li>
<li><a href="http://www.i2p2.i2p/">www.i2p2.i2p</a> et le miroir <a href="http://i2p-projekt.i2p">i2p-projekt.i2p</a>:
connections s&eacute;curis&eacute;es et anonyme vers <a href="http://www.i2p2.de/">www.i2p2.de</a></li>
<li><a href="http://www.i2p2.i2p/index_fr.html">www.i2p2.i2p</a> et le miroir <a href="http://i2p-projekt.i2p/index_fr.html">i2p-projekt.i2p</a>:
connections s&eacute;curis&eacute;es et anonyme vers <a href="http://www.i2p2.de/index_fr.html">www.i2p2.de</a></li>
<li><a href="http://eepsites.i2p/">eepsites.i2p</a>: un moteur de recherche d'eepsites</li>
<li><a href="http://ugha.i2p/">ugha.i2p</a>: l'eepsite d'ugha, un wiki que chaucun peut &eacute;diter ainsi que</li>
<li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: un proxy Freenet 0.5</li>
@ -38,4 +38,4 @@
<h2><a name="trouble">D&eacute;pannage</a></h2>
<p>Soyez patient - i2p peut s'av&eacute;rer lent &agrave; d&eacute;marrer la premi&egrave;re fois car il recherche des pairs. Si, apr&egrave;s 30 minutes, votre Actives: connect&eacute;/r&eacute;cent compte moins de 10 pairs connect&eacute;s, vous devez ouvrir le port 8887 sur votre pare-feu pour avoir une meilleure connection. Si vous ne pouvez acc&eacute;der &agrave; aucun eepsite (m&ecirc;me <a href="http://www.i2p2.i2p/">www.i2p2.i2p</a>), soyez s&ucirc;r que votre navigateur utilise bien le proxy 127.0.0.1 sur le port 4444. Vous pouvez aussi faire part de votre d&eacute;marche sur le <a href="http://www.i2p2.i2p/">site web I2P</a>, poster des message sur le <a href="http://forum.i2p/">forum de discussion</a>, ou passer par #i2p ou #i2p-chat sur IRC sur le serveur <a href="irc://irc.freenode.net/#i2p">irc.freenode.net</a>, irc.postman.i2p ou irc.freshcoffee.i2p (ils sont li&eacute;s).</p><hr />
<p>Soyez patient - i2p peut s'av&eacute;rer lent &agrave; d&eacute;marrer la premi&egrave;re fois car il recherche des pairs. Si, apr&egrave;s 30 minutes, votre Actives: connect&eacute;/r&eacute;cent compte moins de 10 pairs connect&eacute;s, vous devez ouvrir le port 8887 sur votre pare-feu pour avoir une meilleure connection. Si vous ne pouvez acc&eacute;der &agrave; aucun eepsite (m&ecirc;me <a href="http://www.i2p2.i2p/index_fr.html">www.i2p2.i2p</a>), soyez s&ucirc;r que votre navigateur utilise bien le proxy 127.0.0.1 sur le port 4444. Vous pouvez aussi faire part de votre d&eacute;marche sur le <a href="http://www.i2p2.i2p/index_fr.html">site web I2P</a>, poster des message sur le <a href="http://forum.i2p/">forum de discussion</a>, ou passer par #i2p ou #i2p-chat sur IRC sur le serveur <a href="irc://irc.freenode.net/#i2p">irc.freenode.net</a>, irc.postman.i2p ou irc.freshcoffee.i2p (ils sont li&eacute;s).</p><hr />

View File

@ -1,5 +1,5 @@
<div align="right">
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
</div>
<div class="welcome"><h2>Welkom bij I2P!</h2></div>
<p>Als je net I2P opgestart hebt, zullen de 'Active:' (Actieve) getallen aan de linkerkant in de komende minuten stijgen, en je zal een "Shared clients" (Gedeelde clients) lokale bestemming zien staan aan de linkerkant (indien niet, <a href=#trouble>zie hieronder</a>). Eenmaal je deze bestemming ziet, kan je:</p>

View File

@ -0,0 +1,63 @@
<div align="right">
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a>
<a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
</div>
<div class="welcome"><h2>Добро пожаловать в I2P!</h2></div>
<p>Когда Вы запускаете I2P впервые — числа в графе «Active» (слева) начнут расти постепенно, это может занять несколько минут. Затем в списке «Local Destinations» появится запись «shared clients» (если этого не случилось, <a href="#trouble">см. «устранение неполадок»</a>).
<p>После появления записи «shared clients» Вы можете:</p>
<ul>
<li><b>Просматривать I2P-сайты</b> (веб-сайты хостящиеся анонимно внутри I2P сети). Для этого настройте в Вашем браузере <b>HTTP прокси-сервер 127.0.0.1 порт 4444</b>. С этими настройками попробуйте зайти на I2P-сайты по ссылкам ниже:<br>
<ul class="links">
<li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> и <a href="http://perv.i2p/stats.cgi">perv.i2p</a> — автоматически обновляющиеся списки активных I2P-сайтов</li>
<li><a href="http://forum.i2p/">forum.i2p</a> — безопасное и анонимное зеркало для форума <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li>
<li><a href="http://www.i2p2.i2p/">www.i2p2.i2p</a> или <a href="http://i2p-projekt.i2p">i2p-projekt.i2p</a> — безопасное и анонимное зеркало для <a href="http://www.i2p2.de/">www.i2p2.de</a></li>
<li><a href="http://eepsites.i2p/">eepsites.i2p</a> — анонимная поисковая система по I2P-сайтам</li>
<li><a href="http://ugha.i2p/">ugha.i2p</a> — I2P-вики, которую может редактировать любой пользователь, плюс множество ссылок</li>
<li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a> — Freenet-прокси</li>
<li><a href="http://echelon.i2p">echelon.i2p</a> — архив программного обеспечения для I2P</li>
<li><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a> — анонимный pastebin-сервис</li>
</ul><br>
Существует множество других I2P-сайтов — пройдитесь по этому списку, добавьте в свои закладки всё, что Вам понравится. Возвращайтесь почаще!
</li><br />
<li class="tidylist"><b>Анонимно просматривать обычные веб-сайты</b> — в I2P по умолчанию настроен глобальный анонимный «внешний прокси» («Outproxy»), через который будут перенаправляться Ваши запросы к http-серверам обычного интернета. (При необходимости Вы можете отключить эту функцию в свойствах i2p-туннеля <a href="/i2ptunnel/">«eepProxy»</a>)</li>
<li class="tidylist"><b>Передавать файлы</b> — для этого есть встроенный <a href="/i2psnark">порт</a> BitTorrent-клиента <a href="http://www.klomp.org/snark/">Snark</a>.</li>
<li class="tidylist"><b>Пользоваться анонимной почтой</b> — спасибо postman-у за создание почтовой системы <a href="http://hq.postman.i2p/">hq.postman.i2p</a> совместимой с обычными почтовыми клиентами (через протоколы POP3/SMTP). С её помощью можно обмениваться почтой как внутри I2P, так и с адресами обычного интернета. Мы также предлагаем попробовать <a href="/susimail/susimail">Susimail</a> — встроенный почтовый клиент с веб-интерфейсом, уже настроенный на работу с сервером postman-а, вам лишь остается создать аккаунт.</li>
<li class="tidylist"><b>Общаться в анонимных чатах</b> — запустите любой удобный для Вас IRC-клиент и подключитесь к серверу <b>127.0.0.1 порт 6668</b>. По этому адресу расположен вход на два анонимно хостящихся IRC-сервера. Ваше реальное местоположение будет скрыто как от сервера, так и от других пользователей.
<li class="tidylist"><b>Вести анонимный блог</b> — попробуйте <a href="http://syndie.i2p2.de/">Syndie</a></li>
<li class="tidylist">и многое другое</li>
</ul>
<h2>Хотите завести собственный I2P-сайт?</h2>
<p>Для этого в I2P есть встроенный http-сервер <a href="http://jetty.mortbay.org/">Jetty</a> работающий по адресу <a href="http://127.0.0.1:7658/">http://127.0.0.1:7658/</a>.
Просто поместите свои файлы в директорию <code>eepsite/docroot/</code> (<code>.war</code>-файлы JSP/сервлетов в директорию <code>eepsite/webapps/</code>, а CGI-скрипты в директорию <code>eepsite/cgi-bin/</code>).
После этого достаточно запустить i2p-туннель <a href="/i2ptunnel/">«eepsite tunnel»</a>, указывающий на Ваш сайт, и он станет доступным для других пользователей.</p>
<p>Подробную пошаговую инструкцию Вы можете найти на <a href="http://127.0.0.1:7658/">временной страничке-заготовке Вашего сайта</a>.</ps>
<h2><a name="trouble">Поиск и устранение неполадок</a></h2>
<p>Наберитесь терпения — первый старт I2P может занять до получаса из-за начального поиска пиров.
<p>Если через 30 минут в графе «Active» все еще меньше 10 подсоединенных пиров, то для повышения качества соединения Вам нужно открыть порт для I2P на Вашем файерволе или роутере (по умолчанию I2P использует порт 8887).</p>
<p>Если Вы не можете соединиться ни с одним I2P-сайтом (даже <a href="http://www.i2p2.i2p/">www.i2p2.i2p</a>), проверьте, включен ли в Вашем браузере HTTP-прокси 127.0.0.1 порт 4444.</p>
<p>Кроме того, Вам может пригодиться справочная информация на <a href="http://www.i2p2.de/">сайте I2P</a>. Не стесняйтесь задать интересующие вас вопросы на <a href="http://forum.i2p2.de/">форуме I2P</a> или на IRC каналах #i2p и #i2p-chat на серверах <a href="irc://irc.freenode.net/#i2p">irc.freenode.net</a>, irc.postman.i2p или irc.freshcoffee.i2p (последние два объединены в одну сеть, а на freenode работает бот-ретранслятор).</p>
<hr>

View File

@ -1,5 +1,5 @@
<div align="right">
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
<div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
</div>
<div class="welcome"><h2>Welcome to I2P!</h2></div>
<p>Om du just har startat I2P kommer de "Aktiva: #/#" b&ouml;rja &ouml;ka inom

View File

@ -4,6 +4,7 @@
<a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Fran&ccedil;ais" alt="Fran&ccedil;ais"></a>
<a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/index.jsp?lang=ru"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div>
</div>
<div class="welcome"><h2>欢迎使用 I2P!</h2></div>
@ -12,7 +13,7 @@
<li><B>浏览 I2P 站点 "eepsites"</B> - I2P 网络内匿名运行的小站 - 您要首先设置浏览器的 <b>HTTP 代理</b> 为 127.0.0.1:4444 然后才能浏览 I2P 站点 - <ul class="links">
<li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a><a href="http://perv.i2p/stats.cgi">perv.i2p</a>:&nbsp;这两个站点用于跟踪哪些 I2P 站点在线。</li>
<li><a href="http://forum.i2p/">forum.i2p</a>:I2P官方论坛 <a href="http://forum.i2p2.de/">forum.i2p2.de</a>&nbsp;的匿名入口&nbsp;(个人的I2P站点会在论坛的EEPSITE讨论区发布)</li>
<li><a href="http://www.i2p2.i2p/">www.i2p2.i2p</a> 与镜像 <a href="http://i2p-projekt.i2p/">i2p-projekt.i2p</a>:&nbsp;可以安全匿名的访问I2P官网 <a href="http://www.i2p2.de/">www.i2p2.de</a></li>
<li><a href="http://www.i2p2.i2p/index_zh.html">www.i2p2.i2p</a> 与镜像 <a href="http://i2p-projekt.i2p/index_zh.html">i2p-projekt.i2p</a>:&nbsp;可以安全匿名的访问I2P官网 <a href="http://www.i2p2.de/index_zh.html">www.i2p2.de</a></li>
<li><a href="http://eepsites.i2p/">eepsites.i2p</a>:&nbsp;I2P网络里的 “Google” 可以用来搜索各个匿名小站</li>
<li><a href="http://ugha.i2p/">ugha.i2p</a>:UGHA 的 I2P 小站任何人都可以编辑的WIKI有丰富的链接</li>
<li><a href="http://fproxy.tino.i2p/">fproxy.tino.i2p</a>:FREENET 代理</li>
@ -34,4 +35,4 @@
<h2><a name="trouble">疑难解答</a></h2>
<p>保持耐心 - I2P 第一次启动时需要搜索节点可能比较缓慢。如果30分钟后您的活动节点计数仍在 10 个节点以下, 请在防火墙中打开 8887 端口改善连接性能。如果您根本无法打开任何EEPSITE(甚至 <a href="http://www.i2p2.i2p/">www.i2p2.i2p</a>),检查您的浏览器代理设置是否为本地的 127.0.0.1:4444。你也可以到&nbsp;<a href="http://www.i2p2.i2p/">I2P 网站</a>&nbsp;查找信息, 在 <a href="http://forum.i2p2.de/">I2P 论坛</a> 中发帖, 来 <a href="irc://irc.freenode.net/#i2p">irc.freenode.net</a> , irc.postman.i2p 或 irc.freshcoffee.i2p 上的 #i2p 或 #i2p-chat 这两个 IRC 频道上询问。 (这些服务器上的这两个频道是相通的)。</p><hr>
<p>保持耐心 - I2P 第一次启动时需要搜索节点可能比较缓慢。如果30分钟后您的活动节点计数仍在 10 个节点以下, 请在防火墙中打开 8887 端口改善连接性能。如果您根本无法打开任何EEPSITE(甚至 <a href="http://www.i2p2.i2p/index_zh.html">www.i2p2.i2p</a>),检查您的浏览器代理设置是否为本地的 127.0.0.1:4444。你也可以到&nbsp;<a href="http://www.i2p2.i2p/index_zh.html">I2P 网站</a>&nbsp;查找信息, 在 <a href="http://forum.i2p2.de/">I2P 论坛</a> 中发帖, 来 <a href="irc://irc.freenode.net/#i2p">irc.freenode.net</a> , irc.postman.i2p 或 irc.freshcoffee.i2p 上的 #i2p 或 #i2p-chat 这两个 IRC 频道上询问。 (这些服务器上的这两个频道是相通的)。</p><hr>

View File

@ -773,4 +773,4 @@ div.graphspanel form:last-child {
div.graphspanel h3 {
text-align: left;
margin: 10px 20px 10px 20px;
}
}

View File

@ -724,7 +724,7 @@ button:active {
padding: 7px 10px 5px 10px;
color: #eef;
font-size: 7pt;
width: 140px;
width: 220px;
text-align: right;
float: right;
vertical-align: middle;
@ -967,4 +967,4 @@ position: relative;
.formaction {
text-align: right;
}
}

View File

@ -723,8 +723,8 @@ button:active{
padding: 5px 5px;
color: #001;
font-size: 7pt;
width: 120px;
text-align: center;
width: 220px;
text-align: right;
float: right;
valign: middle;
}
@ -993,4 +993,4 @@ div.joblog hr {
.formaction {
text-align: right;
}
}

View File

@ -47,7 +47,7 @@ div.logo hr {
background: #99f;
height: 1px;
border: 0px solid #99f;
margin: 8px -3px;
margin: 8px -5px;
}
div.logo a:link, div.logo a:visited {
@ -103,7 +103,7 @@ div.warning hr {
background: #fb7;
height: 1px;
border: 0px solid #fb7;
margin: 10px 0 5px 0;
margin: 10px 0;
}
div.warning h3 {
@ -114,6 +114,7 @@ div.warning h3 {
font-variant: small-caps;
text-transform: capitalize;
font-size: 12.5pt;
background: none;
}
/* console error messages */
@ -220,7 +221,7 @@ div.routersummary table {
border: 0;
text-align: center !important;
margin: -5px 0px -5px 2px;
width: 185px !important;
width: 186px !important;
overflow: hidden;
font-size: 8pt;
padding: 0 -12px;
@ -257,6 +258,7 @@ div.tunnels table{
width: 16px;
text-align: right;
margin-right: -2px;
padding-right: 0;
}
div.routersummary form {
@ -564,7 +566,7 @@ h2, h3 {
.proxyfooter{
font-size: 7pt;
display: none !important;
display: none !important;
}
table {
@ -860,4 +862,12 @@ div.graphspanel h3 {
table code {
font-size: 8.5pt;
}
}
table li:last-child{
margin-bottom: 15px;
}
table ul {
font-size: 8.5pt;
}

View File

@ -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 = 21;
public final static long BUILD = 1;
/** for example "-test" */
public final static String EXTRA = "";
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;

View File

@ -42,7 +42,7 @@ public class FIFOBandwidthRefiller implements Runnable {
* adjusting bandwidth class boundaries.
*/
public static final int DEFAULT_OUTBOUND_BANDWIDTH = 40;
public static final int DEFAULT_INBOUND_BURST_BANDWIDTH = 80;
public static final int DEFAULT_INBOUND_BURST_BANDWIDTH = 96;
public static final int DEFAULT_OUTBOUND_BURST_BANDWIDTH = 40;
public static final int DEFAULT_BURST_SECONDS = 60;

View File

@ -46,7 +46,7 @@ public class InboundEstablishState {
// general status
private long _establishBegin;
private long _lastReceive;
private long _lastSend;
// private long _lastSend;
private long _nextSend;
private RemoteHostId _remoteHostId;
private int _currentState;
@ -129,6 +129,7 @@ public class InboundEstablishState {
public synchronized byte[] getSentY() {
if (_sentY == null)
// Rare NPE seen here...
_sentY = _keyBuilder.getMyPublicValueBytes();
return _sentY;
}
@ -198,7 +199,7 @@ public class InboundEstablishState {
/** note that we just sent a SessionCreated packet */
public synchronized void createdPacketSent() {
_lastSend = _context.clock().now();
// _lastSend = _context.clock().now();
if ( (_currentState == STATE_UNKNOWN) || (_currentState == STATE_REQUEST_RECEIVED) )
_currentState = STATE_CREATED_SENT;
}
@ -210,8 +211,7 @@ public class InboundEstablishState {
public synchronized void setNextSendTime(long when) { _nextSend = when; }
/** RemoteHostId, uniquely identifies an attempt */
// FIXME Exporting non-public type through public API FIXME
public RemoteHostId getRemoteHostId() { return _remoteHostId; }
RemoteHostId getRemoteHostId() { return _remoteHostId; }
public synchronized void receiveSessionConfirmed(UDPPacketReader.SessionConfirmedReader conf) {
if (_receivedIdentity == null)

View File

@ -157,8 +157,7 @@ public class IntroductionManager {
return found;
}
/* FIXME Exporting non-public type through public API FIXME */
public void receiveRelayIntro(RemoteHostId bob, UDPPacketReader reader) {
void receiveRelayIntro(RemoteHostId bob, UDPPacketReader reader) {
if (_context.router().isHidden())
return;
if (_log.shouldLog(Log.INFO))
@ -167,8 +166,7 @@ public class IntroductionManager {
_transport.send(_builder.buildHolePunch(reader));
}
/* FIXME Exporting non-public type through public API FIXME */
public void receiveRelayRequest(RemoteHostId alice, UDPPacketReader reader) {
void receiveRelayRequest(RemoteHostId alice, UDPPacketReader reader) {
if (_context.router().isHidden())
return;
long tag = reader.getRelayRequestReader().readTag();

View File

@ -413,8 +413,7 @@ public class OutboundEstablishState {
}
/** uniquely identifies an attempt */
/* FIXME Exporting non-public type through public API FIXME */
public RemoteHostId getRemoteHostId() { return _remoteHostId; }
RemoteHostId getRemoteHostId() { return _remoteHostId; }
/** we have received a real data packet, so we're done establishing */
public synchronized void dataReceived() {

View File

@ -26,7 +26,7 @@ public class OutboundMessageFragments {
private RouterContext _context;
private Log _log;
private UDPTransport _transport;
private ActiveThrottle _throttle; // LINT not used ??
// private ActiveThrottle _throttle; // LINT not used ??
/** peers we are actively sending messages to */
private final List _activePeers;
private boolean _alive;
@ -34,8 +34,8 @@ public class OutboundMessageFragments {
private int _nextPeer;
private PacketBuilder _builder;
/** if we can handle more messages explicitly, set this to true */
private boolean _allowExcess; // LINT not used??
private volatile long _packetsRetransmitted; // LINT not used??
// private boolean _allowExcess; // LINT not used??
// private volatile long _packetsRetransmitted; // LINT not used??
// private static final int MAX_ACTIVE = 64; // not used.
// don't send a packet more than 10 times
@ -45,12 +45,12 @@ public class OutboundMessageFragments {
_context = ctx;
_log = ctx.logManager().getLog(OutboundMessageFragments.class);
_transport = transport;
_throttle = throttle;
// _throttle = throttle;
_activePeers = new ArrayList(256);
_nextPeer = 0;
_builder = new PacketBuilder(ctx, transport);
_alive = true;
_allowExcess = false;
// _allowExcess = false;
_context.statManager().createRateStat("udp.sendVolleyTime", "Long it takes to send a full volley", "udp", UDPTransport.RATES);
_context.statManager().createRateStat("udp.sendConfirmTime", "How long it takes to send a message and get the ACK", "udp", UDPTransport.RATES);
_context.statManager().createRateStat("udp.sendConfirmFragments", "How many fragments are included in a fully ACKed message", "udp", UDPTransport.RATES);
@ -376,7 +376,7 @@ public class OutboundMessageFragments {
if (state.getPushCount() > 1) {
int toSend = fragments-sparseCount;
peer.messageRetransmitted(toSend);
_packetsRetransmitted += toSend; // lifetime for the transport
// _packetsRetransmitted += toSend; // lifetime for the transport
_context.statManager().addRateData("udp.peerPacketsRetransmitted", peer.getPacketsRetransmitted(), peer.getPacketsTransmitted());
_context.statManager().addRateData("udp.packetsRetransmitted", state.getLifetime(), peer.getPacketsTransmitted());
if (_log.shouldLog(Log.INFO))

View File

@ -32,7 +32,7 @@ public class OutboundMessageState {
private long _nextSendTime;
private int _pushCount;
private short _maxSends;
private int _nextSendFragment;
// private int _nextSendFragment;
public static final int MAX_MSG_SIZE = 32 * 1024;
/** is this enough for a high-bandwidth router? */
@ -45,7 +45,7 @@ public class OutboundMessageState {
_log = _context.logManager().getLog(OutboundMessageState.class);
_pushCount = 0;
_maxSends = 0;
_nextSendFragment = 0;
// _nextSendFragment = 0;
}
public boolean initialize(OutNetMessage msg) {

View File

@ -16,14 +16,14 @@ public class OutboundRefiller implements Runnable {
private OutboundMessageFragments _fragments;
private MessageQueue _messages;
private boolean _alive;
private Object _refillLock;
// private Object _refillLock;
public OutboundRefiller(RouterContext ctx, OutboundMessageFragments fragments, MessageQueue messages) {
_context = ctx;
_log = ctx.logManager().getLog(OutboundRefiller.class);
_fragments = fragments;
_messages = messages;
_refillLock = this;
// _refillLock = this;
_context.statManager().createRateStat("udp.timeToActive", "Message lifetime until it reaches the outbound fragment queue", "udp", UDPTransport.RATES);
}

View File

@ -879,8 +879,7 @@ public class PacketBuilder {
*/
private static final byte PEER_RELAY_INTRO_FLAG_BYTE = (UDPPacket.PAYLOAD_TYPE_RELAY_INTRO << 4);
/* FIXME Exporting non-public type through public API FIXME */
public UDPPacket buildRelayIntro(RemoteHostId alice, PeerState charlie, UDPPacketReader.RelayRequestReader request) {
UDPPacket buildRelayIntro(RemoteHostId alice, PeerState charlie, UDPPacketReader.RelayRequestReader request) {
UDPPacket packet = UDPPacket.acquire(_context, false);
byte data[] = packet.getPacket().getData();
Arrays.fill(data, 0, data.length, (byte)0x0);
@ -930,8 +929,7 @@ public class PacketBuilder {
*/
private static final byte PEER_RELAY_RESPONSE_FLAG_BYTE = (UDPPacket.PAYLOAD_TYPE_RELAY_RESPONSE << 4);
/* FIXME Exporting non-public type through public API FIXME */
public UDPPacket buildRelayResponse(RemoteHostId alice, PeerState charlie, long nonce, SessionKey aliceIntroKey) {
UDPPacket buildRelayResponse(RemoteHostId alice, PeerState charlie, long nonce, SessionKey aliceIntroKey) {
InetAddress aliceAddr = null;
try {
aliceAddr = InetAddress.getByAddress(alice.getIP());

View File

@ -36,8 +36,7 @@ public class PacketHandler {
/** let packets be up to 30s slow */
private static final long GRACE_PERIOD = Router.CLOCK_FUDGE_FACTOR + 30*1000;
/* FIXME Exporting non-public type through public API FIXME */
public PacketHandler(RouterContext ctx, UDPTransport transport, UDPEndpoint endpoint, EstablishmentManager establisher, InboundMessageFragments inbound, PeerTestManager testManager, IntroductionManager introManager) {// LINT -- Exporting non-public type through public API
PacketHandler(RouterContext ctx, UDPTransport transport, UDPEndpoint endpoint, EstablishmentManager establisher, InboundMessageFragments inbound, PeerTestManager testManager, IntroductionManager introManager) {// LINT -- Exporting non-public type through public API
_context = ctx;
_log = ctx.logManager().getLog(PacketHandler.class);
_transport = transport;

View File

@ -10,14 +10,14 @@ import net.i2p.util.Log;
*
*/
public class PacketPusher implements Runnable {
private RouterContext _context;
// private RouterContext _context;
private Log _log;
private OutboundMessageFragments _fragments;
private UDPSender _sender;
private boolean _alive;
public PacketPusher(RouterContext ctx, OutboundMessageFragments fragments, UDPSender sender) {
_context = ctx;
// _context = ctx;
_log = ctx.logManager().getLog(PacketPusher.class);
_fragments = fragments;
_sender = sender;

View File

@ -72,7 +72,7 @@ public class PeerState {
/** how many consecutive messages have we sent and not received an ACK to */
private int _consecutiveFailedSends;
/** when did we last have a failed send (beginning of period) */
private long _lastFailedSendPeriod;
// private long _lastFailedSendPeriod;
/** list of messageIds (Long) that we have received but not yet sent */
private final List _currentACKs;
/**
@ -805,7 +805,7 @@ public class PeerState {
_concurrentMessagesActive = 0;
_consecutiveFailedSends = 0;
_lastFailedSendPeriod = -1;
// _lastFailedSendPeriod = -1;
if (numSends < 2) {
if (_context.random().nextInt(_concurrentMessagesAllowed) <= 0)
_concurrentMessagesAllowed++;
@ -1003,8 +1003,7 @@ public class PeerState {
return MAX_RTO;
}
/* FIXME Exporting non-public type through public API FIXME */
public RemoteHostId getRemoteHostId() { return _remoteHostId; }
RemoteHostId getRemoteHostId() { return _remoteHostId; }
public int add(OutboundMessageState state) {
if (_dead) {

View File

@ -4,7 +4,6 @@ import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import net.i2p.router.CommSystemFacade;
import net.i2p.router.RouterContext;
import net.i2p.util.Log;

View File

@ -9,14 +9,14 @@ import net.i2p.data.i2np.I2NPMessage;
import net.i2p.router.OutNetMessage;
import net.i2p.router.RouterContext;
import net.i2p.util.I2PThread;
import net.i2p.util.Log;
// import net.i2p.util.Log;
/**
*
*/
class UDPFlooder implements Runnable {
private RouterContext _context;
private Log _log;
// private Log _log;
private UDPTransport _transport;
private final List _peers;
private boolean _alive;
@ -24,7 +24,7 @@ class UDPFlooder implements Runnable {
public UDPFlooder(RouterContext ctx, UDPTransport transport) {
_context = ctx;
_log = ctx.logManager().getLog(UDPFlooder.class);
// _log = ctx.logManager().getLog(UDPFlooder.class);
_transport = transport;
_peers = new ArrayList(4);
ctx.random().nextBytes(_floodData);

View File

@ -38,7 +38,7 @@ public class UDPPacket {
private long _beforeReceiveFragments;
private long _afterHandlingTime;
private int _validateCount;
private boolean _isInbound;
// private boolean _isInbound;
private static final List _packetCache;
static {
@ -83,13 +83,14 @@ public class UDPPacket {
_ivBuf = new byte[IV_SIZE];
init(ctx, inbound);
}
// FIXME optimization, remove the inbound parameter, as it is unused. FIXME
private void init(I2PAppContext ctx, boolean inbound) {
_context = ctx;
//_dataBuf = _dataCache.acquire();
Arrays.fill(_data, (byte)0);
//_packet = new DatagramPacket(_data, MAX_PACKET_SIZE);
_packet.setData(_data);
_isInbound = inbound;
// _isInbound = inbound;
_initializeTime = _context.clock().now();
_markedType = -1;
_validateCount = 0;
@ -125,8 +126,7 @@ public class UDPPacket {
int getFragmentCount() { return _fragmentCount; }
void setFragmentCount(int count) { _fragmentCount = count; }
// FIXME Exporting non-public type through public API FIXME
public RemoteHostId getRemoteHost() {
RemoteHostId getRemoteHost() {
if (_remoteHost == null) {
long before = System.currentTimeMillis();
InetAddress addr = _packet.getAddress();

View File

@ -28,7 +28,7 @@ public class UDPReceiver {
private boolean _keepRunning;
private Runner _runner;
private UDPTransport _transport;
private static int __id;
// private static int __id;
private int _id;
public UDPReceiver(RouterContext ctx, UDPTransport transport, DatagramSocket socket, String name) {

View File

@ -3,7 +3,6 @@ package net.i2p.router.transport.udp;
import java.io.IOException;
import java.io.Writer;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.text.DecimalFormat;
import java.util.ArrayList;
@ -545,8 +544,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
* get the state for the peer at the given remote host/port, or null
* if no state exists
*/
/* FIXME Exporting non-public type through public API FIXME */
public PeerState getPeerState(RemoteHostId hostInfo) {
PeerState getPeerState(RemoteHostId hostInfo) {
synchronized (_peersByRemoteHost) {
return (PeerState)_peersByRemoteHost.get(hostInfo);
}
@ -783,8 +781,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
}
}
/* FIXME Exporting non-public type through public API FIXME */
public boolean isInDropList(RemoteHostId peer) { synchronized (_dropList) { return _dropList.contains(peer); } }
boolean isInDropList(RemoteHostId peer) { synchronized (_dropList) { return _dropList.contains(peer); } }
void dropPeer(Hash peer, boolean shouldShitlist, String why) {
PeerState state = getPeerState(peer);
@ -2235,8 +2232,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
_testEvent.runTest();
}
/* FIXME Exporting non-public type through public API FIXME */
public PeerState pickTestPeer(RemoteHostId dontInclude) {
PeerState pickTestPeer(RemoteHostId dontInclude) {
List peers = null;
synchronized (_peersByIdent) {
peers = new ArrayList(_peersByIdent.values());