Scarab commit: svn commit: r10750 - trunk: src/java/org/tigris/scarab/util src/webapp/WEB-INF/templates/email/notification xdocs
Hussayn Dabbous <[email protected]>
| Newsgroups | gmane.comp.java.scarab.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: dabbous
Date: 2009-06-05 07:09:17-0700
New Revision: 10750
Modified:
trunk/src/java/org/tigris/scarab/util/EmailLink.java
trunk/src/java/org/tigris/scarab/util/ScarabConstants.java
trunk/src/webapp/WEB-INF/templates/email/notification/IssueActivity.vm
trunk/xdocs/scarab_properties.xml
Log:
SCB2954 added solution for secure access to Scarab
Modified: trunk/src/java/org/tigris/scarab/util/EmailLink.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/util/EmailLink.java?view=diff&pathrev=10750&r1=10749&r2=10750
==============================================================================
--- trunk/src/java/org/tigris/scarab/util/EmailLink.java (original)
+++ trunk/src/java/org/tigris/scarab/util/EmailLink.java 2009-06-05 07:09:17-0700
@@ -49,9 +49,13 @@
import java.util.ArrayList;
import java.util.List;
+import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.commons.configuration.CompositeConfiguration;
+import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang.StringUtils;
import org.apache.fulcrum.pool.InitableRecyclable;
import org.apache.torque.TorqueException;
+import org.apache.turbine.Turbine;
import org.tigris.scarab.om.Issue;
import org.tigris.scarab.om.Module;
import org.tigris.scarab.om.GlobalParameterManager;
@@ -84,6 +88,11 @@
/** HTTPS protocol. */
public static final String HTTPS = "https";
+
+ /**
+ * Used to resolve configuration templates with dynamic properties:
+ */
+ private Configuration emailConfig;
/**
* Constructor to allow factory instantiation of
@@ -450,27 +459,43 @@
*/
public String toString()
{
- StringBuffer output = new StringBuffer();
-
- output.append(serverUrl());
-
- if (isBaseName) {
- try {
- output.append("/" + GlobalParameterManager.getString("scarab.context"));
- isBaseName = false;
- }
- catch (TorqueException te) {
- }
- } else {
- output.append(getScriptName());
+ String result = "";
+ if(emailConfig != null)
+ {
+ // check if an alternate notification link shall be generated.
+ // if result is empty, we will create the default notification link
+ // Note, this construction comes into play if you want to uise Scarab
+ // behind a secure access system (e.g. Juniper SA ...)
+ result = emailConfig.getString("email.notification.uri", "");
}
-
- if (this.hasPathInfo())
+
+ if (result.length() == 0)
{
- output.append('/');
- output.append(renderPathInfo(this.pathInfo));
+ // Create a notificationLink similar to the
+ // short link used for sessionless access to an issue
+ StringBuffer output = new StringBuffer();
+
+ output.append(serverUrl());
+
+ if (isBaseName) {
+ try {
+ output.append("/" + GlobalParameterManager.getString("scarab.context"));
+ isBaseName = false;
+ }
+ catch (TorqueException te) {
+ }
+ } else {
+ output.append(getScriptName());
+ }
+
+ if (this.hasPathInfo())
+ {
+ output.append('/');
+ output.append(renderPathInfo(this.pathInfo));
+ }
+ result = output.toString();
}
- return output.toString();
+ return result;
}
// Constructs a server URL for this Scarab instance
@@ -546,6 +571,17 @@
public EmailLink getIssueIdLink(Issue issue)
throws Exception
{
+ /**
+ * The following construction adds the issueId to a local Configuration instance.
+ * The so emailConfig will later be used to resolve configuration template which
+ * may contain the issueId as property key. See the toString() method for further details.
+ */
+ CompositeConfiguration compositConfig = new CompositeConfiguration(Turbine.getConfiguration());
+ emailConfig = compositConfig;
+ Configuration dynamicConfig = new BaseConfiguration();
+ compositConfig.addConfiguration(dynamicConfig);
+ dynamicConfig.addProperty("issueId", issue.getUniqueId());
+
this.addPathInfo(ScarabConstants.ID, issue.getUniqueId());
return this;
}
Modified: trunk/src/java/org/tigris/scarab/util/ScarabConstants.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/util/ScarabConstants.java?view=diff&pathrev=10750&r1=10749&r2=10750
==============================================================================
--- trunk/src/java/org/tigris/scarab/util/ScarabConstants.java (original)
+++ trunk/src/java/org/tigris/scarab/util/ScarabConstants.java 2009-06-05 07:09:17-0700
@@ -275,7 +275,20 @@
* SMTP send.
*/
final String JAVAMAIL_DEBUG_KEY = "system.mail.smtp.debug";
-
+
+ /**
+ * If this property is set, the notification URI will be derived from this template.
+ * This is used when the online URL differs from the url to be used in the EMail notification.
+ * One particular use case is when Scarab runs behind a Secure Access system (e.g. Juniper SA)
+ * In that special case, the email_notification_urio would be set to:
+ *
+ * email.notification.uri=https://${securehost}/${scarab.context}/issues/id/${issueId},DanaInfo=${scarab.http.domain},Port=${scarab.http.port}
+ *
+ * where ${securehost} is the secure access host
+ */
+ final String EMAIL_NOTIFICATION_URI =
+ Turbine.getConfiguration().getString("email.notification.uri", "");
+
final Integer INTEGER_0 = new Integer(0);
/**
@@ -314,10 +327,10 @@
Turbine.getConfiguration().getString("scarab.issue.comment.renderer", "plaintext");
// Http parameters
- public static final String HTTP_DOMAIN = "scarab.http.domain";
- public static final String HTTP_SCHEME = "scarab.http.scheme";
+ public static final String HTTP_DOMAIN = "scarab.http.domain";
+ public static final String HTTP_SCHEME = "scarab.http.scheme";
public static final String HTTP_SCRIPT_NAME = "scarab.http.scriptname";
- public static final String HTTP_PORT = "scarab.http.port";
+ public static final String HTTP_PORT = "scarab.http.port";
// Condition editor constants
public static int TRANSITION_OBJECT = 0;
Modified: trunk/src/webapp/WEB-INF/templates/email/notification/IssueActivity.vm
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/webapp/WEB-INF/templates/email/notification/IssueActivity.vm?view=diff&pathrev=10750&r1=10749&r2=10750
==============================================================================
--- trunk/src/webapp/WEB-INF/templates/email/notification/IssueActivity.vm (original)
+++ trunk/src/webapp/WEB-INF/templates/email/notification/IssueActivity.vm 2009-06-05 07:09:17-0700
@@ -15,7 +15,7 @@
* o $multipleActivity: "true" or "false", depending on the notification scoping
* several activities or just one.
*#
-#set ($issueURL = "$link.getIssueIdLink($issue)")
+#set ($issueURL = $link.getIssueIdLink($issue))
#set ($user = $issue.ModifiedBy)
#set ($defaultText = $issue.DefaultText)
#set ($module = $issue.Module)
Modified: trunk/xdocs/scarab_properties.xml
Url: http://scarab.tigris.org/source/browse/scarab/trunk/xdocs/scarab_properties.xml?view=diff&pathrev=10750&r1=10749&r2=10750
==============================================================================
--- trunk/xdocs/scarab_properties.xml (original)
+++ trunk/xdocs/scarab_properties.xml 2009-06-05 07:09:17-0700
@@ -1233,8 +1233,9 @@
If the property is empty, the default scarab email link will be generated.
The working template for Juniper-SA is:
- email.notification.uri=${email.notification.host}:${email.notification.port}/${scarab.context}/issues/id/${issueId},DanaInfo=${scarab.http.domain},Port=${scarab.http.port}
+ email.notification.uri=${email.notification.host}:${email.notification.port}/${scarab.context}/issues/id/${issueId}\,DanaInfo=${scarab.http.domain}\,Port=${scarab.http.port}
+ Note that you must escape the commas, otherwise the string will be interpreted as a comma separated list of values!
</comment>
<type>Runtime</type>
<customization modification="optional">advanced</customization>
------------------------------------------------------
http://scarab.tigris.org/ds/viewMessage.do?dsForumId=3577&dsMessageId=2359715