From fef2341943be0a964922a1d504af8e282515af88 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 04 Mar 2014 13:37:12 -0500
Subject: [PATCH] Process bugtraq configuration in markup document rendering

---
 src/main/java/com/gitblit/wicket/pages/RepositoryPage.java |    8 ++++----
 src/main/java/com/gitblit/wicket/pages/TicketsPage.java    |    2 +-
 src/main/java/com/gitblit/servlet/SyndicationServlet.java  |    4 ++--
 src/main/java/com/gitblit/wicket/pages/DocPage.java        |    4 ++++
 .gitbugtraq                                                |    6 ++++++
 src/main/java/com/gitblit/utils/BugtraqProcessor.java      |   30 ++++++++++++++++++++++--------
 src/main/java/com/gitblit/wicket/pages/CommitPage.java     |    2 +-
 src/main/java/com/gitblit/wicket/pages/TicketPage.java     |    2 +-
 src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java |    2 +-
 9 files changed, 42 insertions(+), 18 deletions(-)

diff --git a/.gitbugtraq b/.gitbugtraq
index cd5b228..21f0858 100644
--- a/.gitbugtraq
+++ b/.gitbugtraq
@@ -8,3 +8,9 @@
   loglinkregex = "(?:pull request|pull|pr)\\s*[-#]?[0-9]+"
   logregex = "\\d+"
   loglinktext = "pull request #%BUGID%"
+[bugtraq "tickets"]
+  url = "https://dev.gitblit.com/tickets/gitblit.git/%BUGID%"
+  loglinkregex = "(?:ticket)\\s*[-#]?[0-9]+"
+  logregex = "\\d+"
+  loglinktext = "ticket #%BUGID%"
+  
\ No newline at end of file
diff --git a/src/main/java/com/gitblit/servlet/SyndicationServlet.java b/src/main/java/com/gitblit/servlet/SyndicationServlet.java
index 66ca4a1..24def99 100644
--- a/src/main/java/com/gitblit/servlet/SyndicationServlet.java
+++ b/src/main/java/com/gitblit/servlet/SyndicationServlet.java
@@ -40,9 +40,9 @@
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.UserModel;
 import com.gitblit.servlet.AuthenticationFilter.AuthenticatedRequest;
+import com.gitblit.utils.BugtraqProcessor;
 import com.gitblit.utils.HttpUtils;
 import com.gitblit.utils.JGitUtils;
-import com.gitblit.utils.MessageProcessor;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.utils.SyndicationUtils;
 
@@ -257,7 +257,7 @@
 						offset, length);
 			}
 			Map<ObjectId, List<RefModel>> allRefs = JGitUtils.getAllRefs(repository, model.showRemoteBranches);
-			MessageProcessor processor = new MessageProcessor(settings);
+			BugtraqProcessor processor = new BugtraqProcessor(settings);
 
 			// convert RevCommit to SyndicatedEntryModel
 			for (RevCommit commit : commits) {
diff --git a/src/main/java/com/gitblit/utils/MessageProcessor.java b/src/main/java/com/gitblit/utils/BugtraqProcessor.java
similarity index 86%
rename from src/main/java/com/gitblit/utils/MessageProcessor.java
rename to src/main/java/com/gitblit/utils/BugtraqProcessor.java
index c38e0e8..67f220f 100644
--- a/src/main/java/com/gitblit/utils/MessageProcessor.java
+++ b/src/main/java/com/gitblit/utils/BugtraqProcessor.java
@@ -34,13 +34,13 @@
 import com.syntevo.bugtraq.BugtraqFormatter;
 import com.syntevo.bugtraq.BugtraqFormatter.OutputHandler;
 
-public class MessageProcessor {
+public class BugtraqProcessor {
 
 	private final Logger logger = LoggerFactory.getLogger(getClass());
 
 	private final IStoredSettings settings;
 
-	public MessageProcessor(IStoredSettings settings) {
+	public BugtraqProcessor(IStoredSettings settings) {
 		this.settings = settings;
 	}
 
@@ -59,7 +59,7 @@
 		switch (model.commitMessageRenderer) {
 		case MARKDOWN:
 			try {
-				String prepared = processCommitMessageRegex(repository, model.name, text);
+				String prepared = processTextRegex(repository, model.name, text);
 				return MarkdownUtils.transformMarkdown(prepared);
 			} catch (Exception e) {
 				logger.error("Failed to render commit message as markdown", e);
@@ -86,21 +86,35 @@
 	 */
 	public String processPlainCommitMessage(Repository repository, String repositoryName, String text) {
 		String html = StringUtils.escapeForHtml(text, false);
-		html = processCommitMessageRegex(repository, repositoryName, html);
+		html = processTextRegex(repository, repositoryName, html);
 		return StringUtils.breakLinesForHtml(html);
 
 	}
 
 	/**
-	 * Apply globally or per-repository specified regex substitutions to the
-	 * commit message.
+	 * Returns an processed version of the text with any global or
+	 * repository-specific regular expression substitution applied.
 	 *
 	 * @param repository
 	 * @param repositoryName
 	 * @param text
-	 * @return the processed commit message
+	 * @return processed version of the text
 	 */
-	protected String processCommitMessageRegex(Repository repository, String repositoryName, String text) {
+	public String processText(Repository repository, String repositoryName, String text) {
+		String html = processTextRegex(repository, repositoryName, text);
+		return html;
+	}
+
+	/**
+	 * Apply globally or per-repository specified regex substitutions to the
+	 * text.
+	 *
+	 * @param repository
+	 * @param repositoryName
+	 * @param text
+	 * @return the processed text
+	 */
+	protected String processTextRegex(Repository repository, String repositoryName, String text) {
 		Map<String, String> map = new HashMap<String, String>();
 		// global regex keys
 		if (settings.getBoolean(Keys.regex.global, false)) {
diff --git a/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java b/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
index f3f6175..7f2a8a6 100644
--- a/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
@@ -107,7 +107,7 @@
 				item.add(new GravatarImage("noteAuthorAvatar", entry.notesRef.getAuthorIdent()));
 				item.add(WicketUtils.createTimestampLabel("authorDate", entry.notesRef
 						.getAuthorIdent().getWhen(), getTimeZone(), getTimeUtils()));
-				item.add(new Label("noteContent", messageProcessor().processPlainCommitMessage(getRepository(), repositoryName,
+				item.add(new Label("noteContent", bugtraqProcessor().processPlainCommitMessage(getRepository(), repositoryName,
 						entry.content)).setEscapeModelStrings(false));
 			}
 		};
diff --git a/src/main/java/com/gitblit/wicket/pages/CommitPage.java b/src/main/java/com/gitblit/wicket/pages/CommitPage.java
index 0998c71..8bc9848 100644
--- a/src/main/java/com/gitblit/wicket/pages/CommitPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/CommitPage.java
@@ -135,7 +135,7 @@
 				item.add(new GravatarImage("noteAuthorAvatar", entry.notesRef.getAuthorIdent()));
 				item.add(WicketUtils.createTimestampLabel("authorDate", entry.notesRef
 						.getAuthorIdent().getWhen(), getTimeZone(), getTimeUtils()));
-				item.add(new Label("noteContent", messageProcessor().processPlainCommitMessage(getRepository(), repositoryName,
+				item.add(new Label("noteContent", bugtraqProcessor().processPlainCommitMessage(getRepository(), repositoryName,
 						entry.content)).setEscapeModelStrings(false));
 			}
 		};
diff --git a/src/main/java/com/gitblit/wicket/pages/DocPage.java b/src/main/java/com/gitblit/wicket/pages/DocPage.java
index 03d2337..875765f 100644
--- a/src/main/java/com/gitblit/wicket/pages/DocPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/DocPage.java
@@ -24,6 +24,7 @@
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
 
+import com.gitblit.utils.BugtraqProcessor;
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.wicket.CacheControl;
@@ -66,6 +67,9 @@
 			}
 		}
 
+		BugtraqProcessor bugtraq = new BugtraqProcessor(app().settings());
+		markupText = bugtraq.processText(getRepository(), repositoryName, markupText);
+
 		Fragment fragment;
 		MarkupDocument markupDoc = processor.parse(repositoryName, getBestCommitId(commit), documentPath, markupText);
 		if (MarkupSyntax.PLAIN.equals(markupDoc.syntax)) {
diff --git a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
index 86df456..59cbdc8 100644
--- a/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RepositoryPage.java
@@ -58,9 +58,9 @@
 import com.gitblit.servlet.SyndicationServlet;
 import com.gitblit.tickets.TicketIndexer.Lucene;
 import com.gitblit.utils.ArrayUtils;
+import com.gitblit.utils.BugtraqProcessor;
 import com.gitblit.utils.DeepCopier;
 import com.gitblit.utils.JGitUtils;
-import com.gitblit.utils.MessageProcessor;
 import com.gitblit.utils.RefLogUtils;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.wicket.CacheControl;
@@ -177,8 +177,8 @@
 		return getClass();
 	}
 
-	protected MessageProcessor messageProcessor() {
-		return new MessageProcessor(app().settings());
+	protected BugtraqProcessor bugtraqProcessor() {
+		return new BugtraqProcessor(app().settings());
 	}
 
 	private Map<String, PageRegistration> registerPages() {
@@ -531,7 +531,7 @@
 
 	protected void addFullText(String wicketId, String text) {
 		RepositoryModel model = getRepositoryModel();
-		String content = messageProcessor().processCommitMessage(r, model, text);
+		String content = bugtraqProcessor().processCommitMessage(r, model, text);
 		String html;
 		switch (model.commitMessageRenderer) {
 		case MARKDOWN:
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.java b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
index 0d60ec2..3eb88dd 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.java
@@ -491,7 +491,7 @@
 			add(new Label("ticketTopic").setVisible(false));
 		} else {
 			// process the topic using the bugtraq config to link things
-			String topic = messageProcessor().processPlainCommitMessage(getRepository(), repositoryName, ticket.topic);
+			String topic = bugtraqProcessor().processPlainCommitMessage(getRepository(), repositoryName, ticket.topic);
 			add(new Label("ticketTopic", topic).setEscapeModelStrings(false));
 		}
 
diff --git a/src/main/java/com/gitblit/wicket/pages/TicketsPage.java b/src/main/java/com/gitblit/wicket/pages/TicketsPage.java
index 525658c..2d60481 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketsPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TicketsPage.java
@@ -529,7 +529,7 @@
 
 					@Override
 					public void populateItem(final Item<String> labelItem) {
-						String content = messageProcessor().processPlainCommitMessage(getRepository(), repositoryName, labelItem.getModelObject());
+						String content = bugtraqProcessor().processPlainCommitMessage(getRepository(), repositoryName, labelItem.getModelObject());
 						Label label = new Label("label", content);
 						label.setEscapeModelStrings(false);
 						TicketLabel tLabel = app().tickets().getLabel(getRepositoryModel(), labelItem.getModelObject());

--
Gitblit v1.9.1