From a9be3d2fb5e69ce3c9ac7b3963853cb338a0ca10 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 19:01:30 -0400 Subject: [PATCH] Add hostname and ssh repo url methodso to SshCommand --- src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java | 38 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 38 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java index 67e2805..7008b5e 100644 --- a/src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java +++ b/src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java @@ -16,10 +16,18 @@ import java.io.IOException; import java.io.PrintWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.text.MessageFormat; import org.apache.sshd.server.Environment; +import org.eclipse.jgit.util.SystemReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import com.gitblit.Keys; +import com.gitblit.manager.IGitblit; +import com.gitblit.utils.StringUtils; public abstract class SshCommand extends BaseCommand { @@ -45,5 +53,35 @@ }); } + protected String getHostname() { + IGitblit gitblit = getContext().getGitblit(); + String host = null; + String url = gitblit.getSettings().getString(Keys.web.canonicalUrl, "https://localhost:8443"); + if (url != null) { + try { + host = new URL(url).getHost(); + } catch (MalformedURLException e) { + } + } + if (StringUtils.isEmpty(host)) { + host = SystemReader.getInstance().getHostname(); + } + return host; + } + + protected String getRepositoryUrl(String repository) { + String username = getContext().getClient().getUsername(); + String hostname = getHostname(); + int port = getContext().getGitblit().getSettings().getInteger(Keys.git.sshPort, 0); + if (port == 22) { + // standard port + return MessageFormat.format("{0}@{1}/{2}.git", username, hostname, repository); + } else { + // non-standard port + return MessageFormat.format("ssh://{0}@{1}:{2,number,0}/{3}", + username, hostname, port, repository); + } + } + protected abstract void run() throws UnloggedFailure, Failure, Exception; } -- Gitblit v1.9.1