From 14cbbeaf61ce67c1ef5a6445515f3134dd5690ce Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 30 Dec 2013 16:53:58 -0500
Subject: [PATCH] New canonical base url setting for repository urls and notifications
---
src/main/java/com/gitblit/git/GitblitReceivePackFactory.java | 10 ++++++----
src/main/java/com/gitblit/servlet/SyndicationServlet.java | 5 ++++-
src/main/java/com/gitblit/servlet/RpcServlet.java | 10 ++++++++--
src/main/java/com/gitblit/git/GitblitReceivePack.java | 6 ------
src/main/java/com/gitblit/manager/GitblitManager.java | 6 +++++-
src/main/distrib/data/gitblit.properties | 6 ++++++
src/main/java/com/gitblit/servlet/FederationServlet.java | 12 +++++++++---
7 files changed, 38 insertions(+), 17 deletions(-)
diff --git a/src/main/distrib/data/gitblit.properties b/src/main/distrib/data/gitblit.properties
index edfa1c4..482a835 100644
--- a/src/main/distrib/data/gitblit.properties
+++ b/src/main/distrib/data/gitblit.properties
@@ -612,6 +612,12 @@
# SINCE 0.5.0
web.siteName =
+# The canonical url of your Gitblit server to bs used in email notifications.
+# e.g. web.canonicalUrl = https://demo-gitblit.rhcloud.com
+#
+# SINCE 1.4.0
+web.canonicalUrl =
+
# You may specify a different logo image for the header but it must be 120x45px.
# If the specified file does not exist, the default Gitblit logo will be used.
#
diff --git a/src/main/java/com/gitblit/git/GitblitReceivePack.java b/src/main/java/com/gitblit/git/GitblitReceivePack.java
index e5c0ea4..c373465 100644
--- a/src/main/java/com/gitblit/git/GitblitReceivePack.java
+++ b/src/main/java/com/gitblit/git/GitblitReceivePack.java
@@ -85,8 +85,6 @@
protected String gitblitUrl;
- protected String repositoryUrl;
-
protected GroovyScriptEngine gse;
private final IStoredSettings settings;
@@ -388,10 +386,6 @@
protected void setGitblitUrl(String url) {
this.gitblitUrl = url;
- }
-
- protected void setRepositoryUrl(String url) {
- this.repositoryUrl = url;
}
protected void sendRejection(final ReceiveCommand cmd, final String why, Object... objects) {
diff --git a/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java b/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java
index bdf9b1a..b8b49bc 100644
--- a/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java
+++ b/src/main/java/com/gitblit/git/GitblitReceivePackFactory.java
@@ -63,7 +63,6 @@
String repositoryName = "";
String origin = "";
String gitblitUrl = "";
- String repositoryUrl = "";
int timeout = 0;
if (req instanceof HttpServletRequest) {
@@ -72,7 +71,6 @@
repositoryName = request.getAttribute("gitblitRepositoryName").toString();
origin = request.getRemoteHost();
gitblitUrl = HttpUtils.getGitblitURL(request);
- repositoryUrl = request.getRequestURI();
// determine pushing user
String username = request.getRemoteUser();
@@ -98,11 +96,15 @@
throw new ServiceNotEnabledException();
}
+ String url = settings.getString(Keys.web.canonicalUrl, null);
+ if (StringUtils.isEmpty(url)) {
+ url = gitblitUrl;
+ }
+
final RepositoryModel repository = gitblit.getRepositoryModel(repositoryName);
final GitblitReceivePack rp = new GitblitReceivePack(gitblit, db, repository, user);
- rp.setGitblitUrl(gitblitUrl);
- rp.setRepositoryUrl(repositoryUrl);
+ rp.setGitblitUrl(url);
rp.setRefLogIdent(new PersonIdent(user.username, user.username + "@" + origin));
rp.setTimeout(timeout);
diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java
index 75b258a..7e78836 100644
--- a/src/main/java/com/gitblit/manager/GitblitManager.java
+++ b/src/main/java/com/gitblit/manager/GitblitManager.java
@@ -337,8 +337,12 @@
}
protected String getRepositoryUrl(HttpServletRequest request, String username, RepositoryModel repository) {
+ String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);
+ if (StringUtils.isEmpty(gitblitUrl)) {
+ gitblitUrl = HttpUtils.getGitblitURL(request);
+ }
StringBuilder sb = new StringBuilder();
- sb.append(HttpUtils.getGitblitURL(request));
+ sb.append(gitblitUrl);
sb.append(Constants.R_PATH);
sb.append(repository.name);
diff --git a/src/main/java/com/gitblit/servlet/FederationServlet.java b/src/main/java/com/gitblit/servlet/FederationServlet.java
index 372292d..8dbf0e1 100644
--- a/src/main/java/com/gitblit/servlet/FederationServlet.java
+++ b/src/main/java/com/gitblit/servlet/FederationServlet.java
@@ -138,8 +138,11 @@
return;
}
- String url = HttpUtils.getGitblitURL(request);
- federationManager.submitFederationProposal(proposal, url);
+ String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);
+ if (StringUtils.isEmpty(gitblitUrl)) {
+ gitblitUrl = HttpUtils.getGitblitURL(request);
+ }
+ federationManager.submitFederationProposal(proposal, gitblitUrl);
logger.info(MessageFormat.format(
"Submitted {0} federation proposal to pull {1} repositories from {2}",
proposal.tokenType.name(), proposal.repositories.size(), proposal.url));
@@ -185,7 +188,10 @@
Object result = null;
if (FederationRequest.PULL_REPOSITORIES.equals(reqType)) {
- String gitblitUrl = HttpUtils.getGitblitURL(request);
+ String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);
+ if (StringUtils.isEmpty(gitblitUrl)) {
+ gitblitUrl = HttpUtils.getGitblitURL(request);
+ }
result = federationManager.getRepositories(gitblitUrl, token);
} else {
if (FederationRequest.PULL_SETTINGS.equals(reqType)) {
diff --git a/src/main/java/com/gitblit/servlet/RpcServlet.java b/src/main/java/com/gitblit/servlet/RpcServlet.java
index e7b3ed2..28f0d5b 100644
--- a/src/main/java/com/gitblit/servlet/RpcServlet.java
+++ b/src/main/java/com/gitblit/servlet/RpcServlet.java
@@ -101,7 +101,10 @@
result = PROTOCOL_VERSION;
} else if (RpcRequest.LIST_REPOSITORIES.equals(reqType)) {
// Determine the Gitblit clone url
- String gitblitUrl = HttpUtils.getGitblitURL(request);
+ String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);
+ if (StringUtils.isEmpty(gitblitUrl)) {
+ gitblitUrl = HttpUtils.getGitblitURL(request);
+ }
StringBuilder sb = new StringBuilder();
sb.append(gitblitUrl);
sb.append(Constants.R_PATH);
@@ -320,7 +323,10 @@
} else if (RpcRequest.LIST_FEDERATION_SETS.equals(reqType)) {
// return the list of federation sets
if (allowAdmin && gitblit.canFederate()) {
- String gitblitUrl = HttpUtils.getGitblitURL(request);
+ String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);
+ if (StringUtils.isEmpty(gitblitUrl)) {
+ gitblitUrl = HttpUtils.getGitblitURL(request);
+ }
result = gitblit.getFederationSets(gitblitUrl);
} else {
response.sendError(notAllowedCode);
diff --git a/src/main/java/com/gitblit/servlet/SyndicationServlet.java b/src/main/java/com/gitblit/servlet/SyndicationServlet.java
index 8acd019..66ca4a1 100644
--- a/src/main/java/com/gitblit/servlet/SyndicationServlet.java
+++ b/src/main/java/com/gitblit/servlet/SyndicationServlet.java
@@ -222,7 +222,10 @@
// parameterized parameters
urlPattern = "{0}/commit/?r={1}&h={2}";
}
- String gitblitUrl = HttpUtils.getGitblitURL(request);
+ String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);
+ if (StringUtils.isEmpty(gitblitUrl)) {
+ gitblitUrl = HttpUtils.getGitblitURL(request);
+ }
char fsc = settings.getChar(Keys.web.forwardSlashCharacter, '/');
List<FeedEntryModel> entries = new ArrayList<FeedEntryModel>();
--
Gitblit v1.9.1