diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
index b44b29bc90..aac2767f3c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
@@ -11,6 +11,7 @@ public class ConfigClientsHandler extends FormHandler {
private String _numClients;
private String _numTunnels;
private String _numHops;
+ private String _numHopsOutbound;
private boolean _shouldSave;
public void ConfigNetHandler() {
@@ -36,6 +37,9 @@ public class ConfigClientsHandler extends FormHandler {
public void setTunneldepth(String num) {
_numHops = (num != null ? num.trim() : null);
}
+ public void setTunneldepthoutbound(String num) {
+ _numHopsOutbound = (num != null ? num.trim() : null);
+ }
/**
* The user made changes to the network config and wants to save them, so
@@ -63,6 +67,12 @@ public class ConfigClientsHandler extends FormHandler {
saveRequired = true;
}
+ if ( (_numHopsOutbound != null) && (_numHopsOutbound.length() > 0) ) {
+ _context.router().setConfigSetting(ClientTunnelSettings.PROP_DEPTH_OUTBOUND, _numHopsOutbound);
+ addFormNotice("Updating default outbound tunnel length to " + _numHopsOutbound);
+ saveRequired = true;
+ }
+
if (saveRequired) {
boolean saved = _context.router().saveConfig();
if (saved)
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
index 5e2dcabdf9..215e13dabf 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
@@ -114,4 +114,31 @@ public class ConfigClientsHelper {
buf.append("\n");
return buf.toString();
}
+
+ public String getTunnelDepthOutboundSelectBox() {
+ int count = ClientTunnelSettings.DEFAULT_DEPTH_OUTBOUND;
+ String val = _context.router().getConfigSetting(ClientTunnelSettings.PROP_DEPTH_OUTBOUND);
+ if (val != null) {
+ try {
+ count = Integer.parseInt(val);
+ } catch (NumberFormatException nfe) {
+ // ignore, use default from above
+ }
+ }
+ StringBuffer buf = new StringBuffer(1024);
+ buf.append("\n");
+ return buf.toString();
+ }
}
diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp
index f1ab29d97a..369df5ead6 100644
--- a/apps/routerconsole/jsp/configclients.jsp
+++ b/apps/routerconsole/jsp/configclients.jsp
@@ -34,6 +34,8 @@
Default number of hops per tunnel:
+ Hops per outbound tunnel:
+
diff --git a/build.xml b/build.xml
index 8b037a0e4f..cdde6dbf91 100644
--- a/build.xml
+++ b/build.xml
@@ -230,6 +230,7 @@
+
diff --git a/core/java/src/net/i2p/client/naming/HostsTxtNamingService.java b/core/java/src/net/i2p/client/naming/HostsTxtNamingService.java
index 87b5616bb2..bb44ac7660 100644
--- a/core/java/src/net/i2p/client/naming/HostsTxtNamingService.java
+++ b/core/java/src/net/i2p/client/naming/HostsTxtNamingService.java
@@ -16,6 +16,7 @@ import java.util.Properties;
import java.util.StringTokenizer;
import net.i2p.I2PAppContext;
+import net.i2p.data.DataHelper;
import net.i2p.data.Destination;
import net.i2p.util.Log;
@@ -61,12 +62,10 @@ public class HostsTxtNamingService extends NamingService {
for (int i = 0; i < filenames.size(); i++) {
String hostsfile = (String)filenames.get(i);
Properties hosts = new Properties();
- FileInputStream fis = null;
try {
File f = new File(hostsfile);
if ( (f.exists()) && (f.canRead()) ) {
- fis = new FileInputStream(f);
- hosts.load(fis);
+ DataHelper.loadProps(hosts, f);
String key = hosts.getProperty(hostname);
if ( (key != null) && (key.trim().length() > 0) ) {
@@ -78,11 +77,6 @@ public class HostsTxtNamingService extends NamingService {
}
} catch (Exception ioe) {
_log.error("Error loading hosts file " + hostsfile, ioe);
- } finally {
- if (fis != null) try {
- fis.close();
- } catch (IOException ioe) { // nop
- }
}
// not found, continue to the next file
}
diff --git a/history.txt b/history.txt
index 44c54334ef..ee62e64f22 100644
--- a/history.txt
+++ b/history.txt
@@ -1,4 +1,13 @@
-$Id: history.txt,v 1.63 2004/11/05 05:53:41 jrandom Exp $
+$Id: history.txt,v 1.64 2004/11/06 02:59:54 jrandom Exp $
+
+2004-11-06 jrandom
+ * Expose a drop down on the /configclients.jsp to enter the outbound
+ tunnel depth.
+ * Improved *hosts.txt loading
+ * Explicitly override the JVM's timezone settings to use GMT so that
+ any client applications which use timezones won't leak sensitive
+ data (thanks gott!)
+ * Bundle sam.jar in the update (thanks duck!)
2004-11-06 jrandom
* Fix for a long standing synchronization bug in the SDK that in rare
diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index 3cd980d5fc..868e37c03a 100644
--- a/router/java/src/net/i2p/router/Router.java
+++ b/router/java/src/net/i2p/router/Router.java
@@ -80,6 +80,9 @@ public class Router {
System.setProperty("networkaddress.cache.ttl", "0");
// (no need for keepalive)
System.setProperty("http.keepAlive", "false");
+ System.setProperty("user.timezone", "GMT");
+ // just in case, lets make it explicit...
+ TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
}
public Router() { this(null, null); }
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index ec84241a05..f2db5752a5 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -15,9 +15,9 @@ import net.i2p.CoreVersion;
*
*/
public class RouterVersion {
- public final static String ID = "$Revision: 1.69 $ $Date: 2004/11/05 05:53:40 $";
+ public final static String ID = "$Revision: 1.70 $ $Date: 2004/11/06 02:59:54 $";
public final static String VERSION = "0.4.1.3";
- public final static long BUILD = 10;
+ public final static long BUILD = 11;
public static void main(String args[]) {
System.out.println("I2P Router version: " + VERSION);
System.out.println("Router ID: " + RouterVersion.ID);