refactor killing ssh-agent
This commit is contained in:
parent
d4f01aa590
commit
ac53979104
|
@ -1143,7 +1143,7 @@ namespace SparkleShare {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Quit ()
|
public virtual void Quit ()
|
||||||
{
|
{
|
||||||
foreach (SparkleRepoBase repo in Repositories)
|
foreach (SparkleRepoBase repo in Repositories)
|
||||||
repo.Dispose ();
|
repo.Dispose ();
|
||||||
|
@ -1152,14 +1152,6 @@ namespace SparkleShare {
|
||||||
Environment.Exit (0);
|
Environment.Exit (0);
|
||||||
#else
|
#else
|
||||||
System.Windows.Forms.Application.Exit ();
|
System.Windows.Forms.Application.Exit ();
|
||||||
|
|
||||||
// Also kill the SSH_AGENT that we started
|
|
||||||
try {
|
|
||||||
int pid = Int32.Parse (System.Environment.GetEnvironmentVariable ("SSH_AGENT_PID"));
|
|
||||||
Process.GetProcessById (pid).Kill ();
|
|
||||||
} catch (ArgumentException) {
|
|
||||||
SparkleHelpers.DebugInfo ("SSH", "Could not kill the ssh-agent, due to the process wasn't running");
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ using CefSharp;
|
||||||
namespace SparkleShare {
|
namespace SparkleShare {
|
||||||
|
|
||||||
public class SparkleController : SparkleControllerBase {
|
public class SparkleController : SparkleControllerBase {
|
||||||
|
private int sshAgentPid;
|
||||||
|
|
||||||
public override string PluginsPath
|
public override string PluginsPath
|
||||||
{
|
{
|
||||||
|
@ -166,12 +167,18 @@ namespace SparkleShare {
|
||||||
process.Start();
|
process.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void Quit ()
|
||||||
|
{
|
||||||
|
KillSshAgent ();
|
||||||
|
base.Quit ();
|
||||||
|
}
|
||||||
|
|
||||||
private void StartSshAgent ()
|
private void StartSshAgent ()
|
||||||
{
|
{
|
||||||
if (String.IsNullOrEmpty (System.Environment.GetEnvironmentVariable ("SSH_AUTH_SOCK"))) {
|
if (String.IsNullOrEmpty (System.Environment.GetEnvironmentVariable ("SSH_AUTH_SOCK"))) {
|
||||||
|
|
||||||
Process process = new Process ();
|
Process process = new Process ();
|
||||||
process.StartInfo.FileName = "ssh-agent";
|
process.StartInfo.FileName = "ssh-agent";
|
||||||
process.StartInfo.UseShellExecute = false;
|
process.StartInfo.UseShellExecute = false;
|
||||||
process.StartInfo.RedirectStandardOutput = true;
|
process.StartInfo.RedirectStandardOutput = true;
|
||||||
|
|
||||||
|
@ -187,6 +194,7 @@ namespace SparkleShare {
|
||||||
|
|
||||||
Match AgentPid = new Regex (@"SSH_AGENT_PID=([^;\n\r]*)").Match (Output);
|
Match AgentPid = new Regex (@"SSH_AGENT_PID=([^;\n\r]*)").Match (Output);
|
||||||
if (AgentPid.Success) {
|
if (AgentPid.Success) {
|
||||||
|
Int32.TryParse (AgentPid.Groups [1].Value, out sshAgentPid);
|
||||||
System.Environment.SetEnvironmentVariable ("SSH_AGENT_PID", AgentPid.Groups[1].Value);
|
System.Environment.SetEnvironmentVariable ("SSH_AGENT_PID", AgentPid.Groups[1].Value);
|
||||||
SparkleHelpers.DebugInfo ("SSH", "ssh-agent started, PID=" + AgentPid.Groups[1].Value);
|
SparkleHelpers.DebugInfo ("SSH", "ssh-agent started, PID=" + AgentPid.Groups[1].Value);
|
||||||
}
|
}
|
||||||
|
@ -196,7 +204,18 @@ namespace SparkleShare {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void KillSshAgent ()
|
||||||
|
{
|
||||||
|
if (sshAgentPid != 0) {
|
||||||
|
// Kill the SSH_AGENT that we started
|
||||||
|
try {
|
||||||
|
Process.GetProcessById (sshAgentPid).Kill ();
|
||||||
|
} catch (ArgumentException) {
|
||||||
|
SparkleHelpers.DebugInfo ("SSH", "Could not kill the ssh-agent, because the process wasn't running");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue