Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mRemoteNG/mRemoteNG.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Rainier <jonathan@rainier.tech>2022-04-23 22:53:25 +0300
committerJonathan Rainier <jonathan@rainier.tech>2022-04-23 22:53:25 +0300
commit413d77ff1a19bc7172063086e89249a3f4eb2e66 (patch)
tree906c0b72f5855587fa74c63e75ba9e4defe1023d
parentd8bb561063b6203eb663f3b5f918d2ac8ae21bdf (diff)
Add Comments and Icon Support / Fix Unsorted
- Add Comments - Add icon support for supported connection types - Fix empty unsorted folder from being added
-rw-r--r--mRemoteNG/Config/Serializers/ConnectionSerializers/Csv/RemoteDesktopManager/CsvConnectionsDeserializerRdmFormat.cs45
1 files changed, 41 insertions, 4 deletions
diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/Csv/RemoteDesktopManager/CsvConnectionsDeserializerRdmFormat.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/Csv/RemoteDesktopManager/CsvConnectionsDeserializerRdmFormat.cs
index de040776..ae2e4fd3 100644
--- a/mRemoteNG/Config/Serializers/ConnectionSerializers/Csv/RemoteDesktopManager/CsvConnectionsDeserializerRdmFormat.cs
+++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/Csv/RemoteDesktopManager/CsvConnectionsDeserializerRdmFormat.cs
@@ -12,6 +12,9 @@ using mRemoteNG.Tree;
namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Csv.RemoteDesktopManager;
+/// <summary>
+/// Import of connections from the Remote Desktop Manager (RDM) in a CSV file format
+/// </summary>
public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string, ConnectionTreeModel>
{
private readonly List<RemoteDesktopManagerConnectionInfo> _connectionTypes;
@@ -21,8 +24,8 @@ public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string,
{
_connectionTypes = new List<RemoteDesktopManagerConnectionInfo>
{
- new(ProtocolType.RDP, "RDP (Microsoft Remote Desktop)", 3389),
- new(ProtocolType.SSH2, "SSH Shell", 22)
+ new(ProtocolType.RDP, "RDP (Microsoft Remote Desktop)", 3389, "Remote Desktop"),
+ new(ProtocolType.SSH2, "SSH Shell", 22, "SSH")
};
_groups = new HashSet<string>();
@@ -32,6 +35,11 @@ public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string,
private List<ContainerInfo> Containers { get; }
+ /// <summary>
+ /// Deserializes the CSV file into a <see cref="ConnectionTreeModel" />
+ /// </summary>
+ /// <param name="serializedData">Data from the CSV file</param>
+ /// <returns></returns>
public ConnectionTreeModel Deserialize(string serializedData)
{
var lines = serializedData.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
@@ -75,11 +83,18 @@ public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string,
container.AddChild(connection);
}
- connectionTreeModel.AddRootNode(unsortedConnections);
+ if (unsortedConnections.HasChildren())
+ connectionTreeModel.AddRootNode(unsortedConnections);
return connectionTreeModel;
}
+ /// <summary>
+ /// Parses a line from the CSV file and returns <see cref="ConnectionInfo" />
+ /// </summary>
+ /// <param name="headers">CSV Headers</param>
+ /// <param name="connectionCsv">CSV Columns</param>
+ /// <returns></returns>
private (ConnectionInfo connectionInfo, string) ParseConnectionInfo(IList<string> headers, IReadOnlyList<string> connectionCsv)
{
if (headers.Count != connectionCsv.Count) return default;
@@ -115,6 +130,7 @@ public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string,
Username = username,
Password = password,
Domain = domain,
+ Icon = connectionType.IconName ?? "mRemoteNG",
Description = description,
Protocol = connectionType.Protocol
};
@@ -124,6 +140,7 @@ public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string,
{
var groupParts = group.Split('\\').ToList();
var parentContainerName = groupParts[0];
+
var parentContainer = Containers.FirstOrDefault(x => x.Name == parentContainerName);
if (parentContainer == default)
{
@@ -139,6 +156,12 @@ public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string,
return string.IsNullOrEmpty(group) ? (connectionInfo, default) : (connectionInfo, group);
}
+ /// <summary>
+ /// Adds a child to a container recursively
+ /// </summary>
+ /// <param name="group">Full path of the RDM Grouping</param>
+ /// <param name="groupParts">Segements of the group path</param>
+ /// <param name="parentContainer">Parent container to add children to</param>
private void AddChildrenRecursive(string group, IList<string> groupParts, ContainerInfo parentContainer)
{
if (_groups.Contains(group)) return;
@@ -178,6 +201,13 @@ public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string,
}
}
+ /// <summary>
+ /// Adds a child to a container and returns the remaining group count
+ /// </summary>
+ /// <param name="parentContainer">Parent container</param>
+ /// <param name="newContainer">New child container</param>
+ /// <param name="groupCount">Remaining group count</param>
+ /// <returns></returns>
private static int AddChild(ContainerInfo parentContainer, ContainerInfo newContainer, int groupCount)
{
parentContainer.AddChild(newContainer);
@@ -186,4 +216,11 @@ public partial class CsvConnectionsDeserializerRdmFormat : IDeserializer<string,
}
}
-internal sealed record RemoteDesktopManagerConnectionInfo(ProtocolType Protocol, string Name, int Port); \ No newline at end of file
+/// <summary>
+/// Record of supported connection types
+/// </summary>
+/// <param name="Protocol">Procotol</param>
+/// <param name="Name">Display Name</param>
+/// <param name="Port">Default Port</param>
+/// <param name="IconName">Icon Name</param>
+internal sealed record RemoteDesktopManagerConnectionInfo(ProtocolType Protocol, string Name, int Port, string IconName); \ No newline at end of file