Author: bago
Date: Mon Apr 30 09:43:00 2007
New Revision: 533795
URL: http://svn.apache.org/viewvc?view=rev&rev=533795
Log:
Added better ipaddress comparison (PTRMechanism) by parsing the string to
ipaddr and toString again (better matching for weird IPV6 addresses).
Fixed ExpModifier to remove leading and trailing quotes from TXT records
retrieved.
Changed AMechanism/DNSRequest/MacroExpand to check for FQDN synchronous checks
before running the DNS lookups.
Modified:
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/core/DNSRequest.java
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/macro/MacroExpand.java
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/AMechanism.java
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/ExpModifier.java
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java
Modified:
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/core/DNSRequest.java
URL:
http://svn.apache.org/viewvc/james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/core/DNSRequest.java?view=diff&rev=533795&r1=533794&r2=533795
==============================================================================
---
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/core/DNSRequest.java
(original)
+++
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/core/DNSRequest.java
Mon Apr 30 09:43:00 2007
@@ -19,6 +19,10 @@
package org.apache.james.jspf.core;
+import org.apache.james.jspf.exceptions.NoneException;
+import org.xbill.DNS.Name;
+import org.xbill.DNS.TextParseException;
+
public final class DNSRequest {
/** The record types for the lookups */
@@ -39,7 +43,14 @@
*/
private final int recordType;
- public DNSRequest(String hostname, int recordType) {
+ public DNSRequest(String hostname, int recordType) throws NoneException {
+ if (recordType == MX || recordType == A || recordType == AAAA) {
+ try {
+ Name.fromString(hostname);
+ } catch (TextParseException e) {
+ throw new NoneException(e.getMessage());
+ }
+ }
this.hostname = hostname;
this.recordType = recordType;
}
Modified:
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/macro/MacroExpand.java
URL:
http://svn.apache.org/viewvc/james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/macro/MacroExpand.java?view=diff&rev=533795&r1=533794&r2=533795
==============================================================================
---
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/macro/MacroExpand.java
(original)
+++
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/macro/MacroExpand.java
Mon Apr 30 09:43:00 2007
@@ -165,7 +165,7 @@
private static final String ATTRIBUTE_MACRO_EXPAND_CHECKED_RECORD =
"MacroExpand.checkedRecord";
- public DNSLookupContinuation checkExpand(String input, SPFSession session,
boolean isExplanation) throws PermErrorException {
+ public DNSLookupContinuation checkExpand(String input, SPFSession session,
boolean isExplanation) throws PermErrorException, NoneException {
if (input != null) {
String host = this.expand(input, session, isExplanation);
if (host == null) {
Modified:
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/AMechanism.java
URL:
http://svn.apache.org/viewvc/james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/AMechanism.java?view=diff&rev=533795&r1=533794&r2=533795
==============================================================================
---
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/AMechanism.java
(original)
+++
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/AMechanism.java
Mon Apr 30 09:43:00 2007
@@ -76,7 +76,12 @@
List aRecords = getARecords(host);
if (aRecords == null) {
- return new DNSLookupContinuation(new DNSRequest(host,
DNSRequest.A), AMechanism.this);
+ try {
+ DNSRequest request = new DNSRequest(host,
DNSRequest.A);
+ return new DNSLookupContinuation(request,
AMechanism.this);
+ } catch (NoneException e) {
+ return onDNSResponse(new DNSResponse(aRecords),
spfData);
+ }
} else {
return onDNSResponse(new DNSResponse(aRecords),
spfData);
}
@@ -85,7 +90,12 @@
List aaaaRecords = getAAAARecords(host);
if (aaaaRecords == null) {
- return new DNSLookupContinuation(new DNSRequest(host,
DNSRequest.AAAA), AMechanism.this);
+ try {
+ DNSRequest request = new DNSRequest(host,
DNSRequest.AAAA);
+ return new DNSLookupContinuation(request,
AMechanism.this);
+ } catch (NoneException e) {
+ return onDNSResponse(new DNSResponse(aaaaRecords),
spfData);
+ }
} else {
return onDNSResponse(new DNSResponse(aaaaRecords),
spfData);
}
Modified:
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/ExpModifier.java
URL:
http://svn.apache.org/viewvc/james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/ExpModifier.java?view=diff&rev=533795&r1=533794&r2=533795
==============================================================================
---
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/ExpModifier.java
(original)
+++
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/ExpModifier.java
Mon Apr 30 09:43:00 2007
@@ -168,6 +168,9 @@
} else {
String exp = (String) records.get(0);
+ if (exp.length()>=2 && exp.charAt(0) == '"' &&
exp.charAt(exp.length() -1 ) == '"') {
+ exp = exp.substring(1, exp.length() - 1);
+ }
spfData.setAttribute(ATTRIBUTE_EXPAND_EXPLANATION, exp);
Modified:
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java
URL:
http://svn.apache.org/viewvc/james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java?view=diff&rev=533795&r1=533794&r2=533795
==============================================================================
---
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java
(original)
+++
james/jspf/branches/asynch-jspf/src/main/java/org/apache/james/jspf/terms/PTRMechanism.java
Mon Apr 30 09:43:00 2007
@@ -152,17 +152,17 @@
List aList = response.getResponse();
-
+
if (aList != null) {
for (int j = 0; j < aList.size(); j++) {
- if (aList.get(j).equals(spfSession.getIpAddress())) {
+ // Added the IPAddr parsing/toString to have matching
in IPV6 multiple ways to
+ if (IPAddr.getAddress((String)
aList.get(j)).getIPAddress().equals(IPAddr.getAddress(spfSession.getIpAddress()).getIPAddress()))
{
if (compareDomain.equals(host)
|| compareDomain.endsWith("." + host)) {
spfSession.setAttribute(Directive.ATTRIBUTE_MECHANISM_RESULT, Boolean.TRUE);
return null;
}
-
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]