Author: dbkr
Date: 2006-09-22 12:04:29 +0000 (Fri, 22 Sep 2006)
New Revision: 10498

Modified:
   trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
   trunk/freenet/src/freenet/io/AddressMatcher.java
   trunk/freenet/src/freenet/io/Inet4AddressMatcher.java
   trunk/freenet/src/freenet/io/Inet6AddressMatcher.java
   trunk/freenet/src/freenet/io/NetworkInterface.java
   trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
   trunk/freenet/src/freenet/node/fcp/FCPServer.java
Log:
Accept IPv6 localhost by default, and fix crashing issues with trying to 
compare IPv6 addresses with IPv4 matchers.

Fixes a bug that prevents the web interface from being accessible by default if 
'localhost' is resolved by the browser to an IPv6 address.


Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java     
2006-09-21 22:04:43 UTC (rev 10497)
+++ trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java     
2006-09-22 12:04:29 UTC (rev 10498)
@@ -216,7 +216,7 @@
                                new FProxyPortCallback());
                fproxyConfig.register("bindTo", "127.0.0.1", 2, true, false, 
"IP address to bind to", "IP address to bind to",
                                new FProxyBindtoCallback());
-               fproxyConfig.register("allowedHosts", "127.0.0.1", 2, true, 
false, "Allowed hosts", "Hostnames or IP addresses that are allowed to connect 
to FProxy. May be a comma-separated list of hostnames, single IPs and even CIDR 
masked IPs like 192.168.0.0/24",
+               fproxyConfig.register("allowedHosts", 
"127.0.0.1,0:0:0:0:0:0:0:1", 2, true, false, "Allowed hosts", "Hostnames or IP 
addresses that are allowed to connect to FProxy. May be a comma-separated list 
of hostnames, single IPs and even CIDR masked IPs like 192.168.0.0/24",
                                new FProxyAllowedHostsCallback());
                fproxyConfig.register("css", "clean", 1, false, false, "CSS 
Name", "Name of the CSS FProxy should use "+themes.toString(),
                                new FProxyCSSNameCallback());

Modified: trunk/freenet/src/freenet/io/AddressMatcher.java
===================================================================
--- trunk/freenet/src/freenet/io/AddressMatcher.java    2006-09-21 22:04:43 UTC 
(rev 10497)
+++ trunk/freenet/src/freenet/io/AddressMatcher.java    2006-09-22 12:04:29 UTC 
(rev 10498)
@@ -17,12 +17,14 @@
 package freenet.io;

 import java.net.InetAddress;
+import freenet.io.AddressIdentifier.AddressType;

 /**
  * @author David Roden <droden at gmail.com>
  * @version $Id$
  */
 public interface AddressMatcher {
+       public AddressType getAddressType();

        public boolean matches(InetAddress address);


Modified: trunk/freenet/src/freenet/io/Inet4AddressMatcher.java
===================================================================
--- trunk/freenet/src/freenet/io/Inet4AddressMatcher.java       2006-09-21 
22:04:43 UTC (rev 10497)
+++ trunk/freenet/src/freenet/io/Inet4AddressMatcher.java       2006-09-22 
12:04:29 UTC (rev 10498)
@@ -20,6 +20,8 @@
 import java.net.InetAddress;
 import java.util.StringTokenizer;

+import freenet.io.AddressIdentifier.AddressType;
+
 /**
  * Matcher for IPv4 network addresses. It works like the regex matcher in
  * {@link java.util.regex.Matcher}, i.e. you create a new Inet4AddressMatcher
@@ -36,6 +38,9 @@
  * @version $Id$
  */
 public class Inet4AddressMatcher implements AddressMatcher {
+       public AddressType getAddressType() {
+               return AddressType.IPv4;
+       }

        /** The address of this matcher */
        private int address;

Modified: trunk/freenet/src/freenet/io/Inet6AddressMatcher.java
===================================================================
--- trunk/freenet/src/freenet/io/Inet6AddressMatcher.java       2006-09-21 
22:04:43 UTC (rev 10497)
+++ trunk/freenet/src/freenet/io/Inet6AddressMatcher.java       2006-09-22 
12:04:29 UTC (rev 10498)
@@ -21,11 +21,16 @@
 import java.util.Arrays;
 import java.util.StringTokenizer;

+import freenet.io.AddressIdentifier.AddressType;
+
 /**
  * @author David Roden <droden at gmail.com>
  * @version $Id$
  */
 public class Inet6AddressMatcher implements AddressMatcher {
+       public AddressType getAddressType() {
+               return AddressType.IPv6;
+       }

        private byte[] address;
        private byte[] netmask;

Modified: trunk/freenet/src/freenet/io/NetworkInterface.java
===================================================================
--- trunk/freenet/src/freenet/io/NetworkInterface.java  2006-09-21 22:04:43 UTC 
(rev 10497)
+++ trunk/freenet/src/freenet/io/NetworkInterface.java  2006-09-22 12:04:29 UTC 
(rev 10498)
@@ -311,6 +311,8 @@
                                        InetAddress clientAddress = 
clientSocket.getInetAddress();
                                        if(logMINOR)
                                                Logger.minor(Acceptor.class, 
"Connection from " + clientAddress);
+                                       
+                                       AddressType clientAddressType = 
AddressIdentifier.getAddressType(clientAddress.getHostAddress());

                                        /* check if the ip address is allowed */
                                        boolean addressMatched = false;
@@ -319,7 +321,8 @@
                                                while (!addressMatched && 
hosts.hasNext()) {
                                                        String host = (String) 
hosts.next();
                                                        AddressMatcher matcher 
= (AddressMatcher) addressMatchers.get(host);
-                                                       if (matcher != null) {
+                                                       
+                                                       if (matcher != null && 
clientAddressType == matcher.getAddressType()) {
                                                                addressMatched 
= matcher.matches(clientAddress);
                                                        } else {
                                                                addressMatched 
= "*".equals(host);

Modified: trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java   
2006-09-21 22:04:43 UTC (rev 10497)
+++ trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java   
2006-09-22 12:04:29 UTC (rev 10498)
@@ -62,7 +62,7 @@
                                new TMCIEnabledCallback(core));
                TMCIConfig.register("bindTo", "127.0.0.1", 2, true, false, "IP 
address to bind to", "IP address to bind to",
                                new TMCIBindtoCallback(core));
-               TMCIConfig.register("allowedHosts", "127.0.0.1", 2, true, 
false, "Allowed hosts", "Hostnames or IP addresses that are allowed to connect 
to the TMCI. May be a comma-separated list of hostnames, single IPs and even 
CIDR masked IPs like 192.168.0.0/24",
+               TMCIConfig.register("allowedHosts", 
"127.0.0.1,0:0:0:0:0:0:0:1", 2, true, false, "Allowed hosts", "Hostnames or IP 
addresses that are allowed to connect to the TMCI. May be a comma-separated 
list of hostnames, single IPs and even CIDR masked IPs like 192.168.0.0/24",
                                new TMCIAllowedHostsCallback(core));
                TMCIConfig.register("port", 2323, 1, true, false, "Telnet 
port", "Telnet port number",
                        new TCMIPortNumberCallback(core));

Modified: trunk/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPServer.java   2006-09-21 22:04:43 UTC 
(rev 10497)
+++ trunk/freenet/src/freenet/node/fcp/FCPServer.java   2006-09-22 12:04:29 UTC 
(rev 10498)
@@ -298,7 +298,7 @@
                fcpConfig.register("port", FCPServer.DEFAULT_FCP_PORT /* 
anagram of 1984, and 1000 up from old number */,
                                2, true, true, "FCP port number", "FCP port 
number", new FCPPortNumberCallback(core));
                fcpConfig.register("bindTo", "127.0.0.1", 2, true, false, "IP 
address to bind to", "IP address to bind the FCP server to", new 
FCPBindtoCallback(core));
-               fcpConfig.register("allowedHosts", "127.0.0.1", 2, true, false, 
"Allowed hosts", "Hostnames or IP addresses that are allowed to connect to the 
FCP server. May be a comma-separated list of hostnames, single IPs and even 
CIDR masked IPs like 192.168.0.0/24", new FCPAllowedHostsCallback(core));
+               fcpConfig.register("allowedHosts", "127.0.0.1,0:0:0:0:0:0:0:1", 
2, true, false, "Allowed hosts", "Hostnames or IP addresses that are allowed to 
connect to the FCP server. May be a comma-separated list of hostnames, single 
IPs and even CIDR masked IPs like 192.168.0.0/24", new 
FCPAllowedHostsCallback(core));
                PersistentDownloadsEnabledCallback cb1;
                PersistentDownloadsFileCallback cb2;
                PersistentDownloadsIntervalCallback cb3;


Reply via email to