From c5dfd60d174a9841e64e4097cecab5aea5c422d0 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sat, 12 Apr 2014 12:26:17 -0400 Subject: [PATCH] Documentation --- src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java | 82 +++++++++++++++++++++++++++++++---------- 1 files changed, 62 insertions(+), 20 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 44618f3..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,30 +16,72 @@ 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 PrintWriter stdout; - protected PrintWriter stderr; - @Override - public void start(Environment env) throws IOException { - startThread(new CommandRunnable() { - @Override - public void run() throws Exception { - parseCommandLine(); - stdout = toPrintWriter(out); - stderr = toPrintWriter(err); - try { - SshCommand.this.run(); - } finally { - stdout.flush(); - stderr.flush(); - } - } - }); - } + protected Logger log = LoggerFactory.getLogger(getClass()); + protected PrintWriter stdout; + protected PrintWriter stderr; - protected abstract void run() throws UnloggedFailure, Failure, Exception; + @Override + public void start(Environment env) throws IOException { + startThread(new CommandRunnable() { + @Override + public void run() throws Exception { + parseCommandLine(); + stdout = toPrintWriter(out); + stderr = toPrintWriter(err); + try { + SshCommand.this.run(); + } finally { + stdout.flush(); + stderr.flush(); + } + } + }); + } + + 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