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;