From: James Moger Date: Fri, 29 Mar 2013 19:44:08 +0000 (-0400) Subject: Support username substitution in web.otherUrls (issue 213) X-Git-Tag: v1.3.0~208 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d37bce55bbb60aa2130b40673d28ec8c8f4049c1;p=gitblit.git Support username substitution in web.otherUrls (issue 213) --- diff --git a/releases.moxie b/releases.moxie index b34ea3b9..a274b073 100644 --- a/releases.moxie +++ b/releases.moxie @@ -30,6 +30,7 @@ r17: { - Implemented multiple repository owners - Chinese translation - Added weblogic.xml to WAR for deployment on WebLogic (issue 199) + - Support username substitution in web.otherUrls (issue 213) - Option to force client-side basic authentication instead of form-based authentication if web.authenticateViewPages=true (issue 222) contributors: diff --git a/src/main/distrib/data/gitblit.properties b/src/main/distrib/data/gitblit.properties index c1587d6b..8c90258b 100644 --- a/src/main/distrib/data/gitblit.properties +++ b/src/main/distrib/data/gitblit.properties @@ -723,9 +723,16 @@ web.mountParameters = true web.forwardSlashCharacter = / # Show other URLs on the summary page for accessing your git repositories -# Use spaces to separate urls. {0} is the token for the repository name. +# Use spaces to separate urls. +# +# {0} is the token for the repository name +# {1} is the token for the username +# +# The username is only practical if you have setup your other git serving +# solutions accounts to have the same username as the Gitblit account. +# # e.g. -# web.otherUrls = ssh://localhost/git/{0} git://localhost/git/{0} +# web.otherUrls = ssh://localhost/git/{0} git://localhost/git/{0} https://{1}@localhost/r/{0} # # SPACE-DELIMITED # SINCE 0.5.0 diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java index 83769d36..12815e78 100644 --- a/src/main/java/com/gitblit/GitBlit.java +++ b/src/main/java/com/gitblit/GitBlit.java @@ -454,12 +454,13 @@ public class GitBlit implements ServletContextListener { * advertise alternative urls for Git client repository access. * * @param repositoryName + * @param userName * @return list of non-gitblit clone urls */ - public List getOtherCloneUrls(String repositoryName) { + public List getOtherCloneUrls(String repositoryName, String username) { List cloneUrls = new ArrayList(); for (String url : settings.getStrings(Keys.web.otherUrls)) { - cloneUrls.add(MessageFormat.format(url, repositoryName)); + cloneUrls.add(MessageFormat.format(url, repositoryName, username)); } return cloneUrls; } diff --git a/src/main/java/com/gitblit/wicket/pages/EmptyRepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/EmptyRepositoryPage.java index be0dad9e..cccf8a69 100644 --- a/src/main/java/com/gitblit/wicket/pages/EmptyRepositoryPage.java +++ b/src/main/java/com/gitblit/wicket/pages/EmptyRepositoryPage.java @@ -25,7 +25,9 @@ import org.apache.wicket.markup.html.basic.Label; import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.models.RepositoryModel; +import com.gitblit.models.UserModel; import com.gitblit.utils.ArrayUtils; +import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.GitblitRedirectException; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.RepositoryUrlPanel; @@ -56,7 +58,8 @@ public class EmptyRepositoryPage extends RootPage { // add the Gitblit repository url repositoryUrls.add(getRepositoryUrl(repository)); } - repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(repositoryName)); + UserModel user = GitBlitWebSession.get().getUser(); + repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(repositoryName, user == null ? "" : user.username)); String primaryUrl = ArrayUtils.isEmpty(repositoryUrls) ? "" : repositoryUrls.get(0); add(new Label("repository", repositoryName)); diff --git a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java index bd40a1b7..d68add0f 100644 --- a/src/main/java/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/main/java/com/gitblit/wicket/pages/SummaryPage.java @@ -53,6 +53,7 @@ import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.MarkdownUtils; import com.gitblit.utils.StringUtils; +import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.BranchesPanel; import com.gitblit.wicket.panels.LinkPanel; @@ -73,6 +74,7 @@ public class SummaryPage extends RepositoryPage { Repository r = getRepository(); RepositoryModel model = getRepositoryModel(); + UserModel user = GitBlitWebSession.get().getUser(); List metrics = null; Metric metricsTotal = null; @@ -148,7 +150,7 @@ public class SummaryPage extends RepositoryPage { } else { add(WicketUtils.newClearPixel("accessRestrictionIcon").setVisible(false)); } - repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(repositoryName)); + repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(repositoryName, user == null ? "" : user.username)); String primaryUrl = ArrayUtils.isEmpty(repositoryUrls) ? "" : repositoryUrls.remove(0); add(new RepositoryUrlPanel("repositoryCloneUrl", primaryUrl)); diff --git a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java index 7b4ee9f0..f2b56e17 100644 --- a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java +++ b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java @@ -221,7 +221,7 @@ public class ProjectRepositoryPanel extends BasePanel { // add the Gitblit repository url repositoryUrls.add(BasePage.getRepositoryUrl(entry)); } - repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(entry.name)); + repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(entry.name, user == null ? "" : user.username)); String primaryUrl = ArrayUtils.isEmpty(repositoryUrls) ? "" : repositoryUrls.remove(0); add(new RepositoryUrlPanel("repositoryCloneUrl", primaryUrl));