From c2fedf85386ce160053ae3ed0dabf23a33091953 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 28 Apr 2009 19:01:52 +0000 Subject: [PATCH] - Add UDP Port configuration to config.jsp - Don't restart router when configs change on config.jsp; simply rebuild router info. - Clean up some port config code in UDP --- .../net/i2p/router/web/ConfigNetHandler.java | 20 +++++++------- .../net/i2p/router/web/ConfigNetHelper.java | 6 +++-- apps/routerconsole/jsp/config.jsp | 7 +++-- .../src/net/i2p/router/RouterVersion.java | 2 +- .../router/transport/udp/UDPTransport.java | 26 +++++-------------- 5 files changed, 27 insertions(+), 34 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java index a4fe7483e..adb63df33 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java @@ -157,12 +157,9 @@ public class ConfigNetHandler extends FormHandler { } if ( (_udpPort != null) && (_udpPort.length() > 0) ) { - String oldPort = _context.router().getConfigSetting(ConfigNetHelper.PROP_I2NP_UDP_PORT); - if ( (oldPort == null) && (_udpPort.equals("8887")) ) { - // still on default.. noop - } else if ( (oldPort == null) || (!oldPort.equalsIgnoreCase(_udpPort)) ) { - // its not the default OR it has changed - _context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_UDP_PORT, _udpPort); + String oldPort = "" + _context.getProperty(UDPTransport.PROP_INTERNAL_PORT, UDPTransport.DEFAULT_INTERNAL_PORT); + if (!oldPort.equals(_udpPort)) { + _context.router().setConfigSetting(UDPTransport.PROP_INTERNAL_PORT, _udpPort); addFormNotice("Updating UDP port from " + oldPort + " to " + _udpPort); restartRequired = true; } @@ -229,9 +226,14 @@ public class ConfigNetHandler extends FormHandler { } if (restartRequired) { - addFormNotice("Performing a soft restart"); - _context.router().restart(); - addFormNotice("Soft restart complete"); + //addFormNotice("Performing a soft restart"); + //_context.router().restart(); + //addFormNotice("Soft restart complete"); + // Most of the time we aren't changing addresses, just enabling or disabling + // things, so let's try just a new routerInfo and see how that works. + // Maybe we should restart if we change addresses though? + _context.router().rebuildRouterInfo(); + addFormNotice("Router Info rebuilt"); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java index 5d7e412bf..6a563b7a9 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java @@ -14,8 +14,6 @@ public class ConfigNetHelper extends HelperBase { public ConfigNetHelper() {} /** copied from various private components */ - public final static String PROP_I2NP_UDP_PORT = "i2np.udp.port"; - public final static String PROP_I2NP_INTERNAL_UDP_PORT = "i2np.udp.internalPort"; public final static String PROP_I2NP_NTCP_HOSTNAME = "i2np.ntcp.hostname"; public final static String PROP_I2NP_NTCP_PORT = "i2np.ntcp.port"; public final static String PROP_I2NP_NTCP_AUTO_PORT = "i2np.ntcp.autoport"; @@ -63,6 +61,10 @@ public class ConfigNetHelper extends HelperBase { return "" + ua.getPort(); } + public String getConfiguredUdpPort() { + return "" + _context.getProperty(UDPTransport.PROP_INTERNAL_PORT, UDPTransport.DEFAULT_INTERNAL_PORT); + } + public String getEnableTimeSyncChecked() { String disabled = _context.getProperty(Timestamper.PROP_DISABLED, "false"); if ( (disabled != null) && ("true".equalsIgnoreCase(disabled)) ) diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index 53c919263..529bb81aa 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -67,8 +67,11 @@ test.rtt and related stats.


--> - External UDP address:
- Require SSU introductions? + UDP Configuration:
+ Internal UDP port: + " />
+ External UDP address:
+ Require SSU introductions? />

If you can, please poke a hole in your NAT or firewall to allow unsolicited UDP packets to reach you on your external UDP address. If you can't, I2P now includes supports UDP hole punching diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 46331081d..4922b069a 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -20,7 +20,7 @@ public class RouterVersion { public final static String VERSION = CoreVersion.VERSION; public final static long BUILD = 5; /** for example "-test" */ - public final static String EXTRA = ""; + public final static String EXTRA = "-upnp"; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); 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 45de86244..69e5190fb 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -99,6 +99,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority public static final String STYLE = "SSU"; public static final String PROP_INTERNAL_PORT = "i2np.udp.internalPort"; + public static final int DEFAULT_INTERNAL_PORT = 8887; /** define this to explicitly set an external IP address */ public static final String PROP_EXTERNAL_HOST = "i2np.udp.host"; @@ -215,20 +216,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority int port = -1; if (_externalListenPort <= 0) { // no explicit external port, so lets try an internal one - String portStr = _context.getProperty(PROP_INTERNAL_PORT); - if (portStr != null) { - try { - port = Integer.parseInt(portStr); - } catch (NumberFormatException nfe) { - if (_log.shouldLog(Log.ERROR)) - _log.error("Invalid port specified [" + portStr + "]"); - } - } + port = _context.getProperty(PROP_INTERNAL_PORT, DEFAULT_INTERNAL_PORT); if (port <= 0) { - port = 8887; + port = DEFAULT_INTERNAL_PORT; //port = 1024 + _context.random().nextInt(31*1024); - if (_log.shouldLog(Log.INFO)) - _log.info("Selecting an arbitrary port to bind to: " + port); + //if (_log.shouldLog(Log.INFO)) + // _log.info("Selecting an arbitrary port to bind to: " + port); _context.router().setConfigSetting(PROP_INTERNAL_PORT, port+""); } // attempt to use it as our external port - this will be overridden by @@ -1013,14 +1006,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority void rebuildExternalAddress(boolean allowRebuildRouterInfo) { // if the external port is specified, we want to use that to bind to even // if we don't know the external host. - String port = _context.getProperty(PROP_EXTERNAL_PORT); - if (port != null) { - try { - _externalListenPort = Integer.parseInt(port); - } catch (NumberFormatException nfe) { - _externalListenPort = -1; - } - } + _externalListenPort = _context.getProperty(PROP_EXTERNAL_PORT, -1); if (explicitAddressSpecified()) { try {