42 lines
1.5 KiB
C#
42 lines
1.5 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Sparkles
|
|||
|
{
|
|||
|
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
|
|||
|
}
|
|||
|
}
|
|||
|
}
|