Author: toad
Date: 2008-01-15 13:15:32 +0000 (Tue, 15 Jan 2008)
New Revision: 17057

Modified:
   trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeCrypto.java
Log:
Don't mention ports which are definitely forwarded.

Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-01-15 
13:02:40 UTC (rev 17056)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2008-01-15 
13:15:32 UTC (rev 17057)
@@ -35,25 +35,24 @@
        public class MyUserAlert extends AbstractUserAlert {

                final boolean suggestPortForward;
+               private int[] portsNotForwarded;

                public MyUserAlert(String title, String text, boolean 
suggestPortForward, short code) {
                        super(false, title, text, null, code, true, 
L10n.getString("UserAlert.hide"), false, null);
                        this.suggestPortForward = suggestPortForward;
+                       portsNotForwarded = getUDPPortsNotForwarded();
                }

                public HTMLNode getHTMLText() {
                        HTMLNode div = new HTMLNode("div");
                        div.addChild("#", super.getText());
                        if(suggestPortForward) {
-                               // FIXME we should support any number of ports, 
UDP or TCP, and pick them up from the node as we do with the forwarding plugin 
... that would be a bit of a pain for L10n though ...
-                               int darknetPort = node.getDarknetPortNumber();
-                               int opennetPort = node.getOpennetFNPPort();
-                               if(opennetPort <= 0) {
+                               if(portsNotForwarded.length == 1) {
                                        L10n.addL10nSubstitution(div, 
"IPDetectorPluginManager.suggestForwardPortWithLink", new String[] { "link", 
"/link", "port" },
-                                                       new String[] { "<a 
href=\"/?_CHECKED_HTTP_=http://wiki.freenetproject.org/FirewallAndRouterIssues\";>",
 "</a>", Integer.toString(node.getDarknetPortNumber()) });
+                                                       new String[] { "<a 
href=\"/?_CHECKED_HTTP_=http://wiki.freenetproject.org/FirewallAndRouterIssues\";>",
 "</a>", Integer.toString(portsNotForwarded[0]) });
                                } else {
                                        L10n.addL10nSubstitution(div, 
"IPDetectorPluginManager.suggestForwardTwoPortsWithLink", new String[] { 
"link", "/link", "port1", "port2" },
-                                                       new String[] { "<a 
href=\"/?_CHECKED_HTTP_=http://wiki.freenetproject.org/FirewallAndRouterIssues\";>",
 "</a>", Integer.toString(node.getDarknetPortNumber()), 
Integer.toString(opennetPort) });
+                                                       new String[] { "<a 
href=\"/?_CHECKED_HTTP_=http://wiki.freenetproject.org/FirewallAndRouterIssues\";>",
 "</a>", Integer.toString(portsNotForwarded[0]), 
Integer.toString(portsNotForwarded[1]) });
                                }
                        }
                        return div;
@@ -63,15 +62,13 @@
                        if(!suggestPortForward) return super.getText();
                        StringBuffer sb = new StringBuffer();
                        sb.append(super.getText());
-                       // FIXME we should support any number of ports, UDP or 
TCP, and pick them up from the node as we do with the forwarding plugin ... 
that would be a bit of a pain for L10n though ...
-                       int darknetPort = node.getDarknetPortNumber();
-                       int opennetPort = node.getOpennetFNPPort();
-                       sb.append(" ");
-                       if(opennetPort <= 0) {
-                               sb.append(l10n("suggestForwardPort", "port", 
Integer.toString(darknetPort)));
-                       } else {
+                       if(portsNotForwarded.length == 1) {
+                               sb.append(l10n("suggestForwardPort", "port", 
Integer.toString(portsNotForwarded[0])));
+                       } else if(portsNotForwarded.length >= 2) {
                                sb.append(l10n("suggestForwardTwoPorts", new 
String[] { "port1", "port2" }, 
-                                               new String[] { 
Integer.toString(darknetPort), Integer.toString(opennetPort) }));
+                                               new String[] { 
Integer.toString(portsNotForwarded[0]), Integer.toString(portsNotForwarded[1]) 
}));
+                               if(portsNotForwarded.length > 2)
+                                       Logger.error(this, "Not able to tell 
user about more than 2 ports to forward! ("+portsNotForwarded.length+")");
                        }

                        return sb.toString();
@@ -81,6 +78,11 @@
                        valid = validity;
                }

+               public boolean isValid() {
+                       portsNotForwarded = getUDPPortsNotForwarded();
+                       return valid && (portsNotForwarded.length > 0);
+               }
+               
                public void onDismiss() {
                        valid = false;
                }
@@ -125,6 +127,23 @@
                                false, UserAlert.MINOR);
        }

+       public int[] getUDPPortsNotForwarded() {
+               OpennetManager om = node.getOpennet();
+               if(om == null || om.crypto.definitelyPortForwarded()) {
+                       if(node.darknetDefinitelyPortForwarded()) {
+                               return new int[] { };
+                       } else {
+                               return new int[] { node.getDarknetPortNumber() 
};
+                       }
+               } else {
+                       if(node.darknetDefinitelyPortForwarded()) {
+                               return new int[] { om.crypto.portNumber };
+                       } else {
+                               return new int[] { node.getDarknetPortNumber(), 
om.crypto.portNumber };
+                       }
+               }
+       }
+
        private String l10n(String key) {
                return L10n.getString("IPDetectorPluginManager."+key);
        }

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-01-15 13:02:40 UTC (rev 
17056)
+++ trunk/freenet/src/freenet/node/Node.java    2008-01-15 13:15:32 UTC (rev 
17057)
@@ -2998,14 +2998,10 @@
                if(om == null) return false;
                NodeCrypto crypto = om.crypto;
                if(crypto == null) return false;
-               PacketSocketHandler sock = crypto.socket;
-               if(sock == null) return false;
-               return sock.getDetectedConnectivityStatus() == 
AddressTracker.DEFINITELY_PORT_FORWARDED;
+               return crypto.definitelyPortForwarded();
        }

        public boolean darknetDefinitelyPortForwarded() {
-               PacketSocketHandler sock = darknetCrypto.socket;
-               if(sock == null) return false;
-               return sock.getDetectedConnectivityStatus() == 
AddressTracker.DEFINITELY_PORT_FORWARDED;
+               return darknetCrypto.definitelyPortForwarded();
        }
 }

Modified: trunk/freenet/src/freenet/node/NodeCrypto.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeCrypto.java      2008-01-15 13:02:40 UTC 
(rev 17056)
+++ trunk/freenet/src/freenet/node/NodeCrypto.java      2008-01-15 13:15:32 UTC 
(rev 17057)
@@ -24,6 +24,7 @@
 import freenet.crypt.SHA256;
 import freenet.crypt.UnsupportedCipherException;
 import freenet.crypt.ciphers.Rijndael;
+import freenet.io.AddressTracker;
 import freenet.io.comm.FreenetInetAddress;
 import freenet.io.comm.Peer;
 import freenet.io.comm.UdpSocketHandler;
@@ -503,4 +504,8 @@
                else
                        return myIdentity;
        }
+
+       public boolean definitelyPortForwarded() {
+               return socket.getDetectedConnectivityStatus() == 
AddressTracker.DEFINITELY_PORT_FORWARDED;
+       }
 }


Reply via email to