From ec5a889c907af30afeba527def2d9f836eecbec4 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 03 Nov 2011 08:50:47 -0400 Subject: [PATCH] Feeds and Manager must respect a server's web.mountParameters setting --- src/com/gitblit/SyndicationServlet.java | 28 +++++++++++++++++++++++----- 1 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/com/gitblit/SyndicationServlet.java b/src/com/gitblit/SyndicationServlet.java index 694b9cc..7510179 100644 --- a/src/com/gitblit/SyndicationServlet.java +++ b/src/com/gitblit/SyndicationServlet.java @@ -32,8 +32,6 @@ import com.gitblit.utils.JGitUtils; import com.gitblit.utils.StringUtils; import com.gitblit.utils.SyndicationUtils; -import com.sun.syndication.feed.synd.SyndContent; -import com.sun.syndication.feed.synd.SyndContentImpl; /** * SyndicationServlet generates RSS 2.0 feeds and feed links. @@ -145,13 +143,22 @@ List<RevCommit> commits = JGitUtils.getRevLog(repository, objectId, 0, length); List<SyndicatedEntryModel> entries = new ArrayList<SyndicatedEntryModel>(); + boolean mountParameters = GitBlit.getBoolean(Keys.web.mountParameters, true); + String urlPattern; + if (mountParameters) { + // mounted parameters + urlPattern = "{0}/commit/{1}/{2}"; + } else { + // parameterized parameters + urlPattern = "{0}/commit/?r={1}&h={2}"; + } String gitblitUrl = HttpUtils.getGitblitURL(request); // convert RevCommit to SyndicatedEntryModel for (RevCommit commit : commits) { SyndicatedEntryModel entry = new SyndicatedEntryModel(); entry.title = commit.getShortMessage(); entry.author = commit.getAuthorIdent().getName(); - entry.link = MessageFormat.format("{0}/commit/{1}/{2}", gitblitUrl, + entry.link = MessageFormat.format(urlPattern, gitblitUrl, StringUtils.encodeURL(model.name), commit.getName()); entry.published = commit.getCommitterIdent().getWhen(); entry.contentType = "text/plain"; @@ -160,9 +167,20 @@ entry.branch = objectId; entries.add(entry); } + String feedLink; + if (mountParameters) { + // mounted url + feedLink = MessageFormat.format("{0}/summary/{1}", gitblitUrl, + StringUtils.encodeURL(model.name)); + } else { + // parameterized url + feedLink = MessageFormat.format("{0}/summary/?r={1}", gitblitUrl, + StringUtils.encodeURL(model.name)); + } + try { - SyndicationUtils.toRSS(gitblitUrl, getTitle(model.name, objectId), model.description, - model.name, entries, response.getOutputStream()); + SyndicationUtils.toRSS(gitblitUrl, feedLink, getTitle(model.name, objectId), + model.description, model.name, entries, response.getOutputStream()); } catch (Exception e) { logger.error("An error occurred during feed generation", e); } -- Gitblit v1.9.1