Class UPnP

All Implemented Interfaces:
HTTPRequestListener, DeviceChangeListener, EventListener

public class UPnP extends ControlPoint implements DeviceChangeListener, EventListener
This (and all in org/freenet, org/cybergarage, org/xmlpull) grabbed from freenet SVN, mid-February 2009 by zzz. This file modded somewhat to remove freenet-specific stuff, but most of the glue to I2P is in UPnPManager (which was written from scratch and is not the Limewire one referred to below). ================== This plugin implements UP&P support on a Freenet node.
Since:
0.7.4
Author:
Florent Daignière <nextgens@freenetproject.org> some code has been borrowed from Limewire : @see com.limegroup.gnutella.UPnPManager Public only for command line usage. Not a public API, not for external use.
See Also:
  • "http://www.upnp.org/"
  • "http://en.wikipedia.org/wiki/Universal_Plug_and_Play"
  • Field Details

  • Constructor Details

  • Method Details

    • runPlugin

      public boolean runPlugin()
    • terminate

      public void terminate()
      WARNING - Blocking up to 2 seconds
    • getAddress

      public DetectedIP[] getAddress()
      As we only support a single active IGD, and we don't currently have any way to get any IPv6 addresses, this will return at most one IPv4 address. Blocking!!!
      Returns:
      array of length 1 containing an IPv4 address, or null
    • deviceAdded

      public void deviceAdded(Device dev)
      DeviceChangeListener
      Specified by:
      deviceAdded in interface DeviceChangeListener
    • unregisterPortMappings

      public void unregisterPortMappings()
    • deviceRemoved

      public void deviceRemoved(Device dev)
      DeviceChangeListener
      Specified by:
      deviceRemoved in interface DeviceChangeListener
    • eventNotifyReceived

      public void eventNotifyReceived(String uuid, long seq, String varName, String value)
      EventListener callback - unused for now - supported in miniupnpd as of 1.1
      Specified by:
      eventNotifyReceived in interface EventListener
    • getLocalAddresses

      public static Set<String> getLocalAddresses()
      Get the addresses we want to bind to
      Since:
      0.9.46, public since 0.9.55 for HTTPServerList
    • search

      public void search()
      We override search() to update the SSDPSearchResponseSocketList, SSDPNotifySocketList, and HTTPServerList every time. Otherwise, we are just listening on the interfaces that were present when started.
      Overrides:
      search in class ControlPoint
      Since:
      0.9.46
    • renderStatusHTML

      public String renderStatusHTML()
      warning - slow
    • onChangePublicPorts

      public void onChangePublicPorts(Set<ForwardPort> ports, ForwardPortCallback cb)
      Registers a callback when the given ports change. non-blocking
      Parameters:
      ports - non-null
      cb - in UPnPManager
    • main

      public static void main(String[] args) throws Exception
      Dumps out device info in semi-HTML format
      Throws:
      Exception