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 2006/10/03 00:37:06 UTC
svn commit: r452248 - in
/james/jspf/trunk/src/main/java/org/apache/james/jspf: ./ core/
localpolicy/ localpolicy/terms/ terms/
Author: norman
Date: Mon Oct 2 15:37:04 2006
New Revision: 452248
URL: http://svn.apache.org/viewvc?view=rev&rev=452248
Log:
Add support for trusted-forwarder.org. See JSPF-30
Added:
james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/
james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/FallbackPolicy.java
- copied, changed from r451863, james/jspf/trunk/src/main/java/org/apache/james/jspf/core/FallbackPolicy.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/TrustedForwarderPolicy.java (with props)
james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/terms/
james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/terms/TrustedForwarderMechanism.java (with props)
Removed:
james/jspf/trunk/src/main/java/org/apache/james/jspf/core/FallbackPolicy.java
Modified:
james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Directive.java
james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java?view=diff&rev=452248&r1=452247&r2=452248
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/SPF.java Mon Oct 2 15:37:04 2006
@@ -22,7 +22,6 @@
import org.apache.james.jspf.core.DNSService;
import org.apache.james.jspf.core.Directive;
-import org.apache.james.jspf.core.FallbackPolicy;
import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.core.Modifier;
import org.apache.james.jspf.core.SPF1Constants;
@@ -32,6 +31,8 @@
import org.apache.james.jspf.exceptions.NoneException;
import org.apache.james.jspf.exceptions.PermErrorException;
import org.apache.james.jspf.exceptions.TempErrorException;
+import org.apache.james.jspf.localpolicy.FallbackPolicy;
+import org.apache.james.jspf.localpolicy.TrustedForwarderPolicy;
import org.apache.james.jspf.macro.MacroExpand;
import org.apache.james.jspf.parser.SPF1Parser;
@@ -56,6 +57,8 @@
private boolean useBestGuess = false;
private FallbackPolicy fallBack;
+
+ private boolean useTrustedForwarder = false;
/**
* Uses default Log4JLogger and DNSJava based dns resolver
@@ -199,9 +202,15 @@
String qualifier = null;
boolean hasCommand = false;
-
- // get all commands
- Iterator com = spfRecord.getDirectives().iterator();
+ Iterator com = null;
+
+ // trustedForwarder support is enabled
+ if (useTrustedForwarder) {
+ com = new TrustedForwarderPolicy(spfRecord.getDirectives(),log).getUpdatedDirectives().iterator();
+ } else {
+ // get all commands
+ com = spfRecord.getDirectives().iterator();
+ }
while (com.hasNext()) {
// if we reach maximum calls we must throw a PermErrorException. See
@@ -405,5 +414,17 @@
*/
public FallbackPolicy getFallbackPolicy() {
return fallBack;
+ }
+
+ /**
+ * Set to true to enable trusted-forwarder.org whitelist. The whitelist will only be queried if
+ * the last Mechanism is -all or ?all.
+ * See http://trusted-forwarder.org for more informations
+ * Default is false.
+ *
+ * @param useTrustedForwarder true or false
+ */
+ public synchronized void useTrustedForwarder(boolean useTrustedForwarder) {
+ this.useTrustedForwarder = useTrustedForwarder;
}
}
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Directive.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Directive.java?view=diff&rev=452248&r1=452247&r2=452248
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Directive.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/core/Directive.java Mon Oct 2 15:37:04 2006
@@ -87,5 +87,9 @@
public String getQualifier() {
return qualifier;
}
+
+ public String toString() {
+ return qualifier + mechanism;
+ }
}
Copied: james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/FallbackPolicy.java (from r451863, james/jspf/trunk/src/main/java/org/apache/james/jspf/core/FallbackPolicy.java)
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/FallbackPolicy.java?view=diff&rev=452248&p1=james/jspf/trunk/src/main/java/org/apache/james/jspf/core/FallbackPolicy.java&r1=451863&p2=james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/FallbackPolicy.java&r2=452248
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/core/FallbackPolicy.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/FallbackPolicy.java Mon Oct 2 15:37:04 2006
@@ -17,13 +17,15 @@
* under the License. *
****************************************************************/
-package org.apache.james.jspf.core;
+package org.apache.james.jspf.localpolicy;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import org.apache.james.jspf.core.Logger;
+import org.apache.james.jspf.core.SPF1Record;
import org.apache.james.jspf.exceptions.NeutralException;
import org.apache.james.jspf.exceptions.NoneException;
import org.apache.james.jspf.exceptions.PermErrorException;
@@ -40,7 +42,7 @@
private Logger log;
- public FallbackPolicy(Logger log) {
+ public FallbackPolicy(Logger log){
this.log = log;
fallBackMap = Collections.synchronizedMap(new HashMap());
parser = new SPF1Parser(log);
Added: james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/TrustedForwarderPolicy.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/TrustedForwarderPolicy.java?view=auto&rev=452248
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/TrustedForwarderPolicy.java (added)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/TrustedForwarderPolicy.java Mon Oct 2 15:37:04 2006
@@ -0,0 +1,88 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+
+
+package org.apache.james.jspf.localpolicy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.james.jspf.core.Directive;
+import org.apache.james.jspf.exceptions.PermErrorException;
+import org.apache.james.jspf.localpolicy.terms.TrustedForwarderMechanism;
+import org.apache.james.jspf.core.Logger;
+
+/**
+ *
+ * This class represent a local policy to support the whitelist of trusted-forwarder.org
+ */
+public class TrustedForwarderPolicy {
+
+ /**
+ * The hostname to include
+ */
+ private static final String TRUSTED_FORWARDER_HOST = "spf.trusted-forwarder.org";
+
+ /**
+ * The ArrayList whill holds the Directives to return
+ */
+ private ArrayList aCom;
+
+ /**
+ * The logger
+ */
+ private Logger log;
+
+ /**
+ * Default Constructor
+ *
+ * @param directives the Collection which holds all directives
+ * @parm log the logger the logger
+ * @throws IllegalArgumentException get thrown if the given Collection is null
+ */
+ public TrustedForwarderPolicy (Collection directives,Logger log)throws IllegalArgumentException {
+ if (directives == null) throw new IllegalArgumentException("Passed Collection is null");
+ this.aCom = new ArrayList(directives);
+ this.log = log;
+ }
+
+ /**
+ * Return an updated Collection which hold now a new include mechanism to quere trusted-forwarder.org. The
+ * Collection get only updated if the last mechanism is -all or ?all. If not the original Collection is returned
+ *
+ * @return aCom a Collection which holds the directives
+ */
+ public Collection getUpdatedDirectives() {
+ String mechanism = ((Directive) aCom.get(aCom.size())).toString();
+ if (mechanism.equals("-all") || mechanism.equals("?all")) {
+ log.debug("Add TrustedForwarderPolicy = include:"+TRUSTED_FORWARDER_HOST);
+ try {
+ TrustedForwarderMechanism trusted = new TrustedForwarderMechanism();
+ trusted.setHost(TRUSTED_FORWARDER_HOST);
+ aCom.add(aCom.size()-1, new Directive(null,trusted));
+ } catch (PermErrorException e) {
+ // will never happen
+ }
+ return aCom;
+ } else {
+ return aCom;
+ }
+ }
+}
Propchange: james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/TrustedForwarderPolicy.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/terms/TrustedForwarderMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/terms/TrustedForwarderMechanism.java?view=auto&rev=452248
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/terms/TrustedForwarderMechanism.java (added)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/terms/TrustedForwarderMechanism.java Mon Oct 2 15:37:04 2006
@@ -0,0 +1,40 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+
+package org.apache.james.jspf.localpolicy.terms;
+
+import org.apache.james.jspf.terms.IncludeMechanism;
+
+/**
+ * Costum mechanism to support whitelist trusted-forwarder.org
+ *
+ */
+public class TrustedForwarderMechanism extends IncludeMechanism {
+
+ /**
+ * Set the host to use
+ *
+ * @param host the host to include
+ */
+ public synchronized void setHost(String host) {
+ this.host = host;
+ }
+
+}
Propchange: james/jspf/trunk/src/main/java/org/apache/james/jspf/localpolicy/terms/TrustedForwarderMechanism.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java?view=diff&rev=452248&r1=452247&r2=452248
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java Mon Oct 2 15:37:04 2006
@@ -47,9 +47,9 @@
public static final String REGEX = "[iI][nN][cC][lL][uU][dD][eE]" + "\\:"
+ SPF1Parser.DOMAIN_SPEC_REGEX;
- private String host;
+ protected String host;
- private Logger log;
+ protected Logger log;
/**
* Set the host which should be used for include
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org