You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2004/05/02 08:08:37 UTC
cvs commit: james-server/src/java/org/apache/james/util NetMatcher.java
noel 2004/05/01 23:08:37
Modified: src/java/org/apache/james/dnsserver Tag: branch_2_1_fcs
DNSServer.java
src/java/org/apache/james/fetchmail Tag: branch_2_1_fcs
MessageProcessor.java
src/java/org/apache/james/transport/mailets Tag:
branch_2_1_fcs RemoteDelivery.java
src/java/org/apache/james/transport/matchers Tag:
branch_2_1_fcs InSpammerBlacklist.java
src/java/org/apache/james/util Tag: branch_2_1_fcs
NetMatcher.java
Log:
Fix for JAMES-271. Allow get[All]ByName(String host) when the host is actually an IP literal with a trailing '.'. java.net.InetAddress permits this, but org.xbill.DNS.Address does not.
Revision Changes Path
No revision
No revision
1.9.4.18 +40 -0 james-server/src/java/org/apache/james/dnsserver/DNSServer.java
Index: DNSServer.java
===================================================================
RCS file: /home/cvs/james-server/src/java/org/apache/james/dnsserver/DNSServer.java,v
retrieving revision 1.9.4.17
retrieving revision 1.9.4.18
diff -u -r1.9.4.17 -r1.9.4.18
--- DNSServer.java 21 Apr 2004 03:36:56 -0000 1.9.4.17
+++ DNSServer.java 2 May 2004 06:08:37 -0000 1.9.4.18
@@ -429,6 +429,46 @@
};
}
+ /* java.net.InetAddress.get[All]ByName(String) allows an IP literal
+ * to be passed, and will recognize it even with a trailing '.'.
+ * However, org.xbill.DNS.Address does not recognize an IP literal
+ * with a trailing '.' character. The problem is that when we
+ * lookup an MX record for some domains, we may find an IP address,
+ * which will have had the trailing '.' appended by the time we get
+ * it back from dnsjava. An MX record is not allowed to have an IP
+ * address as the right-hand-side, but there are still plenty of
+ * such records on the Internet. Since java.net.InetAddress can
+ * handle them, for the time being we've decided to support them.
+ *
+ * These methods are NOT intended for use outside of James, and are
+ * NOT declared by the org.apache.james.services.DNSServer. This is
+ * currently a stopgap measure to be revisited for the next release.
+ */
+
+ private static String allowIPLiteral(String host) {
+ if ((host.charAt(host.length() - 1) == '.')) {
+ String possible_ip_literal = host.substring(0, host.length() - 1);
+ if (org.xbill.DNS.Address.isDottedQuad(possible_ip_literal)) {
+ host = possible_ip_literal;
+ }
+ }
+ return host;
+ }
+
+ /**
+ * @see java.net.InetAddress#getByName(String)
+ */
+ public static InetAddress getByName(String host) throws UnknownHostException {
+ return org.xbill.DNS.Address.getByName(allowIPLiteral(host));
+ }
+
+ /**
+ * @see java.net.InetAddress#getByAllName(String)
+ */
+ public static InetAddress[] getAllByName(String host) throws UnknownHostException {
+ return org.xbill.DNS.Address.getAllByName(allowIPLiteral(host));
+ }
+
/**
* A way to get mail hosts to try. If any MX hosts are found for the
* domain name with which this is constructed, then these MX hostnames
No revision
No revision
1.1.2.10 +3 -3 james-server/src/java/org/apache/james/fetchmail/MessageProcessor.java
Index: MessageProcessor.java
===================================================================
RCS file: /home/cvs/james-server/src/java/org/apache/james/fetchmail/MessageProcessor.java,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -r1.1.2.9 -r1.1.2.10
--- MessageProcessor.java 22 Apr 2004 00:19:26 -0000 1.1.2.9
+++ MessageProcessor.java 2 May 2004 06:08:37 -0000 1.1.2.10
@@ -1362,7 +1362,7 @@
hostNameEnd = domain.length();
address = domain.substring(0, hostNameEnd);
}
- validatedAddress = org.xbill.DNS.Address.getByName(address).getHostAddress();
+ validatedAddress = org.apache.james.dnsserver.DNSServer.getByName(address).getHostAddress();
return validatedAddress;
}
@@ -1380,8 +1380,8 @@
// These shenanigans are required to get the fully qualified
// hostname prior to JDK 1.4 in which get getCanonicalHostName()
// does the job for us
- InetAddress addr1 = org.xbill.DNS.Address.getByName(getRemoteAddress());
- InetAddress addr2 = org.xbill.DNS.Address.getByName(addr1.getHostAddress());
+ InetAddress addr1 = org.apache.james.dnsserver.DNSServer.getByName(getRemoteAddress());
+ InetAddress addr2 = org.apache.james.dnsserver.DNSServer.getByName(addr1.getHostAddress());
return addr2.getHostName();
}
No revision
No revision
1.33.4.21 +2 -2 james-server/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
Index: RemoteDelivery.java
===================================================================
RCS file: /home/cvs/james-server/src/java/org/apache/james/transport/mailets/RemoteDelivery.java,v
retrieving revision 1.33.4.20
retrieving revision 1.33.4.21
diff -u -r1.33.4.20 -r1.33.4.21
--- RemoteDelivery.java 13 Apr 2004 01:39:44 -0000 1.33.4.20
+++ RemoteDelivery.java 2 May 2004 06:08:37 -0000 1.33.4.21
@@ -1112,7 +1112,7 @@
final String nextGateway = server;
final String nextGatewayPort = port;
try {
- final InetAddress[] ips = org.xbill.DNS.Address.getAllByName(nextGateway);
+ final InetAddress[] ips = org.apache.james.dnsserver.DNSServer.getAllByName(nextGateway);
addresses = new Iterator() {
private InetAddress[] ipAddresses = ips;
int i = 0;
No revision
No revision
1.3.4.5 +1 -1 james-server/src/java/org/apache/james/transport/matchers/InSpammerBlacklist.java
Index: InSpammerBlacklist.java
===================================================================
RCS file: /home/cvs/james-server/src/java/org/apache/james/transport/matchers/InSpammerBlacklist.java,v
retrieving revision 1.3.4.4
retrieving revision 1.3.4.5
diff -u -r1.3.4.4 -r1.3.4.5
--- InSpammerBlacklist.java 13 Apr 2004 01:39:44 -0000 1.3.4.4
+++ InSpammerBlacklist.java 2 May 2004 06:08:37 -0000 1.3.4.5
@@ -63,7 +63,7 @@
sb.append(network);
//Try to look it up
- org.xbill.DNS.Address.getByName(sb.toString());
+ org.apache.james.dnsserver.DNSServer.getByName(sb.toString());
//If we got here, that's bad... it means the host
// was found in the blacklist
No revision
No revision
1.1.2.10 +4 -4 james-server/src/java/org/apache/james/util/NetMatcher.java
Index: NetMatcher.java
===================================================================
RCS file: /home/cvs/james-server/src/java/org/apache/james/util/NetMatcher.java,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -r1.1.2.9 -r1.1.2.10
--- NetMatcher.java 20 Apr 2004 20:42:18 -0000 1.1.2.9
+++ NetMatcher.java 2 May 2004 06:08:37 -0000 1.1.2.10
@@ -62,7 +62,7 @@
try
{
- ip = org.xbill.DNS.Address.getByName(hostIP);
+ ip = org.apache.james.dnsserver.DNSServer.getByName(hostIP);
}
catch (java.net.UnknownHostException uhe)
{
@@ -130,7 +130,7 @@
public boolean contains(final String name) throws java.net.UnknownHostException
{
- return network.equals(maskIP(org.xbill.DNS.Address.getByName(name), netmask));
+ return network.equals(maskIP(org.apache.james.dnsserver.DNSServer.getByName(name), netmask));
}
public boolean contains(final InetAddress ip)
@@ -164,8 +164,8 @@
else if (netspec.indexOf('.', iSlash) == -1) netspec = normalizeFromCIDR(netspec);
}
- return new InetNetwork(org.xbill.DNS.Address.getByName(netspec.substring(0, netspec.indexOf('/'))),
- org.xbill.DNS.Address.getByName(netspec.substring(netspec.indexOf('/') + 1)));
+ return new InetNetwork(org.apache.james.dnsserver.DNSServer.getByName(netspec.substring(0, netspec.indexOf('/'))),
+ org.apache.james.dnsserver.DNSServer.getByName(netspec.substring(netspec.indexOf('/') + 1)));
}
public static InetAddress maskIP(final byte[] ip, final byte[] mask)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org