SparkleShare/Sparkles/SSHCommand.cs

36 lines
1.4 KiB
C#
Raw Normal View History

2017-03-13 16:39:25 +00:00
using System.IO;
2016-10-25 09:25:34 +00:00
2017-03-13 16:39:25 +00:00
namespace Sparkles {
2016-10-25 09:25:34 +00:00
public class SSHCommand : Command
{
public static string SSHPath = "";
public static string SSHCommandPath {
get {
return Path.Combine(SSHPath, "ssh").Replace("\\", "/");
}
}
public SSHCommand(string command, string args) : this (command, args, null) {
}
public SSHCommand(string command, string args, SSHAuthenticationInfo auth_info) : base (Path.Combine(SSHPath, command), args) {
string GIT_SSH_COMMAND = SSHPath;
if (auth_info != null)
GIT_SSH_COMMAND = FormatGitSSHCommand(auth_info);
SetEnvironmentVariable("GIT_SSH_COMMAND", GIT_SSH_COMMAND);
}
public static string FormatGitSSHCommand(SSHAuthenticationInfo auth_info)
{
return SSHCommandPath + " " +
"-i " + auth_info.PrivateKeyFilePath.Replace("\\" , "/").Replace(" ", "\\ ") + " " +
"-o UserKnownHostsFile=" + auth_info.KnownHostsFilePath.Replace("\\", "/").Replace(" ", "\\ ") + " " +
"-o IdentitiesOnly=yes" + " " + // Don't fall back to other keys on the system
"-o PasswordAuthentication=no" + " " + // Don't hang on possible password prompts
"-F /dev/null"; // Ignore the system's SSH config file
}
}
}