From b003ee874851dc7f7352cd1452947057ec18ec36 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 21 Jan 2012 15:27:58 +0000 Subject: [PATCH 1/6] move some summary bar code around --- .../i2p/router/web/SummaryBarRenderer.java | 45 +------------- .../src/net/i2p/router/web/SummaryHelper.java | 58 +++++++++++++++++++ 2 files changed, 61 insertions(+), 42 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index b34144032..456328681 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -210,54 +210,15 @@ public class SummaryBarRenderer { .append(_("Network")) .append(": ") .append(_helper.getReachability()) - .append("
\n"); + .append("
\n") - // display all the time so we display the final failure message, and plugin update messages too - String status = UpdateHandler.getStatus(); - if (status.length() > 0) { - buf.append("

").append(status).append("


\n"); - } - if (_helper.updateAvailable() || _helper.unsignedUpdateAvailable()) { - if ("true".equals(System.getProperty(UpdateHandler.PROP_UPDATE_IN_PROGRESS))) { - // nothing - } else if( - // isDone() is always false for now, see UpdateHandler - // ((!update.isDone()) && - _helper.getAction() == null && - _helper.getUpdateNonce() == null && - ConfigRestartBean.getRestartTimeRemaining() > 12*60*1000) { - long nonce = _context.random().nextLong(); - String prev = System.getProperty("net.i2p.router.web.UpdateHandler.nonce"); - if (prev != null) - System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev); - System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+""); - String uri = _helper.getRequestURI(); - buf.append("
\n"); - buf.append("\n"); - if (_helper.updateAvailable()) { - buf.append("
\n"); - } - if (_helper.unsignedUpdateAvailable()) { - buf.append("
\n"); - } - buf.append("
\n"); - } - } + .append(_helper.getUpdateStatus()) + .append(_helper.getRestartStatus()) - buf.append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce())) - .append("

") diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index 5ac51b7a3..4805a3e29 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -27,6 +27,8 @@ import net.i2p.stat.RateStat; /** * Simple helper to query the appropriate router for data necessary to render * the summary sections on the router console. + * + * For the full summary bar use renderSummaryBar() */ public class SummaryHelper extends HelperBase { @@ -604,6 +606,62 @@ public class SummaryHelper extends HelperBase { return NewsFetcher.getInstance(_context).unsignedUpdateVersion(); } + /** + * The update status and buttons + * @since 0.8.13 moved from SummaryBarRenderer + */ + public String getUpdateStatus() { + StringBuilder buf = new StringBuilder(512); + // display all the time so we display the final failure message, and plugin update messages too + String status = UpdateHandler.getStatus(); + if (status.length() > 0) { + buf.append("

").append(status).append("


\n"); + } + if (updateAvailable() || unsignedUpdateAvailable()) { + if ("true".equals(System.getProperty(UpdateHandler.PROP_UPDATE_IN_PROGRESS))) { + // nothing + } else if( + // isDone() is always false for now, see UpdateHandler + // ((!update.isDone()) && + getAction() == null && + getUpdateNonce() == null && + ConfigRestartBean.getRestartTimeRemaining() > 12*60*1000) { + long nonce = _context.random().nextLong(); + String prev = System.getProperty("net.i2p.router.web.UpdateHandler.nonce"); + if (prev != null) + System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev); + System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+""); + String uri = getRequestURI(); + buf.append("
\n"); + buf.append("\n"); + if (updateAvailable()) { + buf.append("
\n"); + } + if (unsignedUpdateAvailable()) { + buf.append("
\n"); + } + buf.append("
\n"); + } + } + return buf.toString(); + } + + /** + * The restart status and buttons + * @since 0.8.13 moved from SummaryBarRenderer + */ + public String getRestartStatus() { + return ConfigRestartBean.renderStatus(getRequestURI(), getAction(), getConsoleNonce()); + } + /** output the summary bar to _out */ public void renderSummaryBar() throws IOException { SummaryBarRenderer renderer = new SummaryBarRenderer(_context, this); From 256b05531e2f07dee46cf1ee736c47be68809401 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 21 Jan 2012 15:28:24 +0000 Subject: [PATCH 2/6] * Build: Fix Windows build, version checking for release --- build.xml | 52 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/build.xml b/build.xml index 6365da50b..91abfea56 100644 --- a/build.xml +++ b/build.xml @@ -443,50 +443,82 @@ - + - + + - + - + + - + - + + - + + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1235,7 +1267,7 @@ - + From 9252d6f9caf43cbd03e2dd01235c670529a81818 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 22 Jan 2012 16:15:18 +0000 Subject: [PATCH 3/6] tweak --- .../java/src/net/i2p/router/web/SummaryBarRenderer.java | 4 +++- .../java/src/net/i2p/router/web/SummaryHelper.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index 456328681..0c1fb1174 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -412,7 +412,9 @@ public class SummaryBarRenderer { "

") .append(_(_helper.getTunnelStatus())) .append("


\n") - .append(_helper.getDestinations()); + + .append(_helper.getDestinations()) + .append("
\n"); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index 4805a3e29..f28282fea 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -414,7 +414,7 @@ public class SummaryHelper extends HelperBase { } else { buf.append("
").append(_("none")).append("
"); } - buf.append("
\n"); + buf.append("\n"); return buf.toString(); } From 669bcbd19100e68e7040f620951292a95d856fa7 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 22 Jan 2012 16:16:24 +0000 Subject: [PATCH 4/6] move VMCommSystem to dummy directory --- router/java/src/net/i2p/router/RouterContext.java | 1 - .../src/net/i2p/router/{transport => dummy}/VMCommSystem.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) rename router/java/src/net/i2p/router/{transport => dummy}/VMCommSystem.java (99%) diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index d16f3b391..5c5b4a2ca 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -20,7 +20,6 @@ import net.i2p.router.peermanager.ProfileOrganizer; import net.i2p.router.transport.CommSystemFacadeImpl; import net.i2p.router.transport.FIFOBandwidthLimiter; import net.i2p.router.transport.OutboundMessageRegistry; -import net.i2p.router.transport.VMCommSystem; import net.i2p.router.tunnel.TunnelDispatcher; import net.i2p.router.tunnel.pool.TunnelPoolManager; import net.i2p.util.Clock; diff --git a/router/java/src/net/i2p/router/transport/VMCommSystem.java b/router/java/src/net/i2p/router/dummy/VMCommSystem.java similarity index 99% rename from router/java/src/net/i2p/router/transport/VMCommSystem.java rename to router/java/src/net/i2p/router/dummy/VMCommSystem.java index 2e5426f08..4c905e0b3 100644 --- a/router/java/src/net/i2p/router/transport/VMCommSystem.java +++ b/router/java/src/net/i2p/router/dummy/VMCommSystem.java @@ -1,4 +1,4 @@ -package net.i2p.router.transport; +package net.i2p.router.dummy; import java.io.IOException; import java.io.OutputStream; From 04544ac9e07db0a7f45954e90c2dce9351c2d81f Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 22 Jan 2012 16:43:45 +0000 Subject: [PATCH 5/6] * Transports: Bind only to a single interface if specified as the host address and it's available (ticket #591) --- .../router/transport/ntcp/NTCPTransport.java | 26 +++++++++++++++++-- .../router/transport/udp/UDPTransport.java | 18 +++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) 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 de39759ea..ac6856a5b 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -13,6 +13,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.TreeSet; @@ -30,6 +31,7 @@ import net.i2p.router.transport.CommSystemFacadeImpl; import net.i2p.router.transport.Transport; import net.i2p.router.transport.TransportBid; import net.i2p.router.transport.TransportImpl; +import net.i2p.util.Addresses; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; import net.i2p.util.Translate; @@ -515,6 +517,23 @@ public class NTCPTransport extends TransportImpl { if (_myAddress != null) { InetAddress bindToAddr = null; String bindTo = _context.getProperty(PROP_BIND_INTERFACE); + + if (bindTo == null) { + // If we are configured with a fixed IP address, + // AND it's one of our local interfaces, + // bind only to that. + boolean isFixed = _context.getProperty(CommSystemFacadeImpl.PROP_I2NP_NTCP_AUTO_IP, "true") + .toLowerCase(Locale.US).equals("false"); + String fixedHost = _context.getProperty(CommSystemFacadeImpl.PROP_I2NP_NTCP_HOSTNAME); + if (isFixed && fixedHost != null) { + try { + String testAddr = InetAddress.getByName(fixedHost).getHostAddress(); + if (Addresses.getAddresses().contains(testAddr)) + bindTo = testAddr; + } catch (UnknownHostException uhe) {} + } + } + if (bindTo != null) { try { bindToAddr = InetAddress.getByName(bindTo); @@ -532,10 +551,13 @@ public class NTCPTransport extends TransportImpl { chan.configureBlocking(false); InetSocketAddress addr = null; - if(bindToAddr==null) + if(bindToAddr==null) { addr = new InetSocketAddress(_myAddress.getPort()); - else + } else { addr = new InetSocketAddress(bindToAddr, _myAddress.getPort()); + if (_log.shouldLog(Log.WARN)) + _log.warn("Binding only to " + bindToAddr); + } chan.socket().bind(addr); if (_log.shouldLog(Log.INFO)) _log.info("Listening on " + addr); 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 3f233c53c..11b3e29d0 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -35,6 +35,7 @@ import net.i2p.router.transport.Transport; import net.i2p.router.transport.TransportBid; import net.i2p.router.transport.TransportImpl; import net.i2p.router.util.RandomIterator; +import net.i2p.util.Addresses; import net.i2p.util.ConcurrentHashSet; import net.i2p.util.Log; import net.i2p.util.SimpleScheduler; @@ -255,6 +256,21 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority // bind host String bindTo = _context.getProperty(PROP_BIND_INTERFACE); + + if (bindTo == null) { + // If we are configured with a fixed IP address, + // AND it's one of our local interfaces, + // bind only to that. + String fixedHost = _context.getProperty(PROP_EXTERNAL_HOST); + if (fixedHost != null && fixedHost.length() > 0) { + try { + String testAddr = InetAddress.getByName(fixedHost).getHostAddress(); + if (Addresses.getAddresses().contains(testAddr)) + bindTo = testAddr; + } catch (UnknownHostException uhe) {} + } + } + InetAddress bindToAddr = null; if (bindTo != null) { try { @@ -281,6 +297,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } else { port = _externalListenPort; } + if (bindToAddr != null && _log.shouldLog(Log.WARN)) + _log.warn("Binding only to " + bindToAddr); if (_log.shouldLog(Log.INFO)) _log.info("Binding to the port: " + port); if (_endpoint == null) { From c3bf470a80de4df4ba3fee8a8f997f0a3036841f Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 22 Jan 2012 18:30:25 +0000 Subject: [PATCH 6/6] -7 --- history.txt | 9 +++++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/history.txt b/history.txt index cd939af9c..6e3942de7 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,12 @@ +2012-01-22 zzz + * Transports: Bind only to a single interface if specified + as the host address and it's available (ticket #591) + * VMCommSystem: Move to dummy directory + +2012-01-21 zzz + * Build: Fix Windows build, version checking for release + * Console summary bar: Move some code around + 2012-01-20 sponge * Fix too short of delay for http. It is up to the browser to time out in a shorter time, not the proxy. This is wreaking havoc on large diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index c10128fe6..fecba78d6 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -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 = 6; + public final static long BUILD = 7; /** for example "-test" */ public final static String EXTRA = "";