]> source.dussan.org Git - gitblit.git/commitdiff
New canonical base url setting for repository urls and notifications
authorJames Moger <james.moger@gitblit.com>
Sat, 30 Nov 2013 01:06:09 +0000 (20:06 -0500)
committerJames Moger <james.moger@gitblit.com>
Mon, 30 Dec 2013 21:53:58 +0000 (16:53 -0500)
Change-Id: I86a1eb61c2351d1cf3f6b3becf00f2a36d5c8ed6

src/main/distrib/data/gitblit.properties
src/main/java/com/gitblit/git/GitblitReceivePack.java
src/main/java/com/gitblit/git/GitblitReceivePackFactory.java
src/main/java/com/gitblit/manager/GitblitManager.java
src/main/java/com/gitblit/servlet/FederationServlet.java
src/main/java/com/gitblit/servlet/RpcServlet.java
src/main/java/com/gitblit/servlet/SyndicationServlet.java

index edfa1c4c0d3cf99ee93925c201499998cb1b452d..482a8353b2a0a88efb7cecf2e8c7cb9656285123 100644 (file)
@@ -612,6 +612,12 @@ realm.minPasswordLength = 5
 # SINCE 0.5.0\r
 web.siteName =\r
 \r
+# The canonical url of your Gitblit server to bs used in email notifications.\r
+# e.g. web.canonicalUrl = https://demo-gitblit.rhcloud.com\r
+#\r
+# SINCE 1.4.0\r
+web.canonicalUrl = \r
+\r
 # You may specify a different logo image for the header but it must be 120x45px.\r
 # If the specified file does not exist, the default Gitblit logo will be used.\r
 #\r
index e5c0ea45731013b7c952beea0afbae8267869487..c3734656d6ae423df79d46def1e3b308c141abaa 100644 (file)
@@ -85,8 +85,6 @@ public class GitblitReceivePack extends ReceivePack implements PreReceiveHook, P
 \r
        protected String gitblitUrl;\r
 \r
-       protected String repositoryUrl;\r
-\r
        protected GroovyScriptEngine gse;\r
 \r
        private final IStoredSettings settings;\r
@@ -390,10 +388,6 @@ public class GitblitReceivePack extends ReceivePack implements PreReceiveHook, P
                this.gitblitUrl = url;\r
        }\r
 \r
-       protected void setRepositoryUrl(String url) {\r
-               this.repositoryUrl = url;\r
-       }\r
-\r
        protected void sendRejection(final ReceiveCommand cmd, final String why, Object... objects) {\r
                String text;\r
                if (ArrayUtils.isEmpty(objects)) {\r
index bdf9b1ad47bdd3b3e198e5c697b5ff6f2321a95d..b8b49bcdf94c4a60b93c9e8a0c98f562d07be5a0 100644 (file)
@@ -63,7 +63,6 @@ public class GitblitReceivePackFactory<X> implements ReceivePackFactory<X> {
                String repositoryName = "";
                String origin = "";
                String gitblitUrl = "";
-               String repositoryUrl = "";
                int timeout = 0;
 
                if (req instanceof HttpServletRequest) {
@@ -72,7 +71,6 @@ public class GitblitReceivePackFactory<X> implements ReceivePackFactory<X> {
                        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 @@ public class GitblitReceivePackFactory<X> implements ReceivePackFactory<X> {
                        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);
 
index 75b258a559ef4c09f60e6ea84f24e07a71cf75a4..7e788361568f8c9d2c13cf21b14444d996a0342d 100644 (file)
@@ -337,8 +337,12 @@ public class GitblitManager implements IGitblit {
        }
 
        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);
 
index 372292de4bafd6812fba516e881f0c474e049c30..8dbf0e1674045c2b50efa805879daeab4dd7ad5f 100644 (file)
@@ -138,8 +138,11 @@ public class FederationServlet extends JsonServlet {
                                return;\r
                        }\r
 \r
-                       String url = HttpUtils.getGitblitURL(request);\r
-                       federationManager.submitFederationProposal(proposal, url);\r
+                       String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);\r
+                       if (StringUtils.isEmpty(gitblitUrl)) {\r
+                               gitblitUrl = HttpUtils.getGitblitURL(request);\r
+                       }\r
+                       federationManager.submitFederationProposal(proposal, gitblitUrl);\r
                        logger.info(MessageFormat.format(\r
                                        "Submitted {0} federation proposal to pull {1} repositories from {2}",\r
                                        proposal.tokenType.name(), proposal.repositories.size(), proposal.url));\r
@@ -185,7 +188,10 @@ public class FederationServlet extends JsonServlet {
 \r
                Object result = null;\r
                if (FederationRequest.PULL_REPOSITORIES.equals(reqType)) {\r
-                       String gitblitUrl = HttpUtils.getGitblitURL(request);\r
+                       String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);\r
+                       if (StringUtils.isEmpty(gitblitUrl)) {\r
+                               gitblitUrl = HttpUtils.getGitblitURL(request);\r
+                       }\r
                        result = federationManager.getRepositories(gitblitUrl, token);\r
                } else {\r
                        if (FederationRequest.PULL_SETTINGS.equals(reqType)) {\r
index e7b3ed2cc51a406a8d8acc91e993084f3903ed0b..28f0d5bf959c5c34fe7fa5a9ad2998ba1eb1d3e4 100644 (file)
@@ -101,7 +101,10 @@ public class RpcServlet extends JsonServlet {
                        result = PROTOCOL_VERSION;\r
                } else if (RpcRequest.LIST_REPOSITORIES.equals(reqType)) {\r
                        // Determine the Gitblit clone url\r
-                       String gitblitUrl = HttpUtils.getGitblitURL(request);\r
+                       String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);\r
+                       if (StringUtils.isEmpty(gitblitUrl)) {\r
+                               gitblitUrl = HttpUtils.getGitblitURL(request);\r
+                       }\r
                        StringBuilder sb = new StringBuilder();\r
                        sb.append(gitblitUrl);\r
                        sb.append(Constants.R_PATH);\r
@@ -320,7 +323,10 @@ public class RpcServlet extends JsonServlet {
                } else if (RpcRequest.LIST_FEDERATION_SETS.equals(reqType)) {\r
                        // return the list of federation sets\r
                        if (allowAdmin && gitblit.canFederate()) {\r
-                               String gitblitUrl = HttpUtils.getGitblitURL(request);\r
+                               String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);\r
+                               if (StringUtils.isEmpty(gitblitUrl)) {\r
+                                       gitblitUrl = HttpUtils.getGitblitURL(request);\r
+                               }\r
                                result = gitblit.getFederationSets(gitblitUrl);\r
                        } else {\r
                                response.sendError(notAllowedCode);\r
index 8acd0192196ddd59f2d617e9623f5dd71573b215..66ca4a1981f00612bd34417366eab07185f0c559 100644 (file)
@@ -222,7 +222,10 @@ public class SyndicationServlet extends DaggerServlet {
                        // parameterized parameters\r
                        urlPattern = "{0}/commit/?r={1}&h={2}";\r
                }\r
-               String gitblitUrl = HttpUtils.getGitblitURL(request);\r
+               String gitblitUrl = settings.getString(Keys.web.canonicalUrl, null);\r
+               if (StringUtils.isEmpty(gitblitUrl)) {\r
+                       gitblitUrl = HttpUtils.getGitblitURL(request);\r
+               }\r
                char fsc = settings.getChar(Keys.web.forwardSlashCharacter, '/');\r
 \r
                List<FeedEntryModel> entries = new ArrayList<FeedEntryModel>();\r