From 212981dfee7ee7b5985b02148390c7e34f9ca2d2 Mon Sep 17 00:00:00 2001 From: dream Date: Thu, 15 Dec 2011 23:36:32 +0000 Subject: [PATCH] Add hooks so the new PortMapper lets i2p plugins not fail when the router console is not on port 7657. Also raise an exception when requesting unregistered ports so as to encourage swift adding of the registration hooks when those ports are taken. --- .../java/src/net/i2p/router/web/RouterConsoleRunner.java | 6 +++++- .../java/src/net/i2p/router/web/WebAppStarter.java | 3 ++- core/java/src/net/i2p/util/PortMapper.java | 5 ++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 35145418aa..15c7f76f5f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -18,6 +18,7 @@ import net.i2p.desktopgui.Main; import net.i2p.router.RouterContext; import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; +import net.i2p.util.PortMapper; import net.i2p.util.SecureDirectory; import net.i2p.util.SecureFileOutputStream; import net.i2p.util.ShellCommand; @@ -207,6 +208,7 @@ public class RouterConsoleRunner { // add standard listeners if (_listenPort != null) { + Integer lport = Integer.parseInt(_listenPort); StringTokenizer tok = new StringTokenizer(_listenHost, " ,"); while (tok.hasMoreTokens()) { String host = tok.nextToken().trim(); @@ -215,7 +217,6 @@ public class RouterConsoleRunner { // _server.addListener('[' + host + "]:" + _listenPort); //else // _server.addListener(host + ':' + _listenPort); - Integer lport = Integer.parseInt(_listenPort); InetAddrPort iap = new InetAddrPort(host, lport); SocketListener lsnr = new SocketListener(iap); lsnr.setMinThreads(1); // default 2 @@ -230,6 +231,8 @@ public class RouterConsoleRunner { System.err.println("Unable to bind routerconsole to " + host + " port " + _listenPort + ' ' + ioe); } } + // XXX: what if listenhosts do not include 127.0.0.1? (Should that ever even happen?) + I2PAppContext.getGlobalContext().portMapper().register(PortMapper.SVC_CONSOLE,lport); } // add SSL listeners @@ -267,6 +270,7 @@ public class RouterConsoleRunner { System.err.println("Unable to bind routerconsole to " + host + " port " + sslPort + " for SSL: " + e); } } + I2PAppContext.getGlobalContext().portMapper().register(PortMapper.SVC_HTTPS_CONSOLE,sslPort); } else { System.err.println("Unable to create or access keystore for SSL: " + keyStore.getAbsolutePath()); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java index 9061bb6de9..9c47190c14 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java @@ -12,6 +12,7 @@ import net.i2p.I2PAppContext; import net.i2p.util.FileUtil; import net.i2p.util.Log; import net.i2p.util.SecureDirectory; +import net.i2p.util.PortMapper; import org.mortbay.http.HttpContext; import org.mortbay.http.HttpListener; @@ -141,7 +142,7 @@ public class WebAppStarter { Server s = (Server) c.toArray()[i]; HttpListener[] hl = s.getListeners(); for (int j = 0; j < hl.length; j++) { - if (hl[j].getPort() == 7657) + if (hl[j].getPort() == I2PAppContext.getGlobalContext().portMapper().getPort(PortMapper.SVC_CONSOLE)) return s; } } diff --git a/core/java/src/net/i2p/util/PortMapper.java b/core/java/src/net/i2p/util/PortMapper.java index efb49ad283..cb5d7317e8 100644 --- a/core/java/src/net/i2p/util/PortMapper.java +++ b/core/java/src/net/i2p/util/PortMapper.java @@ -58,7 +58,10 @@ public class PortMapper { * @return -1 if not registered */ public int getPort(String service) { - return getPort(service, -1); + int port = getPort(service, -1); + if(-1==port) + throw new RuntimeException("No port registered for service "+service); + return port; } /**