Update Putty registry import to fix connection name, username, and port setting

This commit is contained in:
RFC1920
2023-10-16 05:32:34 -05:00
parent 96f4307910
commit ba77a7b7c0
3 changed files with 41 additions and 13 deletions

View File

@@ -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

View File

@@ -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++;
}
}
}

View File

@@ -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;