General
-
Ident: (
, never reveal it to anyone" href="netdb.jsp#our-info">view)
+
Ident: (
, never reveal it to anyone" href="netdb.jsp?r=.">view)
Version:
Uptime:
Now:
diff --git a/history.txt b/history.txt
index 95c57b9a4..9ffe9abd5 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,18 @@
+2008-09-11 zzz
+ * Blocklist: Fix a log message format
+ * HarvesterJob: Don't instantiate if disabled
+ * i2psnark:
+ - Add config i2psnark.linkPrefix to enable access to completed
+ torrents from a different machine - examples:
+ i2psnark.linkPrefix=file://///localserver/path/to/files/
+ i2psnark.linkPrefix=http://localwebserver/path/
+ (Stop i2psnark, add to i2psnark.config, restart)
+ - Remove Galen and NickyB trackers
+ * NetDb: Add netDb.exploreKeySet stat
+ * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
+ and ?r=. to view our own; change links on other pages too
+ * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
+
2008-09-06 zzz
* EepGet command line: Fix byte counts after a failed resume
* NTCP: Mark unreachable on outbound connection timeout
diff --git a/router/java/src/net/i2p/router/NetworkDatabaseFacade.java b/router/java/src/net/i2p/router/NetworkDatabaseFacade.java
index eee825177..8812c9855 100644
--- a/router/java/src/net/i2p/router/NetworkDatabaseFacade.java
+++ b/router/java/src/net/i2p/router/NetworkDatabaseFacade.java
@@ -61,6 +61,7 @@ public abstract class NetworkDatabaseFacade implements Service {
public int getKnownRouters() { return 0; }
public int getKnownLeaseSets() { return 0; }
+ public void renderRouterInfoHTML(Writer out, String s) throws IOException {}
}
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index b48c557f3..14aac6694 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -17,7 +17,7 @@ import net.i2p.CoreVersion;
public class RouterVersion {
public final static String ID = "$Revision: 1.548 $ $Date: 2008-06-07 23:00:00 $";
public final static String VERSION = "0.6.3";
- public final static long BUILD = 3;
+ public final static long BUILD = 4;
public static void main(String args[]) {
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
System.out.println("Router ID: " + RouterVersion.ID);
diff --git a/router/java/src/net/i2p/router/Shitlist.java b/router/java/src/net/i2p/router/Shitlist.java
index a585f6b3b..08c996792 100644
--- a/router/java/src/net/i2p/router/Shitlist.java
+++ b/router/java/src/net/i2p/router/Shitlist.java
@@ -280,7 +280,7 @@ public class Shitlist {
Hash key = (Hash)iter.next();
Entry entry = (Entry)entries.get(key);
buf.append("
").append(key.toBase64()).append("");
- buf.append(" (netdb)");
+ buf.append(" (netdb)");
buf.append(" expiring in ");
buf.append(DataHelper.formatDuration(entry.expireOn-_context.clock().now()));
Set transports = entry.transports;
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java
index 948709d98..7ced65ed0 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java
@@ -41,7 +41,7 @@ class HarvesterJob extends JobImpl {
/** background job, who cares */
private static final int PRIORITY = 100;
- private static final String PROP_ENABLED = "netDb.shouldHarvest";
+ public static final String PROP_ENABLED = "netDb.shouldHarvest";
private boolean harvestDirectly() {
return Boolean.valueOf(getContext().getProperty("netDb.harvestDirectly", "false")).booleanValue();
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
index 9c4f8a352..0e19e3273 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
@@ -130,6 +130,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
_activeRequests = new HashMap(8);
_enforceNetId = DEFAULT_ENFORCE_NETID;
context.statManager().createRateStat("netDb.lookupLeaseSetDeferred", "how many lookups are deferred for a single leaseSet lookup?", "NetworkDatabase", new long[] { 60*1000, 5*60*1000 });
+ context.statManager().createRateStat("netDb.exploreKeySet", "how many keys are queued for exploration?", "NetworkDatabase", new long[] { 10*60*1000 });
}
protected PeerSelector createPeerSelector() { return new PeerSelector(_context); }
@@ -203,12 +204,14 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
if (!_initialized) return;
synchronized (_exploreKeys) {
_exploreKeys.removeAll(toRemove);
+ _context.statManager().addRateData("netDb.exploreKeySet", _exploreKeys.size(), 0);
}
}
public void queueForExploration(Set keys) {
if (!_initialized) return;
synchronized (_exploreKeys) {
_exploreKeys.addAll(keys);
+ _context.statManager().addRateData("netDb.exploreKeySet", _exploreKeys.size(), 0);
}
}
@@ -297,7 +300,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
// fire off a group of searches from the explore pool
_context.jobQueue().addJob(_exploreJob);
// if configured to do so, periodically try to get newer routerInfo stats
- if (_harvestJob == null)
+ if (_harvestJob == null && "true".equals(_context.getProperty(HarvesterJob.PROP_ENABLED)))
_harvestJob = new HarvesterJob(_context, this);
_context.jobQueue().addJob(_harvestJob);
} else {
@@ -943,9 +946,32 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
}
}
+ public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException {
+ StringBuffer buf = new StringBuffer(4*1024);
+ buf.append("Network Database RouterInfo Lookup
\n");
+ if (".".equals(routerPrefix)) {
+ renderRouterInfo(buf, _context.router().getRouterInfo(), true);
+ } else {
+ boolean notFound = true;
+ Set routers = getRouters();
+ for (Iterator iter = routers.iterator(); iter.hasNext(); ) {
+ RouterInfo ri = (RouterInfo)iter.next();
+ Hash key = ri.getIdentity().getHash();
+ if (key.toBase64().startsWith(routerPrefix)) {
+ renderRouterInfo(buf, ri, false);
+ notFound = false;
+ }
+ }
+ if (notFound)
+ buf.append("Router ").append(routerPrefix).append(" not found in network database");
+ }
+ out.write(buf.toString());
+ out.flush();
+ }
+
public void renderStatusHTML(Writer out) throws IOException {
- StringBuffer buf = new StringBuffer(10*1024);
- buf.append("Kademlia Network DB Contents
\n");
+ StringBuffer buf = new StringBuffer(getKnownRouters() * 2048);
+ buf.append("Network Database Contents
\n");
if (!_initialized) {
buf.append("Not initialized\n");
out.write(buf.toString());
diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java
index eb29b374e..fe7fd3b1f 100644
--- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java
+++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java
@@ -163,7 +163,7 @@ class ProfileOrganizerRenderer {
buf.append(" ");
//buf.append("profile.txt ");
//buf.append(" netDb | ");
- buf.append("netDb");
+ buf.append(" | netDb");
buf.append("/profile");
buf.append("/+- | \n");
buf.append("");
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
index a7e77d54c..349669066 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
@@ -600,7 +600,7 @@ public class NTCPTransport extends TransportImpl {
for (Iterator iter = peers.iterator(); iter.hasNext(); ) {
NTCPConnection con = (NTCPConnection)iter.next();
String name = con.getRemotePeer().calculateHash().toBase64().substring(0,6);
- buf.append("").append(name);
+ buf.append("").append(name);
buf.append(" | ");
if (con.isInbound())
buf.append("in");
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
index 92a0eb70e..c59ff60f9 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -1687,7 +1687,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
String name = peer.getRemotePeer().toBase64().substring(0,6);
buf.append("");
- buf.append("");
buf.append(name);
| | |