Changeset 220
- Timestamp:
- 08/31/08 22:52:40 (3 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/jsmtpd-1.x/jsmtpd/src/org/jsmtpd/plugins/filters/builtin/RcptMatcher.java
r218 r220 21 21 package org.jsmtpd.plugins.filters.builtin; 22 22 23 import java.util. Iterator;23 import java.util.ArrayList; 24 24 import java.util.LinkedList; 25 25 import java.util.List; … … 60 60 */ 61 61 public boolean doFilter(Email input) throws FilterTreeFailureException, FilterTreeSuccesException { 62 List<Rcpt> rcptInMail = input.getRcpt(); 63 boolean res = false; 64 boolean found = false; 65 if (orOperator) { 66 for (Iterator iterator = rcptInMail.iterator(); iterator.hasNext();) { 67 Rcpt element = (Rcpt) iterator.next(); 68 EmailAddress oneRcptInMail = element.getEmailAddress(); 69 for (Iterator iter = rcptToMatch.iterator(); iter.hasNext();) { 70 EmailAddress oneRcptToMatch = (EmailAddress) iter.next(); 71 if (oneRcptToMatch.isEqual(oneRcptInMail)) { 72 found = true; 73 break; 74 } 75 } 76 if (found) { 77 break; 78 } 79 } 80 } else { 81 log.debug("Plugin: " + getPluginName() + " Start validating without orOperator"); 82 for (Iterator iterator = rcptInMail.iterator(); iterator.hasNext();) { 83 Rcpt element = (Rcpt) iterator.next(); 84 EmailAddress oneRcptInMail = element.getEmailAddress(); 85 found = false; 86 for (Iterator iter = rcptToMatch.iterator(); iter.hasNext();) { 87 EmailAddress oneRcptToMatch = (EmailAddress) iter.next(); 88 if (oneRcptToMatch.isEqual(oneRcptInMail)) { 89 found = true; 90 break; 91 } 92 } 93 if (!found) { 94 break; 95 } 96 } 97 } 98 if (found) { 99 res = true; 100 } 101 if (failOnError && (!res)) { 102 throw new FilterTreeFailureException(); 103 } 62 63 boolean res = doFilterInternal(input); 64 65 if (failOnError && (!res)) throw new FilterTreeFailureException(); 104 66 105 if (validateOnSucces && res) 106 throw new FilterTreeSuccesException(); 67 if (validateOnSucces && res) throw new FilterTreeSuccesException(); 107 68 108 69 return res; 109 70 } 110 71 72 private boolean doFilterInternal (Email input) { 73 List<EmailAddress> addressesInMail = new ArrayList<EmailAddress>(); 74 for (Rcpt rcpt : input.getRcpt()) { 75 addressesInMail.add(rcpt.getEmailAddress()); 76 } 77 78 if (orOperator) { 79 for (EmailAddress emailAddress : addressesInMail) { 80 if (rcptToMatch.contains(emailAddress)) 81 return true; 82 } 83 return false; 84 } else { 85 for (EmailAddress emailAddress : rcptToMatch) { 86 if (! addressesInMail.contains(emailAddress)) 87 return false; 88 } 89 return true; 90 } 91 } 92 111 93 /* (non-Javadoc) 112 94 * @see org.jsmtpd.core.common.IGenericPlugin#getPluginName()
