Author: toad
Date: 2006-06-27 21:08:21 +0000 (Tue, 27 Jun 2006)
New Revision: 9392

Added:
   trunk/freenet/src/freenet/pluginmanager/DetectedIP.java
   trunk/freenet/src/freenet/pluginmanager/FredPluginIPDetector.java
Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/pluginmanager/FredPluginThreadless.java
   trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
   trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
partial support for IP detection plugins. May be removed if we decide to 
internalize jstun.

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-06-27 11:51:35 UTC (rev 
9391)
+++ trunk/freenet/src/freenet/node/Node.java    2006-06-27 21:08:21 UTC (rev 
9392)
@@ -96,6 +96,7 @@
 import freenet.node.useralerts.N2NTMUserAlert;
 import freenet.node.useralerts.UserAlert;
 import freenet.node.useralerts.UserAlertManager;
+import freenet.pluginmanager.FredPluginIPDetector;
 import freenet.pluginmanager.PluginManager;
 import freenet.store.BerkeleyDBFreenetStore;
 import freenet.store.FreenetStore;
@@ -3315,4 +3316,10 @@
                PeerManager pm = peers;
                return pm.myPeers;
        }
+
+       public void registerIPDetectorPlugin(FredPluginIPDetector detector) {
+               // FIXME do something
+               // TODO Auto-generated method stub
+               
+       }
 }

Added: trunk/freenet/src/freenet/pluginmanager/DetectedIP.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/DetectedIP.java     2006-06-27 
11:51:35 UTC (rev 9391)
+++ trunk/freenet/src/freenet/pluginmanager/DetectedIP.java     2006-06-27 
21:08:21 UTC (rev 9392)
@@ -0,0 +1,44 @@
+package freenet.pluginmanager;
+
+import java.net.InetAddress;
+
+/**
+ * Class returned by a FredPluginIPDetector.
+ * 
+ * Indicates:
+ * - Whether there is no UDP connectivity at all.
+ * - Whether there is full inbound IP connectivity.
+ * - A list of detected public IPs.
+ */
+public class DetectedIP {
+
+       public final InetAddress publicAddress;
+       public final short natType;
+       // Constants
+       /** The plugin does not support detecting the NAT type. */
+       public static final short NOT_SUPPORTED = 0;
+       /** No UDP connectivity at all */
+       public static final short NO_UDP = 1;
+       /** Full internet access! */
+       public static final short FULL_INTERNET = 2;
+       /** Full cone NAT. Once we have sent a packet out on a port, any node 
anywhere can send us
+        * a packet on that port. The nicest option, but very rare 
unfortunately. */
+       public static final short FULL_CONE_NAT = 3;
+       /** Restricted cone NAT. Once we have sent a packet out to a specific 
IP, it can send us 
+        * packets on the port we just used. */
+       public static final short RESTRICTED_CONE_NAT = 4;
+       /** Port restricted cone NAT. Once we have sent a packet to a specific 
IP+Port, that IP+Port
+        * can send us packets on the port we just used. */
+       public static final short PORT_RESTRICTED_NAT = 5;
+       /** Symmetric NAT. Uses a separate port number for each IP+port ! Not 
much hope for symmetric
+        * to symmetric... */
+       public static final short SYMMETRIC_NAT = 6;
+       /** Symmetric UDP firewall. We are not NATed, but the firewall behaves 
as if we were. */
+       public static final short SYMMETRIC_UDP_FIREWALL = 7;
+       
+       public DetectedIP(InetAddress addr, short type) {
+               this.publicAddress = addr;
+               this.natType = type;
+       }
+       
+}

Added: trunk/freenet/src/freenet/pluginmanager/FredPluginIPDetector.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/FredPluginIPDetector.java   
2006-06-27 11:51:35 UTC (rev 9391)
+++ trunk/freenet/src/freenet/pluginmanager/FredPluginIPDetector.java   
2006-06-27 21:08:21 UTC (rev 9392)
@@ -0,0 +1,9 @@
+package freenet.pluginmanager;
+
+import java.net.InetAddress;
+
+public interface FredPluginIPDetector {
+
+       public DetectedIP[] getAddress();
+       
+}

Modified: trunk/freenet/src/freenet/pluginmanager/FredPluginThreadless.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/FredPluginThreadless.java   
2006-06-27 11:51:35 UTC (rev 9391)
+++ trunk/freenet/src/freenet/pluginmanager/FredPluginThreadless.java   
2006-06-27 21:08:21 UTC (rev 9392)
@@ -4,9 +4,4 @@

 public interface FredPluginThreadless {

-       // Let them return null if unhandled
-
-       public String handleHTTPGet(HTTPRequest request) throws 
PluginHTTPException;
-       public String handleHTTPPut(HTTPRequest request) throws 
PluginHTTPException;
-       public String handleHTTPPost(HTTPRequest request) throws 
PluginHTTPException;
 }

Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java      
2006-06-27 11:51:35 UTC (rev 9391)
+++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java      
2006-06-27 21:08:21 UTC (rev 9392)
@@ -14,6 +14,7 @@
        private FredPlugin plug;
        private boolean isPproxyPlugin;
        private boolean isThreadlessPlugin;
+       private boolean isIPDetectorPlugin;
        private String filename;
        private HashSet toadletLinks=new HashSet(); 
        //public String 
@@ -30,6 +31,7 @@
                fedPluginThread = true;
                isPproxyPlugin = (plug instanceof FredPluginHTTP);
                isThreadlessPlugin = (plug instanceof FredPluginThreadless);
+               isIPDetectorPlugin = (plug instanceof FredPluginIPDetector);
        }

        public String toString() {
@@ -91,6 +93,10 @@
                return isThreadlessPlugin;
        }

+       public boolean isIPDetectorPlugin() {
+               return isIPDetectorPlugin;
+       }
+       
        public Thread getThread() {
                return thread;
        }

Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java  2006-06-27 
11:51:35 UTC (rev 9391)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java  2006-06-27 
21:08:21 UTC (rev 9392)
@@ -109,6 +109,10 @@

                        if (pi.isPproxyPlugin())
                                registerToadlet(plug);
+
+                       if(pi.isIPDetectorPlugin()) {
+                               
node.registerIPDetectorPlugin((FredPluginIPDetector) plug);
+                       }

                        synchronized (pluginInfo) {
                                pluginInfo.put(pi.getThreadName(), pi);


Reply via email to