From a9be3d2fb5e69ce3c9ac7b3963853cb338a0ca10 Mon Sep 17 00:00:00 2001 From: James Moger Date: Wed, 2 Apr 2014 13:54:23 -0400 Subject: [PATCH] Add hostname and ssh repo url methodso to SshCommand --- .../transport/ssh/commands/SshCommand.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) 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 67e2805f..7008b5eb 100644 --- a/src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java +++ b/src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java @@ -16,11 +16,19 @@ package com.gitblit.transport.ssh.commands; 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 { protected Logger log = LoggerFactory.getLogger(getClass()); @@ -45,5 +53,35 @@ public abstract class SshCommand extends BaseCommand { }); } + 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; } -- 2.39.5