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]

Reply via email to