diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs
index 10ae8f12f..3563667ab 100644
--- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs
+++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs
@@ -16,7 +16,6 @@ namespace mRemoteNG.Config.Serializers.Csv
private readonly SaveFilter _saveFilter;
private readonly ICredentialRepositoryList _credentialRepositoryList;
-
public CsvConnectionsSerializerMremotengFormat(SaveFilter saveFilter, ICredentialRepositoryList credentialRepositoryList)
{
saveFilter.ThrowIfNull(nameof(saveFilter));
@@ -79,142 +78,134 @@ namespace mRemoteNG.Config.Serializers.Csv
private void SerializeConnectionInfo(ConnectionInfo con, StringBuilder sb)
{
sb.AppendLine();
- sb.Append(string.Join(";",
- CleanStringForCsv(con.Name),
- CleanStringForCsv(con.ConstantID),
- CleanStringForCsv(con.Parent?.ConstantID ?? ""),
- CleanStringForCsv(con.GetTreeNodeType()),
- CleanStringForCsv(con.Description),
- CleanStringForCsv(con.Icon),
- CleanStringForCsv(con.Panel)))
- .Append(";");
+ sb.Append(FormatForCsv(con.Name))
+ .Append(FormatForCsv(con.ConstantID))
+ .Append(FormatForCsv(con.Parent?.ConstantID ?? ""))
+ .Append(FormatForCsv(con.GetTreeNodeType()))
+ .Append(FormatForCsv(con.Description))
+ .Append(FormatForCsv(con.Icon))
+ .Append(FormatForCsv(con.Panel));
if (_saveFilter.SaveUsername)
- sb.Append($"{CleanStringForCsv(con.Username)};");
+ sb.Append(FormatForCsv(con.Username));
if (_saveFilter.SavePassword)
- sb.Append($"{CleanStringForCsv(con.Password)};");
+ sb.Append(FormatForCsv(con.Password));
if (_saveFilter.SaveDomain)
- sb.Append($"{CleanStringForCsv(con.Domain)};");
+ sb.Append(FormatForCsv(con.Domain));
- sb.Append(string.Join(";",
- CleanStringForCsv(con.Hostname),
- CleanStringForCsv(con.Protocol),
- CleanStringForCsv(con.PuttySession),
- CleanStringForCsv(con.Port),
- CleanStringForCsv(con.UseConsoleSession),
- CleanStringForCsv(con.UseCredSsp),
- CleanStringForCsv(con.RenderingEngine),
- CleanStringForCsv(con.ICAEncryptionStrength),
- CleanStringForCsv(con.RDPAuthenticationLevel),
- CleanStringForCsv(con.LoadBalanceInfo),
- CleanStringForCsv(con.Colors),
- CleanStringForCsv(con.Resolution),
- CleanStringForCsv(con.AutomaticResize),
- CleanStringForCsv(con.DisplayWallpaper),
- CleanStringForCsv(con.DisplayThemes),
- CleanStringForCsv(con.EnableFontSmoothing),
- CleanStringForCsv(con.EnableDesktopComposition),
- CleanStringForCsv(con.CacheBitmaps),
- CleanStringForCsv(con.RedirectDiskDrives),
- CleanStringForCsv(con.RedirectPorts),
- CleanStringForCsv(con.RedirectPrinters),
- CleanStringForCsv(con.RedirectSmartCards),
- CleanStringForCsv(con.RedirectSound),
- CleanStringForCsv(con.RedirectKeys),
- CleanStringForCsv(con.PreExtApp),
- CleanStringForCsv(con.PostExtApp),
- CleanStringForCsv(con.MacAddress),
- CleanStringForCsv(con.UserField),
- CleanStringForCsv(con.ExtApp),
- CleanStringForCsv(con.VNCCompression),
- CleanStringForCsv(con.VNCEncoding),
- CleanStringForCsv(con.VNCAuthMode),
- CleanStringForCsv(con.VNCProxyType),
- CleanStringForCsv(con.VNCProxyIP),
- CleanStringForCsv(con.VNCProxyPort),
- CleanStringForCsv(con.VNCProxyUsername),
- CleanStringForCsv(con.VNCProxyPassword),
- CleanStringForCsv(con.VNCColors),
- CleanStringForCsv(con.VNCSmartSizeMode),
- CleanStringForCsv(con.VNCViewOnly),
- CleanStringForCsv(con.RDGatewayUsageMethod),
- CleanStringForCsv(con.RDGatewayHostname),
- CleanStringForCsv(con.RDGatewayUseConnectionCredentials),
- CleanStringForCsv(con.RDGatewayUsername),
- CleanStringForCsv(con.RDGatewayPassword),
- CleanStringForCsv(con.RDGatewayDomain)))
- .Append(";");
+ sb.Append(FormatForCsv(con.Hostname))
+ .Append(FormatForCsv(con.Protocol))
+ .Append(FormatForCsv(con.PuttySession))
+ .Append(FormatForCsv(con.Port))
+ .Append(FormatForCsv(con.UseConsoleSession))
+ .Append(FormatForCsv(con.UseCredSsp))
+ .Append(FormatForCsv(con.RenderingEngine))
+ .Append(FormatForCsv(con.ICAEncryptionStrength))
+ .Append(FormatForCsv(con.RDPAuthenticationLevel))
+ .Append(FormatForCsv(con.LoadBalanceInfo))
+ .Append(FormatForCsv(con.Colors))
+ .Append(FormatForCsv(con.Resolution))
+ .Append(FormatForCsv(con.AutomaticResize))
+ .Append(FormatForCsv(con.DisplayWallpaper))
+ .Append(FormatForCsv(con.DisplayThemes))
+ .Append(FormatForCsv(con.EnableFontSmoothing))
+ .Append(FormatForCsv(con.EnableDesktopComposition))
+ .Append(FormatForCsv(con.CacheBitmaps))
+ .Append(FormatForCsv(con.RedirectDiskDrives))
+ .Append(FormatForCsv(con.RedirectPorts))
+ .Append(FormatForCsv(con.RedirectPrinters))
+ .Append(FormatForCsv(con.RedirectSmartCards))
+ .Append(FormatForCsv(con.RedirectSound))
+ .Append(FormatForCsv(con.RedirectKeys))
+ .Append(FormatForCsv(con.PreExtApp))
+ .Append(FormatForCsv(con.PostExtApp))
+ .Append(FormatForCsv(con.MacAddress))
+ .Append(FormatForCsv(con.UserField))
+ .Append(FormatForCsv(con.ExtApp))
+ .Append(FormatForCsv(con.VNCCompression))
+ .Append(FormatForCsv(con.VNCEncoding))
+ .Append(FormatForCsv(con.VNCAuthMode))
+ .Append(FormatForCsv(con.VNCProxyType))
+ .Append(FormatForCsv(con.VNCProxyIP))
+ .Append(FormatForCsv(con.VNCProxyPort))
+ .Append(FormatForCsv(con.VNCProxyUsername))
+ .Append(FormatForCsv(con.VNCProxyPassword))
+ .Append(FormatForCsv(con.VNCColors))
+ .Append(FormatForCsv(con.VNCSmartSizeMode))
+ .Append(FormatForCsv(con.VNCViewOnly))
+ .Append(FormatForCsv(con.RDGatewayUsageMethod))
+ .Append(FormatForCsv(con.RDGatewayHostname))
+ .Append(FormatForCsv(con.RDGatewayUseConnectionCredentials))
+ .Append(FormatForCsv(con.RDGatewayUsername))
+ .Append(FormatForCsv(con.RDGatewayPassword))
+ .Append(FormatForCsv(con.RDGatewayDomain));
if (!_saveFilter.SaveInheritance)
return;
- sb.Append(string.Join(";",
- con.Inheritance.CacheBitmaps,
- con.Inheritance.Colors,
- con.Inheritance.Description,
- con.Inheritance.DisplayThemes,
- con.Inheritance.DisplayWallpaper,
- con.Inheritance.EnableFontSmoothing,
- con.Inheritance.EnableDesktopComposition,
- con.Inheritance.Domain,
- con.Inheritance.Icon,
- con.Inheritance.Panel,
- con.Inheritance.Password,
- con.Inheritance.Port,
- con.Inheritance.Protocol,
- con.Inheritance.PuttySession,
- con.Inheritance.RedirectDiskDrives,
- con.Inheritance.RedirectKeys,
- con.Inheritance.RedirectPorts,
- con.Inheritance.RedirectPrinters,
- con.Inheritance.RedirectSmartCards,
- con.Inheritance.RedirectSound,
- con.Inheritance.Resolution,
- con.Inheritance.AutomaticResize,
- con.Inheritance.UseConsoleSession,
- con.Inheritance.UseCredSsp,
- con.Inheritance.RenderingEngine,
- con.Inheritance.Username,
- con.Inheritance.ICAEncryptionStrength,
- con.Inheritance.RDPAuthenticationLevel,
- con.Inheritance.LoadBalanceInfo,
- con.Inheritance.PreExtApp,
- con.Inheritance.PostExtApp,
- con.Inheritance.MacAddress,
- con.Inheritance.UserField,
- con.Inheritance.ExtApp,
- con.Inheritance.VNCCompression,
- con.Inheritance.VNCEncoding,
- con.Inheritance.VNCAuthMode,
- con.Inheritance.VNCProxyType,
- con.Inheritance.VNCProxyIP,
- con.Inheritance.VNCProxyPort,
- con.Inheritance.VNCProxyUsername,
- con.Inheritance.VNCProxyPassword,
- con.Inheritance.VNCColors,
- con.Inheritance.VNCSmartSizeMode,
- con.Inheritance.VNCViewOnly,
- con.Inheritance.RDGatewayUsageMethod,
- con.Inheritance.RDGatewayHostname,
- con.Inheritance.RDGatewayUseConnectionCredentials,
- con.Inheritance.RDGatewayUsername,
- con.Inheritance.RDGatewayPassword,
- con.Inheritance.RDGatewayDomain,
- con.Inheritance.RDPAlertIdleTimeout,
- con.Inheritance.RDPMinutesToIdleTimeout,
- con.Inheritance.SoundQuality));
+ sb.Append(FormatForCsv(con.Inheritance.CacheBitmaps))
+ .Append(FormatForCsv(con.Inheritance.Colors))
+ .Append(FormatForCsv(con.Inheritance.Description))
+ .Append(FormatForCsv(con.Inheritance.DisplayThemes))
+ .Append(FormatForCsv(con.Inheritance.DisplayWallpaper))
+ .Append(FormatForCsv(con.Inheritance.EnableFontSmoothing))
+ .Append(FormatForCsv(con.Inheritance.EnableDesktopComposition))
+ .Append(FormatForCsv(con.Inheritance.Domain))
+ .Append(FormatForCsv(con.Inheritance.Icon))
+ .Append(FormatForCsv(con.Inheritance.Panel))
+ .Append(FormatForCsv(con.Inheritance.Password))
+ .Append(FormatForCsv(con.Inheritance.Port))
+ .Append(FormatForCsv(con.Inheritance.Protocol))
+ .Append(FormatForCsv(con.Inheritance.PuttySession))
+ .Append(FormatForCsv(con.Inheritance.RedirectDiskDrives))
+ .Append(FormatForCsv(con.Inheritance.RedirectKeys))
+ .Append(FormatForCsv(con.Inheritance.RedirectPorts))
+ .Append(FormatForCsv(con.Inheritance.RedirectPrinters))
+ .Append(FormatForCsv(con.Inheritance.RedirectSmartCards))
+ .Append(FormatForCsv(con.Inheritance.RedirectSound))
+ .Append(FormatForCsv(con.Inheritance.Resolution))
+ .Append(FormatForCsv(con.Inheritance.AutomaticResize))
+ .Append(FormatForCsv(con.Inheritance.UseConsoleSession))
+ .Append(FormatForCsv(con.Inheritance.UseCredSsp))
+ .Append(FormatForCsv(con.Inheritance.RenderingEngine))
+ .Append(FormatForCsv(con.Inheritance.Username))
+ .Append(FormatForCsv(con.Inheritance.ICAEncryptionStrength))
+ .Append(FormatForCsv(con.Inheritance.RDPAuthenticationLevel))
+ .Append(FormatForCsv(con.Inheritance.LoadBalanceInfo))
+ .Append(FormatForCsv(con.Inheritance.PreExtApp))
+ .Append(FormatForCsv(con.Inheritance.PostExtApp))
+ .Append(FormatForCsv(con.Inheritance.MacAddress))
+ .Append(FormatForCsv(con.Inheritance.UserField))
+ .Append(FormatForCsv(con.Inheritance.ExtApp))
+ .Append(FormatForCsv(con.Inheritance.VNCCompression))
+ .Append(FormatForCsv(con.Inheritance.VNCEncoding))
+ .Append(FormatForCsv(con.Inheritance.VNCAuthMode))
+ .Append(FormatForCsv(con.Inheritance.VNCProxyType))
+ .Append(FormatForCsv(con.Inheritance.VNCProxyIP))
+ .Append(FormatForCsv(con.Inheritance.VNCProxyPort))
+ .Append(FormatForCsv(con.Inheritance.VNCProxyUsername))
+ .Append(FormatForCsv(con.Inheritance.VNCProxyPassword))
+ .Append(FormatForCsv(con.Inheritance.VNCColors))
+ .Append(FormatForCsv(con.Inheritance.VNCSmartSizeMode))
+ .Append(FormatForCsv(con.Inheritance.VNCViewOnly))
+ .Append(FormatForCsv(con.Inheritance.RDGatewayUsageMethod))
+ .Append(FormatForCsv(con.Inheritance.RDGatewayHostname))
+ .Append(FormatForCsv(con.Inheritance.RDGatewayUseConnectionCredentials))
+ .Append(FormatForCsv(con.Inheritance.RDGatewayUsername))
+ .Append(FormatForCsv(con.Inheritance.RDGatewayPassword))
+ .Append(FormatForCsv(con.Inheritance.RDGatewayDomain))
+ .Append(FormatForCsv(con.Inheritance.RDPAlertIdleTimeout))
+ .Append(FormatForCsv(con.Inheritance.RDPMinutesToIdleTimeout))
+ .Append(FormatForCsv(con.Inheritance.SoundQuality));
}
- ///
- /// Remove text that is unsafe for use in CSV files
- ///
- ///
- private string CleanStringForCsv(object text)
+ private string FormatForCsv(object value)
{
- return text.ToString().Replace(";", "");
+ var cleanedString = value.ToString().Replace(";", "");
+ return cleanedString + ";";
}
}
}
\ No newline at end of file