mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
Merge pull request #2508 from RFC1920/v1.77.3-dev-putty
bugfix for Putty import
This commit is contained in:
@@ -143,6 +143,21 @@ namespace mRemoteNG.App
|
||||
}
|
||||
}
|
||||
|
||||
internal static void ImportFromPutty(ContainerInfo selectedNodeAsContainer)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (Runtime.ConnectionsService.BatchedSavingContext())
|
||||
{
|
||||
RegistryImporter.Import("Software\\SimonTatham\\PuTTY\\Sessions", selectedNodeAsContainer);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromPutty() failed.", ex);
|
||||
}
|
||||
}
|
||||
|
||||
private static IConnectionImporter<string> BuildConnectionImporterFromFileExtension(string fileName)
|
||||
{
|
||||
// TODO: Use the file contents to determine the file type instead of trusting the extension
|
||||
|
||||
@@ -28,13 +28,12 @@ namespace mRemoteNG.Config.Import
|
||||
{
|
||||
if (key != null)
|
||||
{
|
||||
int i = 0;
|
||||
foreach (string sub in key.GetSubKeyNames())
|
||||
{
|
||||
if (sub.EndsWith("Default%20Settings")) continue;
|
||||
using RegistryKey subkey = key.OpenSubKey(sub);
|
||||
string Hostname = subkey.GetValue("HostName") as string;
|
||||
|
||||
string connName = subkey.Name[(key.Name.Length + 1)..];
|
||||
if (!string.IsNullOrEmpty(Hostname))
|
||||
{
|
||||
int Port = 22;
|
||||
@@ -60,20 +59,13 @@ namespace mRemoteNG.Config.Import
|
||||
|
||||
importedNode.AddChild(new Connection.ConnectionInfo()
|
||||
{
|
||||
Name = Hostname,
|
||||
Name = connName,
|
||||
Hostname = Hostname,
|
||||
Port = Port == 0 ? 22 : Port,
|
||||
Protocol = Protocol,
|
||||
Parent = destinationContainer
|
||||
Parent = destinationContainer,
|
||||
Username = string.IsNullOrEmpty(Username) ? string.Empty : Username
|
||||
});
|
||||
if (Port > 0)
|
||||
{
|
||||
importedNode.Children[i].Port = Port;
|
||||
}
|
||||
if (string.IsNullOrEmpty(Username))
|
||||
{
|
||||
importedNode.Children[i].Username = Username;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ namespace mRemoteNG.UI.Controls
|
||||
private ToolStripMenuItem _cMenTreeImportFromRemoteDesktopManager;
|
||||
private ToolStripMenuItem _cMenTreeImportActiveDirectory;
|
||||
private ToolStripMenuItem _cMenTreeImportPortScan;
|
||||
private ToolStripMenuItem _cMenTreeImportPutty;
|
||||
private ToolStripMenuItem _cMenTreeApplyInheritanceToChildren;
|
||||
private ToolStripMenuItem _cMenTreeApplyDefaultInheritance;
|
||||
private readonly ConnectionTree.ConnectionTree _connectionTree;
|
||||
@@ -104,6 +105,7 @@ namespace mRemoteNG.UI.Controls
|
||||
_cMenTreeImportFromRemoteDesktopManager = new ToolStripMenuItem();
|
||||
_cMenTreeImportActiveDirectory = new ToolStripMenuItem();
|
||||
_cMenTreeImportPortScan = new ToolStripMenuItem();
|
||||
_cMenTreeImportPutty = new ToolStripMenuItem();
|
||||
_cMenInheritanceSubMenu = new ToolStripMenuItem();
|
||||
_cMenTreeApplyInheritanceToChildren = new ToolStripMenuItem();
|
||||
_cMenTreeApplyDefaultInheritance = new ToolStripMenuItem();
|
||||
@@ -303,6 +305,7 @@ namespace mRemoteNG.UI.Controls
|
||||
_cMenTreeImportFile,
|
||||
_cMenTreeImportFromRemoteDesktopManager,
|
||||
_cMenTreeImportActiveDirectory,
|
||||
_cMenTreeImportPutty,
|
||||
_cMenTreeImportPortScan
|
||||
});
|
||||
_cMenTreeImport.Name = "_cMenTreeImport";
|
||||
@@ -336,6 +339,13 @@ namespace mRemoteNG.UI.Controls
|
||||
_cMenTreeImportPortScan.Text = "Import from &Port Scan...";
|
||||
_cMenTreeImportPortScan.Click += OnImportPortScanClicked;
|
||||
//
|
||||
// cMenTreeImportPutty
|
||||
//
|
||||
_cMenTreeImportPutty.Name = "_cMenTreeImportPutty";
|
||||
_cMenTreeImportPutty.Size = new System.Drawing.Size(226, 22);
|
||||
_cMenTreeImportPutty.Text = "Import from &Putty...";
|
||||
_cMenTreeImportPutty.Click += OnImportPuttyClicked;
|
||||
//
|
||||
// cMenTreeExportFile
|
||||
//
|
||||
_cMenTreeExportFile.Name = "_cMenTreeExportFile";
|
||||
@@ -864,6 +874,17 @@ namespace mRemoteNG.UI.Controls
|
||||
Import.ImportFromFile(selectedNodeAsContainer);
|
||||
}
|
||||
|
||||
private void OnImportPuttyClicked(object sender, EventArgs e)
|
||||
{
|
||||
ContainerInfo selectedNodeAsContainer;
|
||||
if (_connectionTree.SelectedNode == null)
|
||||
selectedNodeAsContainer = Runtime.ConnectionsService.ConnectionTreeModel.RootNodes.First();
|
||||
else
|
||||
selectedNodeAsContainer =
|
||||
_connectionTree.SelectedNode as ContainerInfo ?? _connectionTree.SelectedNode.Parent;
|
||||
Import.ImportFromPutty(selectedNodeAsContainer);
|
||||
}
|
||||
|
||||
private void OnImportRemoteDesktopManagerClicked(object sender, EventArgs e)
|
||||
{
|
||||
ContainerInfo selectedNodeAsContainer;
|
||||
|
||||
Reference in New Issue
Block a user