Author: nextgens Date: 2007-05-23 00:17:52 +0000 (Wed, 23 May 2007) New Revision: 13327
Modified: trunk/plugins/UPnP/UPnP.java Log: UPnP: Implement FredPluginIPDetector : not tested yet! Modified: trunk/plugins/UPnP/UPnP.java =================================================================== --- trunk/plugins/UPnP/UPnP.java 2007-05-23 00:13:04 UTC (rev 13326) +++ trunk/plugins/UPnP/UPnP.java 2007-05-23 00:17:52 UTC (rev 13327) @@ -3,6 +3,8 @@ * http://www.gnu.org/ for further details of the GPL. */ package plugins.UPnP; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.Iterator; import plugins.UPnP.org.cybergarage.upnp.Action; @@ -18,8 +20,10 @@ import plugins.UPnP.org.cybergarage.upnp.StateVariable; import plugins.UPnP.org.cybergarage.upnp.device.DeviceChangeListener; import plugins.UPnP.org.cybergarage.upnp.xml.StateVariableData; +import freenet.pluginmanager.DetectedIP; import freenet.pluginmanager.FredPlugin; import freenet.pluginmanager.FredPluginHTTP; +import freenet.pluginmanager.FredPluginIPDetector; import freenet.pluginmanager.FredPluginThreadless; import freenet.pluginmanager.PluginHTTPException; import freenet.pluginmanager.PluginRespirator; @@ -35,8 +39,10 @@ * * @see http://www.upnp.org/ * @see http://en.wikipedia.org/wiki/Universal_Plug_and_Play + * + * TODO: add logging! */ -public class UPnP extends ControlPoint implements FredPluginHTTP, FredPlugin, FredPluginThreadless, DeviceChangeListener { +public class UPnP extends ControlPoint implements FredPluginHTTP, FredPlugin, FredPluginThreadless, FredPluginIPDetector, DeviceChangeListener { /** some schemas */ private static final String ROUTER_DEVICE = "urn:schemas-upnp-org:device:InternetGatewayDevice:1"; @@ -61,6 +67,15 @@ stop(); } + // FIXME: we use the first IGD we detect, so we have got only 1 ip to report + public DetectedIP[] getAddress() { + try { + return new DetectedIP[] { new DetectedIP(InetAddress.getByName(getNATAddress()), DetectedIP.NOT_SUPPORTED) }; + } catch (UnknownHostException e) { + return null; + } + } + public void deviceAdded(Device dev ) { synchronized (lock) { if(isNATPresent())
