From 40af584afe74ba0a440475a8cdc93fc863cd40a0 Mon Sep 17 00:00:00 2001 From: Dimitrij Date: Sat, 11 Mar 2023 01:46:11 +0000 Subject: [PATCH] fix for Warning CA1416 --- mRemoteNG/App/Import.cs | 4 +- mRemoteNG/App/Info/ConnectionsFileInfo.cs | 18 +++---- mRemoteNG/App/Info/GeneralAppInfo.cs | 2 + mRemoteNG/App/Info/SettingsFileInfo.cs | 2 + mRemoteNG/App/Info/UpdateChannelInfo.cs | 2 + .../Initialization/ConnectionIconLoader.cs | 2 + .../App/Initialization/CredsAndConsSetup.cs | 2 + .../Initialization/MessageCollectorSetup.cs | 2 + mRemoteNG/App/Logger.cs | 2 + mRemoteNG/App/NativeMethods.cs | 2 + mRemoteNG/App/ProgramRoot.cs | 2 + mRemoteNG/App/Screens.cs | 4 +- mRemoteNG/App/Startup.cs | 2 + mRemoteNG/App/SupportedCultures.cs | 2 + mRemoteNG/App/Update/AppUpdater.cs | 2 + mRemoteNG/App/Windows.cs | 2 + .../Config/Connections/CsvConnectionsSaver.cs | 2 + .../Multiuser/RemoteConnectionsSyncronizer.cs | 2 + .../Connections/SaveConnectionsOnEdit.cs | 2 + .../Connections/SqlConnectionsLoader.cs | 2 + .../Config/Connections/SqlConnectionsSaver.cs | 4 +- .../Connections/XmlConnectionsLoader.cs | 2 + .../Config/Connections/XmlConnectionsSaver.cs | 2 + mRemoteNG/Config/CredentialHarvester.cs | 11 ++-- mRemoteNG/Config/CredentialRecordSaver.cs | 3 +- .../Config/CredentialRepositoryListLoader.cs | 3 +- .../Config/DataProviders/FileBackupCreator.cs | 2 + .../Config/DataProviders/FileDataProvider.cs | 3 ++ .../FileDataProviderWithRollingBackup.cs | 5 +- .../Config/DataProviders/SqlDataProvider.cs | 2 + .../DatabaseConnectorFactory.cs | 2 + .../Config/Import/ActiveDirectoryImporter.cs | 2 + .../Config/Import/MRemoteNGCsvImporter.cs | 2 + .../Config/Import/MRemoteNGXmlImporter.cs | 2 + .../RemoteDesktopConnectionManagerImporter.cs | 2 + .../Import/RemoteDesktopManagerImporter.cs | 52 ++++++++++--------- .../Config/Putty/PuttySessionsManager.cs | 2 + .../MsSql/DataTableDeserializer.cs | 2 + .../MsSql/DataTableSerializer.cs | 2 + .../MsSql/SqlDatabaseMetaDataRetriever.cs | 2 + .../Xml/XmlConnectionNodeSerializer27.cs | 2 + .../Xml/XmlConnectionsDeserializer.cs | 2 + .../Xml/XmlConnectionsSerializer.cs | 2 + .../Xml/XmlRootNodeSerializer.cs | 11 ++-- ...XmlCredentialPasswordDecryptorDecorator.cs | 4 +- ...XmlCredentialPasswordEncryptorDecorator.cs | 8 +-- .../XmlCredentialRecordDeserializer.cs | 3 +- .../XmlCredentialRecordSerializer.cs | 4 +- .../ActiveDirectoryDeserializer.cs | 3 +- .../Versioning/SqlDatabaseVersionVerifier.cs | 2 + .../Versioning/SqlVersion22To23Upgrader.cs | 5 +- .../Versioning/SqlVersion23To24Upgrader.cs | 2 + .../Versioning/SqlVersion24To25Upgrader.cs | 2 + .../Versioning/SqlVersion25To26Upgrader.cs | 2 + .../Versioning/SqlVersion26To27Upgrader.cs | 2 + .../Versioning/SqlVersion27To28Upgrader.cs | 2 + .../Versioning/SqlVersion28To29Upgrader.cs | 2 + .../Serializers/XmlConnectionsDecryptor.cs | 15 ++---- .../Config/Settings/DockPanelLayoutLoader.cs | 2 + .../Config/Settings/DockPanelLayoutSaver.cs | 2 + .../Config/Settings/ExternalAppsLoader.cs | 12 ++--- .../Config/Settings/ExternalAppsSaver.cs | 2 + mRemoteNG/Config/Settings/SettingsLoader.cs | 3 +- mRemoteNG/Config/Settings/SettingsSaver.cs | 2 + mRemoteNG/Connection/ConnectionIcon.cs | 4 +- mRemoteNG/Connection/ConnectionInfo.cs | 9 ++-- mRemoteNG/Connection/ConnectionInitiator.cs | 6 +-- mRemoteNG/Connection/DefaultConnectionInfo.cs | 2 + .../DefaultConnectionInheritance.cs | 2 + mRemoteNG/Connection/InterfaceControl.cs | 3 +- .../Http/Connection.Protocol.HTTPBase.cs | 3 +- .../Connection/Protocol/IntegratedProgram.cs | 2 + .../Connection.Protocol.PowerShell.cs | 5 +- .../Connection/Protocol/ProtocolFactory.cs | 2 + mRemoteNG/Connection/Protocol/ProtocolList.cs | 15 ++---- .../Connection/Protocol/RAW/RawProtocol.cs | 3 ++ .../Connection/Protocol/RDP/RdpErrorCodes.cs | 2 + .../Connection/Protocol/RDP/RdpProtocol7.cs | 2 + .../Connection/Protocol/RDP/RdpProtocol8.cs | 2 + .../Connection/Protocol/RDP/RdpProtocol9.cs | 5 +- .../Protocol/RDP/RdpProtocolFactory.cs | 2 + .../Rlogin/Connection.Protocol.Rlogin.cs | 3 ++ .../Protocol/SSH/Connection.Protocol.SSH2.cs | 3 ++ .../Serial/Connection.Protocol.Serial.cs | 3 ++ .../Telnet/Connection.Protocol.Telnet.cs | 3 ++ mRemoteNG/Connection/PuttySessionInfo.cs | 3 +- mRemoteNG/Connection/WebHelper.cs | 2 + mRemoteNG/Container/ContainerInfo.cs | 22 +++----- .../CredentialDeletionMsgBoxConfirmer.cs | 13 ++--- .../CredentialRecordTypeConverter.cs | 14 ++--- .../Credential/CredentialServiceFacade.cs | 4 +- .../Credential/CredentialServiceFactory.cs | 15 ++---- mRemoteNG/Messages/MessageCollector.cs | 12 ++--- .../WriterDecorators/MessageFocusDecorator.cs | 6 +-- 94 files changed, 252 insertions(+), 183 deletions(-) diff --git a/mRemoteNG/App/Import.cs b/mRemoteNG/App/Import.cs index 02691f149..245653f19 100644 --- a/mRemoteNG/App/Import.cs +++ b/mRemoteNG/App/Import.cs @@ -8,10 +8,12 @@ using mRemoteNG.Connection.Protocol; using mRemoteNG.Container; using mRemoteNG.Tools; using mRemoteNG.Resources.Language; +using System.Runtime.Versioning; namespace mRemoteNG.App { - public static class Import + [SupportedOSPlatform("windows")] + public static class Import { public static void ImportFromFile(ContainerInfo importDestinationContainer) { diff --git a/mRemoteNG/App/Info/ConnectionsFileInfo.cs b/mRemoteNG/App/Info/ConnectionsFileInfo.cs index f3434e035..42a5721da 100644 --- a/mRemoteNG/App/Info/ConnectionsFileInfo.cs +++ b/mRemoteNG/App/Info/ConnectionsFileInfo.cs @@ -1,12 +1,12 @@ using System; -namespace mRemoteNG.App.Info -{ - public static class ConnectionsFileInfo - { - public static readonly string DefaultConnectionsPath = SettingsFileInfo.SettingsPath; - public static readonly string DefaultConnectionsFile = "confCons.xml"; - public static readonly string DefaultConnectionsFileNew = "confConsNew.xml"; - public static readonly Version ConnectionFileVersion = new Version(2, 9); - } +namespace mRemoteNG.App.Info +{ + public static class ConnectionsFileInfo + { + public static readonly string DefaultConnectionsPath = SettingsFileInfo.SettingsPath; + public static readonly string DefaultConnectionsFile = "confCons.xml"; + public static readonly string DefaultConnectionsFileNew = "confConsNew.xml"; + public static readonly Version ConnectionFileVersion = new Version(2, 9); + } } \ No newline at end of file diff --git a/mRemoteNG/App/Info/GeneralAppInfo.cs b/mRemoteNG/App/Info/GeneralAppInfo.cs index c1ef1f169..b40ae9e6b 100644 --- a/mRemoteNG/App/Info/GeneralAppInfo.cs +++ b/mRemoteNG/App/Info/GeneralAppInfo.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Reflection; +using System.Runtime.Versioning; using System.Threading; using System.Windows.Forms; using static System.Environment; @@ -9,6 +10,7 @@ using static System.Environment; namespace mRemoteNG.App.Info { + [SupportedOSPlatform("windows")] public static class GeneralAppInfo { public const string UrlHome = "https://www.mremoteng.org"; diff --git a/mRemoteNG/App/Info/SettingsFileInfo.cs b/mRemoteNG/App/Info/SettingsFileInfo.cs index f06045d38..b0278436b 100644 --- a/mRemoteNG/App/Info/SettingsFileInfo.cs +++ b/mRemoteNG/App/Info/SettingsFileInfo.cs @@ -1,11 +1,13 @@ using System; using System.IO; using System.Reflection; +using System.Runtime.Versioning; using System.Windows.Forms; using mRemoteNG.Connection; namespace mRemoteNG.App.Info { + [SupportedOSPlatform("windows")] public static class SettingsFileInfo { private static readonly string ExePath = Path.GetDirectoryName(Assembly.GetAssembly(typeof(ConnectionInfo))?.Location); diff --git a/mRemoteNG/App/Info/UpdateChannelInfo.cs b/mRemoteNG/App/Info/UpdateChannelInfo.cs index 60b5cfbb7..b1fe138f2 100644 --- a/mRemoteNG/App/Info/UpdateChannelInfo.cs +++ b/mRemoteNG/App/Info/UpdateChannelInfo.cs @@ -1,10 +1,12 @@ using System; +using System.Runtime.Versioning; using mRemoteNG.Properties; // ReSharper disable InconsistentNaming namespace mRemoteNG.App.Info { + [SupportedOSPlatform("windows")] public static class UpdateChannelInfo { public const string STABLE = "Stable"; diff --git a/mRemoteNG/App/Initialization/ConnectionIconLoader.cs b/mRemoteNG/App/Initialization/ConnectionIconLoader.cs index b9267f632..1f27ba17e 100644 --- a/mRemoteNG/App/Initialization/ConnectionIconLoader.cs +++ b/mRemoteNG/App/Initialization/ConnectionIconLoader.cs @@ -1,10 +1,12 @@ using System; using System.IO; +using System.Runtime.Versioning; using mRemoteNG.Connection; namespace mRemoteNG.App.Initialization { + [SupportedOSPlatform("windows")] public class ConnectionIconLoader { private readonly string _path; diff --git a/mRemoteNG/App/Initialization/CredsAndConsSetup.cs b/mRemoteNG/App/Initialization/CredsAndConsSetup.cs index b33ac71f9..b7ed495d4 100644 --- a/mRemoteNG/App/Initialization/CredsAndConsSetup.cs +++ b/mRemoteNG/App/Initialization/CredsAndConsSetup.cs @@ -1,9 +1,11 @@ using System.IO; +using System.Runtime.Versioning; using mRemoteNG.Config.Connections; using mRemoteNG.Properties; namespace mRemoteNG.App.Initialization { + [SupportedOSPlatform("windows")] public class CredsAndConsSetup { public void LoadCredsAndCons() diff --git a/mRemoteNG/App/Initialization/MessageCollectorSetup.cs b/mRemoteNG/App/Initialization/MessageCollectorSetup.cs index 9c51237a3..1b8430f76 100644 --- a/mRemoteNG/App/Initialization/MessageCollectorSetup.cs +++ b/mRemoteNG/App/Initialization/MessageCollectorSetup.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using System.Runtime.Versioning; using mRemoteNG.Messages; using mRemoteNG.Messages.MessageFilteringOptions; using mRemoteNG.Messages.MessageWriters; @@ -7,6 +8,7 @@ using mRemoteNG.Messages.WriterDecorators; namespace mRemoteNG.App.Initialization { + [SupportedOSPlatform("windows")] public class MessageCollectorSetup { public static void SetupMessageCollector(MessageCollector messageCollector, diff --git a/mRemoteNG/App/Logger.cs b/mRemoteNG/App/Logger.cs index 52c31d321..7501cdd41 100644 --- a/mRemoteNG/App/Logger.cs +++ b/mRemoteNG/App/Logger.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Reflection; +using System.Runtime.Versioning; using System.Windows.Forms; using log4net; using log4net.Appender; @@ -11,6 +12,7 @@ using mRemoteNG.Properties; namespace mRemoteNG.App { + [SupportedOSPlatform("windows")] public class Logger { public static readonly Logger Instance = new Logger(); diff --git a/mRemoteNG/App/NativeMethods.cs b/mRemoteNG/App/NativeMethods.cs index 43df4c26f..01e085420 100644 --- a/mRemoteNG/App/NativeMethods.cs +++ b/mRemoteNG/App/NativeMethods.cs @@ -2,6 +2,7 @@ using System.Drawing; using System.Runtime.ConstrainedExecution; using System.Runtime.InteropServices; +using System.Runtime.Versioning; using System.Text; #pragma warning disable 649 @@ -9,6 +10,7 @@ using System.Text; namespace mRemoteNG.App { + [SupportedOSPlatform("windows")] public static class NativeMethods { #region Functions diff --git a/mRemoteNG/App/ProgramRoot.cs b/mRemoteNG/App/ProgramRoot.cs index 5639d2810..d04fddcba 100644 --- a/mRemoteNG/App/ProgramRoot.cs +++ b/mRemoteNG/App/ProgramRoot.cs @@ -1,6 +1,7 @@ using System; using System.Diagnostics; using System.Drawing; +using System.Runtime.Versioning; using System.Threading; using System.Windows; using System.Windows.Forms; @@ -9,6 +10,7 @@ using mRemoteNG.UI.Forms; namespace mRemoteNG.App { + [SupportedOSPlatform("windows")] public static class ProgramRoot { private static Mutex _mutex; diff --git a/mRemoteNG/App/Screens.cs b/mRemoteNG/App/Screens.cs index b561fbdbb..96485717c 100644 --- a/mRemoteNG/App/Screens.cs +++ b/mRemoteNG/App/Screens.cs @@ -1,4 +1,5 @@ -using System.Windows.Forms; +using System.Runtime.Versioning; +using System.Windows.Forms; using mRemoteNG.UI.Forms; using WeifenLuo.WinFormsUI.Docking; @@ -6,6 +7,7 @@ namespace mRemoteNG.App { public static class Screens { + [SupportedOSPlatform("windows")] public static void SendFormToScreen(Screen screen) { var frmMain = FrmMain.Default; diff --git a/mRemoteNG/App/Startup.cs b/mRemoteNG/App/Startup.cs index 9a2f041a0..e130c19c4 100644 --- a/mRemoteNG/App/Startup.cs +++ b/mRemoteNG/App/Startup.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using System.Diagnostics; using System.Globalization; +using System.Runtime.Versioning; using System.Threading.Tasks; using mRemoteNG.App.Info; using mRemoteNG.App.Initialization; @@ -18,6 +19,7 @@ using mRemoteNG.UI.Forms; namespace mRemoteNG.App { + [SupportedOSPlatform("windows")] public class Startup { private AppUpdater _appUpdate; diff --git a/mRemoteNG/App/SupportedCultures.cs b/mRemoteNG/App/SupportedCultures.cs index e4827fccd..177f52b82 100644 --- a/mRemoteNG/App/SupportedCultures.cs +++ b/mRemoteNG/App/SupportedCultures.cs @@ -3,12 +3,14 @@ using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.Runtime.Serialization; +using System.Runtime.Versioning; using mRemoteNG.Properties; // ReSharper disable ArrangeAccessorOwnerBody namespace mRemoteNG.App { + [SupportedOSPlatform("windows")] [Serializable] public sealed class SupportedCultures : Dictionary { diff --git a/mRemoteNG/App/Update/AppUpdater.cs b/mRemoteNG/App/Update/AppUpdater.cs index 855cdc667..c33bb1453 100644 --- a/mRemoteNG/App/Update/AppUpdater.cs +++ b/mRemoteNG/App/Update/AppUpdater.cs @@ -8,6 +8,7 @@ using mRemoteNG.Security.SymmetricEncryption; using System.Security.Cryptography; using System.Threading.Tasks; using mRemoteNG.Properties; +using System.Runtime.Versioning; #if !PORTABLE using mRemoteNG.Tools; @@ -19,6 +20,7 @@ using System.Windows.Forms; namespace mRemoteNG.App.Update { + [SupportedOSPlatform("windows")] public class AppUpdater { private const int _bufferLength = 8192; diff --git a/mRemoteNG/App/Windows.cs b/mRemoteNG/App/Windows.cs index 785c7aaac..283a17f19 100644 --- a/mRemoteNG/App/Windows.cs +++ b/mRemoteNG/App/Windows.cs @@ -1,5 +1,6 @@ #region Usings using System; +using System.Runtime.Versioning; using mRemoteNG.Resources.Language; using mRemoteNG.UI; using mRemoteNG.UI.Forms; @@ -8,6 +9,7 @@ using mRemoteNG.UI.Window; namespace mRemoteNG.App { + [SupportedOSPlatform("windows")] public static class Windows { private static ActiveDirectoryImportWindow _adimportForm; diff --git a/mRemoteNG/Config/Connections/CsvConnectionsSaver.cs b/mRemoteNG/Config/Connections/CsvConnectionsSaver.cs index 94a94f11d..01790264f 100644 --- a/mRemoteNG/Config/Connections/CsvConnectionsSaver.cs +++ b/mRemoteNG/Config/Connections/CsvConnectionsSaver.cs @@ -1,4 +1,5 @@ using System; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.Config.DataProviders; using mRemoteNG.Config.Serializers.ConnectionSerializers.Csv; @@ -7,6 +8,7 @@ using mRemoteNG.Tree; namespace mRemoteNG.Config.Connections { + [SupportedOSPlatform("windows")] public class CsvConnectionsSaver : ISaver { private readonly string _connectionFileName; diff --git a/mRemoteNG/Config/Connections/Multiuser/RemoteConnectionsSyncronizer.cs b/mRemoteNG/Config/Connections/Multiuser/RemoteConnectionsSyncronizer.cs index d9c7c9d6f..a9d25fa7d 100644 --- a/mRemoteNG/Config/Connections/Multiuser/RemoteConnectionsSyncronizer.cs +++ b/mRemoteNG/Config/Connections/Multiuser/RemoteConnectionsSyncronizer.cs @@ -1,11 +1,13 @@ using mRemoteNG.App; using System; +using System.Runtime.Versioning; using System.Timers; // ReSharper disable ArrangeAccessorOwnerBody namespace mRemoteNG.Config.Connections.Multiuser { + [SupportedOSPlatform("windows")] public class RemoteConnectionsSyncronizer : IConnectionsUpdateChecker { private readonly System.Timers.Timer _updateTimer; diff --git a/mRemoteNG/Config/Connections/SaveConnectionsOnEdit.cs b/mRemoteNG/Config/Connections/SaveConnectionsOnEdit.cs index 8badd155c..25af62053 100644 --- a/mRemoteNG/Config/Connections/SaveConnectionsOnEdit.cs +++ b/mRemoteNG/Config/Connections/SaveConnectionsOnEdit.cs @@ -4,9 +4,11 @@ using System.ComponentModel; using mRemoteNG.Connection; using mRemoteNG.UI.Forms; using mRemoteNG.Properties; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Connections { + [SupportedOSPlatform("windows")] public class SaveConnectionsOnEdit { private readonly ConnectionsService _connectionsService; diff --git a/mRemoteNG/Config/Connections/SqlConnectionsLoader.cs b/mRemoteNG/Config/Connections/SqlConnectionsLoader.cs index 29701d7be..536b6ae7a 100644 --- a/mRemoteNG/Config/Connections/SqlConnectionsLoader.cs +++ b/mRemoteNG/Config/Connections/SqlConnectionsLoader.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Versioning; using System.Security; using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Config.DataProviders; @@ -17,6 +18,7 @@ using mRemoteNG.Tree.Root; namespace mRemoteNG.Config.Connections { + [SupportedOSPlatform("windows")] public class SqlConnectionsLoader : IConnectionsLoader { private readonly IDeserializer> diff --git a/mRemoteNG/Config/Connections/SqlConnectionsSaver.cs b/mRemoteNG/Config/Connections/SqlConnectionsSaver.cs index ea8ca5df5..9171ae3de 100644 --- a/mRemoteNG/Config/Connections/SqlConnectionsSaver.cs +++ b/mRemoteNG/Config/Connections/SqlConnectionsSaver.cs @@ -19,10 +19,12 @@ using mRemoteNG.Tree; using mRemoteNG.Tree.Root; using mRemoteNG.Resources.Language; using mRemoteNG.Properties; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Connections { - public class SqlConnectionsSaver : ISaver + [SupportedOSPlatform("windows")] + public class SqlConnectionsSaver : ISaver { private readonly SaveFilter _saveFilter; private readonly ISerializer, string> _localPropertiesSerializer; diff --git a/mRemoteNG/Config/Connections/XmlConnectionsLoader.cs b/mRemoteNG/Config/Connections/XmlConnectionsLoader.cs index b1e3bf5fd..37680c90d 100644 --- a/mRemoteNG/Config/Connections/XmlConnectionsLoader.cs +++ b/mRemoteNG/Config/Connections/XmlConnectionsLoader.cs @@ -5,9 +5,11 @@ using System; using System.IO; using System.Security; using mRemoteNG.Config.Serializers.ConnectionSerializers.Xml; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Connections { + [SupportedOSPlatform("windows")] public class XmlConnectionsLoader : IConnectionsLoader { private readonly string _connectionFilePath; diff --git a/mRemoteNG/Config/Connections/XmlConnectionsSaver.cs b/mRemoteNG/Config/Connections/XmlConnectionsSaver.cs index 6391d6e08..65ecf3160 100644 --- a/mRemoteNG/Config/Connections/XmlConnectionsSaver.cs +++ b/mRemoteNG/Config/Connections/XmlConnectionsSaver.cs @@ -8,9 +8,11 @@ using mRemoteNG.Security.Factories; using mRemoteNG.Tree; using mRemoteNG.Tree.Root; using mRemoteNG.Properties; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Connections { + [SupportedOSPlatform("windows")] public class XmlConnectionsSaver : ISaver { private readonly string _connectionFileName; diff --git a/mRemoteNG/Config/CredentialHarvester.cs b/mRemoteNG/Config/CredentialHarvester.cs index c1e19c429..24d500143 100644 --- a/mRemoteNG/Config/CredentialHarvester.cs +++ b/mRemoteNG/Config/CredentialHarvester.cs @@ -38,9 +38,7 @@ namespace mRemoteNG.Config if (ConnectionToCredentialMap.Values.Contains(newCredential, _credentialComparer)) { - var existingCredential = - ConnectionToCredentialMap.Values.First(record => - _credentialComparer.Equals(newCredential, record)); + var existingCredential = ConnectionToCredentialMap.Values.First(record => _credentialComparer.Equals(newCredential, record)); ConnectionToCredentialMap.Add(connectionId, existingCredential); } else @@ -50,17 +48,14 @@ namespace mRemoteNG.Config return ConnectionToCredentialMap.Values.Distinct(_credentialComparer); } - private ICredentialRecord BuildCredential(XElement element, - ICryptographyProvider cryptographyProvider, - SecureString decryptionKey) + private ICredentialRecord BuildCredential(XElement element, ICryptographyProvider cryptographyProvider, SecureString decryptionKey) { var credential = new CredentialRecord { Title = $"{element.Attribute("Username")?.Value}\\{element.Attribute("Domain")?.Value}", Username = element.Attribute("Username")?.Value, Domain = element.Attribute("Domain")?.Value, - Password = cryptographyProvider.Decrypt(element.Attribute("Password")?.Value, decryptionKey) - .ConvertToSecureString() + Password = cryptographyProvider.Decrypt(element.Attribute("Password")?.Value, decryptionKey).ConvertToSecureString() }; return credential; } diff --git a/mRemoteNG/Config/CredentialRecordSaver.cs b/mRemoteNG/Config/CredentialRecordSaver.cs index 5f7d70ae9..9a9b52d76 100644 --- a/mRemoteNG/Config/CredentialRecordSaver.cs +++ b/mRemoteNG/Config/CredentialRecordSaver.cs @@ -13,8 +13,7 @@ namespace mRemoteNG.Config private readonly IDataProvider _dataProvider; private readonly ISecureSerializer, string> _serializer; - public CredentialRecordSaver(IDataProvider dataProvider, - ISecureSerializer, string> serializer) + public CredentialRecordSaver(IDataProvider dataProvider, ISecureSerializer, string> serializer) { if (dataProvider == null) throw new ArgumentNullException(nameof(dataProvider)); diff --git a/mRemoteNG/Config/CredentialRepositoryListLoader.cs b/mRemoteNG/Config/CredentialRepositoryListLoader.cs index be0bd72f2..cd9088f03 100644 --- a/mRemoteNG/Config/CredentialRepositoryListLoader.cs +++ b/mRemoteNG/Config/CredentialRepositoryListLoader.cs @@ -11,8 +11,7 @@ namespace mRemoteNG.Config private readonly IDataProvider _dataProvider; private readonly CredentialRepositoryListDeserializer _deserializer; - public CredentialRepositoryListLoader(IDataProvider dataProvider, - CredentialRepositoryListDeserializer deserializer) + public CredentialRepositoryListLoader(IDataProvider dataProvider, CredentialRepositoryListDeserializer deserializer) { if (dataProvider == null) throw new ArgumentNullException(nameof(dataProvider)); diff --git a/mRemoteNG/Config/DataProviders/FileBackupCreator.cs b/mRemoteNG/Config/DataProviders/FileBackupCreator.cs index fd531422c..7cdf54f73 100644 --- a/mRemoteNG/Config/DataProviders/FileBackupCreator.cs +++ b/mRemoteNG/Config/DataProviders/FileBackupCreator.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.Messages; using mRemoteNG.Resources.Language; @@ -8,6 +9,7 @@ namespace mRemoteNG.Config.DataProviders { public class FileBackupCreator { + [SupportedOSPlatform("windows")] public void CreateBackupFile(string fileName) { try diff --git a/mRemoteNG/Config/DataProviders/FileDataProvider.cs b/mRemoteNG/Config/DataProviders/FileDataProvider.cs index 093f81054..329f2f4cd 100644 --- a/mRemoteNG/Config/DataProviders/FileDataProvider.cs +++ b/mRemoteNG/Config/DataProviders/FileDataProvider.cs @@ -1,11 +1,14 @@ using System; using System.IO; +using System.Runtime.Versioning; using mRemoteNG.App; namespace mRemoteNG.Config.DataProviders { + [SupportedOSPlatform("windows")] public class FileDataProvider : IDataProvider { + [SupportedOSPlatform("windows")] public string FilePath { get; set; } public FileDataProvider(string filePath) diff --git a/mRemoteNG/Config/DataProviders/FileDataProviderWithRollingBackup.cs b/mRemoteNG/Config/DataProviders/FileDataProviderWithRollingBackup.cs index 74b3a3807..e2f05b793 100644 --- a/mRemoteNG/Config/DataProviders/FileDataProviderWithRollingBackup.cs +++ b/mRemoteNG/Config/DataProviders/FileDataProviderWithRollingBackup.cs @@ -1,5 +1,8 @@ -namespace mRemoteNG.Config.DataProviders +using System.Runtime.Versioning; + +namespace mRemoteNG.Config.DataProviders { + [SupportedOSPlatform("windows")] public class FileDataProviderWithRollingBackup : FileDataProvider { private readonly FileBackupCreator _fileBackupCreator; diff --git a/mRemoteNG/Config/DataProviders/SqlDataProvider.cs b/mRemoteNG/Config/DataProviders/SqlDataProvider.cs index 96f0b43b6..f0a7276f8 100644 --- a/mRemoteNG/Config/DataProviders/SqlDataProvider.cs +++ b/mRemoteNG/Config/DataProviders/SqlDataProvider.cs @@ -5,9 +5,11 @@ using mRemoteNG.App; using mRemoteNG.Properties; using MySql.Data.MySqlClient; using System.Data.SqlClient; +using System.Runtime.Versioning; namespace mRemoteNG.Config.DataProviders { + [SupportedOSPlatform("windows")] public class SqlDataProvider : IDataProvider { public IDatabaseConnector DatabaseConnector { get; } diff --git a/mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs b/mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs index ee20e5590..c80418415 100644 --- a/mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs +++ b/mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs @@ -1,9 +1,11 @@ using mRemoteNG.App; using mRemoteNG.Properties; using mRemoteNG.Security.SymmetricEncryption; +using System.Runtime.Versioning; namespace mRemoteNG.Config.DatabaseConnectors { + [SupportedOSPlatform("windows")] public class DatabaseConnectorFactory { public static IDatabaseConnector DatabaseConnectorFromSettings() diff --git a/mRemoteNG/Config/Import/ActiveDirectoryImporter.cs b/mRemoteNG/Config/Import/ActiveDirectoryImporter.cs index 8d81e6cc9..7cea15ec5 100644 --- a/mRemoteNG/Config/Import/ActiveDirectoryImporter.cs +++ b/mRemoteNG/Config/Import/ActiveDirectoryImporter.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.Config.Serializers.MiscSerializers; using mRemoteNG.Container; @@ -7,6 +8,7 @@ using mRemoteNG.Tools; namespace mRemoteNG.Config.Import { + [SupportedOSPlatform("windows")] public class ActiveDirectoryImporter : IConnectionImporter { public void Import(string ldapPath, ContainerInfo destinationContainer) diff --git a/mRemoteNG/Config/Import/MRemoteNGCsvImporter.cs b/mRemoteNG/Config/Import/MRemoteNGCsvImporter.cs index 0e5a230da..550a0f8d4 100644 --- a/mRemoteNG/Config/Import/MRemoteNGCsvImporter.cs +++ b/mRemoteNG/Config/Import/MRemoteNGCsvImporter.cs @@ -1,5 +1,6 @@ using System.IO; using System.Linq; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.Config.DataProviders; using mRemoteNG.Config.Serializers.ConnectionSerializers.Csv; @@ -8,6 +9,7 @@ using mRemoteNG.Messages; namespace mRemoteNG.Config.Import { + [SupportedOSPlatform("windows")] public class MRemoteNGCsvImporter : IConnectionImporter { public void Import(string filePath, ContainerInfo destinationContainer) diff --git a/mRemoteNG/Config/Import/MRemoteNGXmlImporter.cs b/mRemoteNG/Config/Import/MRemoteNGXmlImporter.cs index 35e78a968..328924b5c 100644 --- a/mRemoteNG/Config/Import/MRemoteNGXmlImporter.cs +++ b/mRemoteNG/Config/Import/MRemoteNGXmlImporter.cs @@ -1,5 +1,6 @@ using System.IO; using System.Linq; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.Config.DataProviders; using mRemoteNG.Config.Serializers.ConnectionSerializers.Xml; @@ -9,6 +10,7 @@ using mRemoteNG.Messages; namespace mRemoteNG.Config.Import { + [SupportedOSPlatform("windows")] // ReSharper disable once InconsistentNaming public class MRemoteNGXmlImporter : IConnectionImporter { diff --git a/mRemoteNG/Config/Import/RemoteDesktopConnectionManagerImporter.cs b/mRemoteNG/Config/Import/RemoteDesktopConnectionManagerImporter.cs index c68fb4ed9..f13b5e7de 100644 --- a/mRemoteNG/Config/Import/RemoteDesktopConnectionManagerImporter.cs +++ b/mRemoteNG/Config/Import/RemoteDesktopConnectionManagerImporter.cs @@ -1,4 +1,5 @@ using System.Linq; +using System.Runtime.Versioning; using mRemoteNG.Config.DataProviders; using mRemoteNG.Config.Serializers.MiscSerializers; using mRemoteNG.Container; @@ -6,6 +7,7 @@ using mRemoteNG.Container; namespace mRemoteNG.Config.Import { + [SupportedOSPlatform("windows")] public class RemoteDesktopConnectionManagerImporter : IConnectionImporter { public void Import(string filePath, ContainerInfo destinationContainer) diff --git a/mRemoteNG/Config/Import/RemoteDesktopManagerImporter.cs b/mRemoteNG/Config/Import/RemoteDesktopManagerImporter.cs index 58a85de5a..1190132c1 100644 --- a/mRemoteNG/Config/Import/RemoteDesktopManagerImporter.cs +++ b/mRemoteNG/Config/Import/RemoteDesktopManagerImporter.cs @@ -1,6 +1,7 @@ #region using System.IO; +using System.Runtime.Versioning; using Castle.Core.Internal; using mRemoteNG.App; using mRemoteNG.Config.DataProviders; @@ -10,38 +11,39 @@ using mRemoteNG.Messages; #endregion -namespace mRemoteNG.Config.Import; - -public class RemoteDesktopManagerImporter : IConnectionImporter +namespace mRemoteNG.Config.Import { - public void Import(string filePath, ContainerInfo destinationContainer) + [SupportedOSPlatform("windows")] + public class RemoteDesktopManagerImporter : IConnectionImporter { - if (string.IsNullOrEmpty(filePath)) + public void Import(string filePath, ContainerInfo destinationContainer) { - Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "Unable to import file. File path is null."); - return; - } + if (string.IsNullOrEmpty(filePath)) + { + Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"Unable to import file. File path is null."); + return; + } - if (!File.Exists(filePath)) - Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, - $"Unable to import file. File does not exist. Path: {filePath}"); + if (!File.Exists(filePath)) + Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"Unable to import file. File does not exist. Path: {filePath}"); - var dataProvider = new FileDataProvider(filePath); - var csvString = dataProvider.Load(); + var dataProvider = new FileDataProvider(filePath); + var csvString = dataProvider.Load(); - if (!string.IsNullOrEmpty(csvString)) - { - var csvDeserializer = new CsvConnectionsDeserializerRdmFormat(); - var connectionTreeModel = csvDeserializer.Deserialize(csvString); + if (!string.IsNullOrEmpty(csvString)) + { + var csvDeserializer = new CsvConnectionsDeserializerRdmFormat(); + var connectionTreeModel = csvDeserializer.Deserialize(csvString); - var rootContainer = new ContainerInfo { Name = Path.GetFileNameWithoutExtension(filePath) }; - rootContainer.AddChildRange(connectionTreeModel.RootNodes); - destinationContainer.AddChild(rootContainer); - } - else - { - Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "Unable to import file. File is empty."); - return; + var rootContainer = new ContainerInfo { Name = Path.GetFileNameWithoutExtension(filePath) }; + rootContainer.AddChildRange(connectionTreeModel.RootNodes); + destinationContainer.AddChild(rootContainer); + } + else + { + Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "Unable to import file. File is empty."); + return; + } } } } \ No newline at end of file diff --git a/mRemoteNG/Config/Putty/PuttySessionsManager.cs b/mRemoteNG/Config/Putty/PuttySessionsManager.cs index e937e4124..32154881b 100644 --- a/mRemoteNG/Config/Putty/PuttySessionsManager.cs +++ b/mRemoteNG/Config/Putty/PuttySessionsManager.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; +using System.Runtime.Versioning; using mRemoteNG.Tools; using mRemoteNG.Tree.Root; @@ -8,6 +9,7 @@ using mRemoteNG.Tree.Root; namespace mRemoteNG.Config.Putty { + [SupportedOSPlatform("windows")] public class PuttySessionsManager { public static PuttySessionsManager Instance { get; } = new PuttySessionsManager(); diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs index 1a6780915..b40c210a8 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data; using System.Linq; +using System.Runtime.Versioning; using System.Security; using mRemoteNG.App; using mRemoteNG.Connection; @@ -17,6 +18,7 @@ using mRemoteNG.Tree.Root; namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql { + [SupportedOSPlatform("windows")] public class DataTableDeserializer : IDeserializer { private readonly ICryptographyProvider _cryptographyProvider; diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs index 27b2f59fe..82c0b0193 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data; using System.Linq; +using System.Runtime.Versioning; using System.Security; using mRemoteNG.Connection; using mRemoteNG.Container; @@ -12,6 +13,7 @@ using mRemoteNG.Tree.Root; namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql { + [SupportedOSPlatform("windows")] public class DataTableSerializer : ISerializer { public readonly int DELETE = 0; diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs index c62179eef..fb3f904bf 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs @@ -1,6 +1,7 @@ using System; using System.Data.Common; using System.Globalization; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.App.Info; using mRemoteNG.Config.DatabaseConnectors; @@ -12,6 +13,7 @@ using mRemoteNG.Tree.Root; namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql { + [SupportedOSPlatform("windows")] public class SqlDatabaseMetaDataRetriever { public SqlConnectionListMetaData GetDatabaseMetaData(IDatabaseConnector databaseConnector) diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs index 53b2a2c9d..d052ea1ca 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs @@ -1,4 +1,5 @@ using System; +using System.Runtime.Versioning; using System.Security; using System.Xml.Linq; using mRemoteNG.App; @@ -9,6 +10,7 @@ using mRemoteNG.Security; namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml { // ReSharper disable once InconsistentNaming + [SupportedOSPlatform("windows")] public class XmlConnectionNodeSerializer27 : ISerializer { private readonly ICryptographyProvider _cryptographyProvider; diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs index c3d746a9c..717364fca 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs @@ -18,9 +18,11 @@ using mRemoteNG.Tree.Root; using mRemoteNG.UI.Forms; using mRemoteNG.UI.TaskDialog; using mRemoteNG.Resources.Language; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml { + [SupportedOSPlatform("windows")] public class XmlConnectionsDeserializer : IDeserializer { private XmlDocument _xmlDocument; diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsSerializer.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsSerializer.cs index ca3fb421f..94bdd1c18 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsSerializer.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsSerializer.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Linq; +using System.Runtime.Versioning; using System.Text; using System.Xml; using System.Xml.Linq; @@ -12,6 +13,7 @@ using mRemoteNG.Tree.Root; namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml { + [SupportedOSPlatform("windows")] public class XmlConnectionsSerializer : ISerializer, ISerializer { diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlRootNodeSerializer.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlRootNodeSerializer.cs index bc56f4259..ac6344afd 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlRootNodeSerializer.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlRootNodeSerializer.cs @@ -7,10 +7,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml { public class XmlRootNodeSerializer { - public XElement SerializeRootNodeInfo(RootNodeInfo rootNodeInfo, - ICryptographyProvider cryptographyProvider, - Version version, - bool fullFileEncryption = false) + public XElement SerializeRootNodeInfo(RootNodeInfo rootNodeInfo, ICryptographyProvider cryptographyProvider, Version version, bool fullFileEncryption = false) { XNamespace xmlNamespace = "http://mremoteng.org"; var element = new XElement(xmlNamespace + "Connections"); @@ -20,15 +17,13 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml element.Add(new XAttribute(XName.Get("EncryptionEngine"), cryptographyProvider.CipherEngine)); element.Add(new XAttribute(XName.Get("BlockCipherMode"), cryptographyProvider.CipherMode)); element.Add(new XAttribute(XName.Get("KdfIterations"), cryptographyProvider.KeyDerivationIterations)); - element.Add(new XAttribute(XName.Get("FullFileEncryption"), - fullFileEncryption.ToString().ToLowerInvariant())); + element.Add(new XAttribute(XName.Get("FullFileEncryption"), fullFileEncryption.ToString().ToLowerInvariant())); element.Add(CreateProtectedAttribute(rootNodeInfo, cryptographyProvider)); element.Add(new XAttribute(XName.Get("ConfVersion"), version.ToString(2))); return element; } - private XAttribute CreateProtectedAttribute(RootNodeInfo rootNodeInfo, - ICryptographyProvider cryptographyProvider) + private XAttribute CreateProtectedAttribute(RootNodeInfo rootNodeInfo, ICryptographyProvider cryptographyProvider) { var attribute = new XAttribute(XName.Get("Protected"), ""); var plainText = rootNodeInfo.Password ? "ThisIsProtected" : "ThisIsNotProtected"; diff --git a/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialPasswordDecryptorDecorator.cs b/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialPasswordDecryptorDecorator.cs index a89ea7556..b09db367e 100644 --- a/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialPasswordDecryptorDecorator.cs +++ b/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialPasswordDecryptorDecorator.cs @@ -44,9 +44,7 @@ namespace mRemoteNG.Config.Serializers.CredentialSerializer return xdoc.ToString(); } - private void DecryptAuthHeader(XElement rootElement, - ICryptographyProvider cryptographyProvider, - SecureString key) + private void DecryptAuthHeader(XElement rootElement, ICryptographyProvider cryptographyProvider, SecureString key) { var authAttribute = rootElement.Attribute("Auth"); if (authAttribute == null) diff --git a/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialPasswordEncryptorDecorator.cs b/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialPasswordEncryptorDecorator.cs index 6b3db03ce..1719e94d3 100644 --- a/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialPasswordEncryptorDecorator.cs +++ b/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialPasswordEncryptorDecorator.cs @@ -12,9 +12,7 @@ namespace mRemoteNG.Config.Serializers.CredentialSerializer private readonly ISerializer, string> _baseSerializer; private readonly ICryptographyProvider _cryptographyProvider; - public XmlCredentialPasswordEncryptorDecorator(ICryptographyProvider cryptographyProvider, - ISerializer, string> - baseSerializer) + public XmlCredentialPasswordEncryptorDecorator(ICryptographyProvider cryptographyProvider, ISerializer, string> baseSerializer) { if (baseSerializer == null) throw new ArgumentNullException(nameof(baseSerializer)); @@ -56,9 +54,7 @@ namespace mRemoteNG.Config.Serializers.CredentialSerializer xdoc.Root?.SetAttributeValue("EncryptionEngine", _cryptographyProvider.CipherEngine); xdoc.Root?.SetAttributeValue("BlockCipherMode", _cryptographyProvider.CipherMode); xdoc.Root?.SetAttributeValue("KdfIterations", _cryptographyProvider.KeyDerivationIterations); - xdoc.Root?.SetAttributeValue("Auth", - _cryptographyProvider.Encrypt(RandomGenerator.RandomString(20), - encryptionKey)); + xdoc.Root?.SetAttributeValue("Auth", _cryptographyProvider.Encrypt(RandomGenerator.RandomString(20), encryptionKey)); } } } \ No newline at end of file diff --git a/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialRecordDeserializer.cs b/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialRecordDeserializer.cs index 3f071a9db..a2a45ce15 100644 --- a/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialRecordDeserializer.cs +++ b/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialRecordDeserializer.cs @@ -34,8 +34,7 @@ namespace mRemoteNG.Config.Serializers.CredentialSerializer { var docSchemaVersion = rootElement?.Attribute("SchemaVersion")?.Value; if (docSchemaVersion != SchemaVersion) - throw new Exception( - $"The schema version of this document is not supported by this class. Document Version: {docSchemaVersion} Supported Version: {SchemaVersion}"); + throw new Exception($"The schema version of this document is not supported by this class. Document Version: {docSchemaVersion} Supported Version: {SchemaVersion}"); } } } \ No newline at end of file diff --git a/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialRecordSerializer.cs b/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialRecordSerializer.cs index eb421b273..77319073f 100644 --- a/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialRecordSerializer.cs +++ b/mRemoteNG/Config/Serializers/CredentialSerializer/XmlCredentialRecordSerializer.cs @@ -22,9 +22,7 @@ namespace mRemoteNG.Config.Serializers.CredentialSerializer new XAttribute("Title", r.Title), new XAttribute("Username", r.Username), new XAttribute("Domain", r.Domain), - new XAttribute("Password", - r.Password - .ConvertToUnsecureString()) + new XAttribute("Password", r.Password.ConvertToUnsecureString()) ) ) ) diff --git a/mRemoteNG/Config/Serializers/MiscSerializers/ActiveDirectoryDeserializer.cs b/mRemoteNG/Config/Serializers/MiscSerializers/ActiveDirectoryDeserializer.cs index 4b567d875..345a46103 100644 --- a/mRemoteNG/Config/Serializers/MiscSerializers/ActiveDirectoryDeserializer.cs +++ b/mRemoteNG/Config/Serializers/MiscSerializers/ActiveDirectoryDeserializer.cs @@ -82,8 +82,7 @@ namespace mRemoteNG.Config.Serializers.MiscSerializers } catch (Exception ex) { - Runtime.MessageCollector.AddExceptionMessage("Config.Import.ActiveDirectory.ImportComputers() failed.", - ex); + Runtime.MessageCollector.AddExceptionMessage("Config.Import.ActiveDirectory.ImportComputers() failed.", ex); } } diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs b/mRemoteNG/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs index a4587a930..e16a6a4b0 100644 --- a/mRemoteNG/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs +++ b/mRemoteNG/Config/Serializers/Versioning/SqlDatabaseVersionVerifier.cs @@ -4,9 +4,11 @@ using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Messages; using mRemoteNG.Resources.Language; using System; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.Versioning { + [SupportedOSPlatform("windows")] public class SqlDatabaseVersionVerifier { protected readonly Version currentSupportedVersion = new Version(2, 9); diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion22To23Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion22To23Upgrader.cs index 6a5daa3f8..fd3635e4c 100644 --- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion22To23Upgrader.cs +++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion22To23Upgrader.cs @@ -2,9 +2,11 @@ using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Messages; using System; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.Versioning { + [SupportedOSPlatform("windows")] public class SqlVersion22To23Upgrader : IVersionUpgrader { private readonly IDatabaseConnector _databaseConnector; @@ -24,8 +26,7 @@ namespace mRemoteNG.Config.Serializers.Versioning public Version Upgrade() { - Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, - "Upgrading database from version 2.2 to version 2.3."); + Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Upgrading database from version 2.2 to version 2.3."); const string sqlText = @" ALTER TABLE tblCons ADD EnableFontSmoothing bit NOT NULL DEFAULT 0, diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion23To24Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion23To24Upgrader.cs index 85e8a0990..a832ef8ca 100644 --- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion23To24Upgrader.cs +++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion23To24Upgrader.cs @@ -2,9 +2,11 @@ using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Messages; using System; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.Versioning { + [SupportedOSPlatform("windows")] public class SqlVersion23To24Upgrader : IVersionUpgrader { private readonly IDatabaseConnector _databaseConnector; diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion24To25Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion24To25Upgrader.cs index ecb2fd18a..12097f870 100644 --- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion24To25Upgrader.cs +++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion24To25Upgrader.cs @@ -2,9 +2,11 @@ using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Messages; using System; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.Versioning { + [SupportedOSPlatform("windows")] public class SqlVersion24To25Upgrader : IVersionUpgrader { private readonly IDatabaseConnector _databaseConnector; diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion25To26Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion25To26Upgrader.cs index 56da5a58c..8b923465a 100644 --- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion25To26Upgrader.cs +++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion25To26Upgrader.cs @@ -2,9 +2,11 @@ using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Messages; using System; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.Versioning { + [SupportedOSPlatform("windows")] public class SqlVersion25To26Upgrader : IVersionUpgrader { private readonly IDatabaseConnector _databaseConnector; diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion26To27Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion26To27Upgrader.cs index ced9e8bdb..34e6a5e0d 100644 --- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion26To27Upgrader.cs +++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion26To27Upgrader.cs @@ -3,9 +3,11 @@ using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Messages; using System; using System.Data.SqlClient; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.Versioning { + [SupportedOSPlatform("windows")] public class SqlVersion26To27Upgrader : IVersionUpgrader { private readonly IDatabaseConnector _databaseConnector; diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion27To28Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion27To28Upgrader.cs index 97d276074..1b5918e98 100644 --- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion27To28Upgrader.cs +++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion27To28Upgrader.cs @@ -4,9 +4,11 @@ using mRemoteNG.Messages; using System; using System.Data.Common; using System.Data.SqlClient; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.Versioning { + [SupportedOSPlatform("windows")] public class SqlVersion27To28Upgrader : IVersionUpgrader { private readonly IDatabaseConnector _databaseConnector; diff --git a/mRemoteNG/Config/Serializers/Versioning/SqlVersion28To29Upgrader.cs b/mRemoteNG/Config/Serializers/Versioning/SqlVersion28To29Upgrader.cs index 2f85ae35a..d0ac43d9a 100644 --- a/mRemoteNG/Config/Serializers/Versioning/SqlVersion28To29Upgrader.cs +++ b/mRemoteNG/Config/Serializers/Versioning/SqlVersion28To29Upgrader.cs @@ -3,9 +3,11 @@ using mRemoteNG.Config.DatabaseConnectors; using mRemoteNG.Messages; using System; using System.Data.Common; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Serializers.Versioning { + [SupportedOSPlatform("windows")] public class SqlVersion28To29Upgrader : IVersionUpgrader { private readonly Version version = new Version(2, 9); diff --git a/mRemoteNG/Config/Serializers/XmlConnectionsDecryptor.cs b/mRemoteNG/Config/Serializers/XmlConnectionsDecryptor.cs index 80332729d..a5db75690 100644 --- a/mRemoteNG/Config/Serializers/XmlConnectionsDecryptor.cs +++ b/mRemoteNG/Config/Serializers/XmlConnectionsDecryptor.cs @@ -29,9 +29,7 @@ namespace mRemoteNG.Config.Serializers _rootNodeInfo = rootNodeInfo; } - public XmlConnectionsDecryptor(BlockCipherEngines blockCipherEngine, - BlockCipherModes blockCipherMode, - RootNodeInfo rootNodeInfo) + public XmlConnectionsDecryptor(BlockCipherEngines blockCipherEngine, BlockCipherModes blockCipherMode, RootNodeInfo rootNodeInfo) { _cryptographyProvider = new CryptoProviderFactory(blockCipherEngine, blockCipherMode).Build(); _rootNodeInfo = rootNodeInfo; @@ -54,8 +52,7 @@ namespace mRemoteNG.Config.Serializers try { - decryptedContent = - _cryptographyProvider.Decrypt(xml, _rootNodeInfo.PasswordString.ConvertToSecureString()); + decryptedContent = _cryptographyProvider.Decrypt(xml, _rootNodeInfo.PasswordString.ConvertToSecureString()); notDecr = decryptedContent == xml; } catch (Exception) @@ -88,17 +85,13 @@ namespace mRemoteNG.Config.Serializers var connectionsFileIsNotEncrypted = false; try { - connectionsFileIsNotEncrypted = - _cryptographyProvider.Decrypt(protectedString, - _rootNodeInfo.PasswordString.ConvertToSecureString()) == - "ThisIsNotProtected"; + connectionsFileIsNotEncrypted = _cryptographyProvider.Decrypt(protectedString, _rootNodeInfo.PasswordString.ConvertToSecureString()) == "ThisIsNotProtected"; } catch (EncryptionException) { } - return connectionsFileIsNotEncrypted || - Authenticate(protectedString, _rootNodeInfo.PasswordString.ConvertToSecureString()); + return connectionsFileIsNotEncrypted || Authenticate(protectedString, _rootNodeInfo.PasswordString.ConvertToSecureString()); } private bool Authenticate(string cipherText, SecureString password) diff --git a/mRemoteNG/Config/Settings/DockPanelLayoutLoader.cs b/mRemoteNG/Config/Settings/DockPanelLayoutLoader.cs index 511161106..9318244c8 100644 --- a/mRemoteNG/Config/Settings/DockPanelLayoutLoader.cs +++ b/mRemoteNG/Config/Settings/DockPanelLayoutLoader.cs @@ -6,9 +6,11 @@ using System; using System.IO; using mRemoteNG.Messages; using WeifenLuo.WinFormsUI.Docking; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Settings { + [SupportedOSPlatform("windows")] public class DockPanelLayoutLoader { private readonly FrmMain _mainForm; diff --git a/mRemoteNG/Config/Settings/DockPanelLayoutSaver.cs b/mRemoteNG/Config/Settings/DockPanelLayoutSaver.cs index f5e2aae01..e2f949c85 100644 --- a/mRemoteNG/Config/Settings/DockPanelLayoutSaver.cs +++ b/mRemoteNG/Config/Settings/DockPanelLayoutSaver.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.App.Info; using mRemoteNG.Config.DataProviders; @@ -9,6 +10,7 @@ using WeifenLuo.WinFormsUI.Docking; namespace mRemoteNG.Config.Settings { + [SupportedOSPlatform("windows")] public class DockPanelLayoutSaver { private readonly ISerializer _dockPanelSerializer; diff --git a/mRemoteNG/Config/Settings/ExternalAppsLoader.cs b/mRemoteNG/Config/Settings/ExternalAppsLoader.cs index 3bb1a1839..c403cfed7 100644 --- a/mRemoteNG/Config/Settings/ExternalAppsLoader.cs +++ b/mRemoteNG/Config/Settings/ExternalAppsLoader.cs @@ -7,18 +7,18 @@ using System.Xml; using mRemoteNG.Messages; using mRemoteNG.Tools; using mRemoteNG.UI.Controls; +using System.Runtime.Versioning; namespace mRemoteNG.Config.Settings { + [SupportedOSPlatform("windows")] public class ExternalAppsLoader { private readonly FrmMain _mainForm; private readonly MessageCollector _messageCollector; private readonly ExternalToolsToolStrip _externalToolsToolStrip; - public ExternalAppsLoader(FrmMain mainForm, - MessageCollector messageCollector, - ExternalToolsToolStrip externalToolsToolStrip) + public ExternalAppsLoader(FrmMain mainForm, MessageCollector messageCollector, ExternalToolsToolStrip externalToolsToolStrip) { if (mainForm == null) throw new ArgumentNullException(nameof(mainForm)); @@ -57,15 +57,13 @@ namespace mRemoteNG.Config.Settings #endif else { - _messageCollector.AddMessage(MessageClass.WarningMsg, - "Loading External Apps failed: Could not FIND file!"); + _messageCollector.AddMessage(MessageClass.WarningMsg, "Loading External Apps failed: Could not FIND file!"); return; } if (xDom.DocumentElement == null) { - _messageCollector.AddMessage(MessageClass.WarningMsg, - "Loading External Apps failed: Could not LOAD file!"); + _messageCollector.AddMessage(MessageClass.WarningMsg, "Loading External Apps failed: Could not LOAD file!"); return; } diff --git a/mRemoteNG/Config/Settings/ExternalAppsSaver.cs b/mRemoteNG/Config/Settings/ExternalAppsSaver.cs index 000cc4c2a..5acc00df3 100644 --- a/mRemoteNG/Config/Settings/ExternalAppsSaver.cs +++ b/mRemoteNG/Config/Settings/ExternalAppsSaver.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Runtime.Versioning; using System.Text; using System.Xml; using mRemoteNG.App; @@ -9,6 +10,7 @@ using mRemoteNG.Tools; namespace mRemoteNG.Config.Settings { + [SupportedOSPlatform("windows")] public class ExternalAppsSaver { public void Save(IEnumerable externalTools) diff --git a/mRemoteNG/Config/Settings/SettingsLoader.cs b/mRemoteNG/Config/Settings/SettingsLoader.cs index 0b916e5fd..4b91010cb 100644 --- a/mRemoteNG/Config/Settings/SettingsLoader.cs +++ b/mRemoteNG/Config/Settings/SettingsLoader.cs @@ -11,10 +11,11 @@ using mRemoteNG.Messages; using mRemoteNG.Tools; using mRemoteNG.UI.Controls; using mRemoteNG.UI.Forms; - +using System.Runtime.Versioning; namespace mRemoteNG.Config.Settings { + [SupportedOSPlatform("windows")] public class SettingsLoader { private readonly ExternalAppsLoader _externalAppsLoader; diff --git a/mRemoteNG/Config/Settings/SettingsSaver.cs b/mRemoteNG/Config/Settings/SettingsSaver.cs index da967c54b..b4ce61735 100644 --- a/mRemoteNG/Config/Settings/SettingsSaver.cs +++ b/mRemoteNG/Config/Settings/SettingsSaver.cs @@ -1,4 +1,5 @@ using System; +using System.Runtime.Versioning; using System.Windows.Forms; using mRemoteNG.App; using mRemoteNG.App.Info; @@ -9,6 +10,7 @@ using mRemoteNG.UI.Forms; namespace mRemoteNG.Config.Settings { + [SupportedOSPlatform("windows")] public static class SettingsSaver { public static void SaveSettings(Control quickConnectToolStrip, ExternalToolsToolStrip externalToolsToolStrip, MultiSshToolStrip multiSshToolStrip, FrmMain frmMain) diff --git a/mRemoteNG/Connection/ConnectionIcon.cs b/mRemoteNG/Connection/ConnectionIcon.cs index 7d28d16f1..bbaa0d487 100644 --- a/mRemoteNG/Connection/ConnectionIcon.cs +++ b/mRemoteNG/Connection/ConnectionIcon.cs @@ -41,9 +41,7 @@ namespace mRemoteNG.Connection } catch (Exception ex) { - Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, - $"Couldn\'t get Icon from String" + Environment.NewLine + - ex.Message); + Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, $"Couldn\'t get Icon from String" + Environment.NewLine + ex.Message); } return null; diff --git a/mRemoteNG/Connection/ConnectionInfo.cs b/mRemoteNG/Connection/ConnectionInfo.cs index 0a417182e..8d09d4873 100644 --- a/mRemoteNG/Connection/ConnectionInfo.cs +++ b/mRemoteNG/Connection/ConnectionInfo.cs @@ -18,9 +18,11 @@ using mRemoteNG.Properties; using mRemoteNG.Tree; using mRemoteNG.Resources.Language; using mRemoteNG.Tree.Root; +using System.Runtime.Versioning; namespace mRemoteNG.Connection { + [SupportedOSPlatform("windows")] [DefaultProperty("Name")] public class ConnectionInfo : AbstractConnectionRecord, IHasParent, IInheritable { @@ -215,8 +217,7 @@ namespace mRemoteNG.Connection { var inheritType = Inheritance.GetType(); var inheritPropertyInfo = inheritType.GetProperty(propertyName); - var inheritPropertyValue = inheritPropertyInfo != null && - Convert.ToBoolean(inheritPropertyInfo.GetValue(Inheritance, null)); + var inheritPropertyValue = inheritPropertyInfo != null && Convert.ToBoolean(inheritPropertyInfo.GetValue(Inheritance, null)); return inheritPropertyValue; } @@ -236,9 +237,7 @@ namespace mRemoteNG.Connection } catch (Exception e) { - Runtime.MessageCollector.AddExceptionStackTrace( - $"Error retrieving inherited property '{propertyName}'", e - ); + Runtime.MessageCollector.AddExceptionStackTrace($"Error retrieving inherited property '{propertyName}'", e); inheritedValue = default(TPropertyType); return false; } diff --git a/mRemoteNG/Connection/ConnectionInitiator.cs b/mRemoteNG/Connection/ConnectionInitiator.cs index d5673791c..4ea7e3b23 100644 --- a/mRemoteNG/Connection/ConnectionInitiator.cs +++ b/mRemoteNG/Connection/ConnectionInitiator.cs @@ -78,8 +78,7 @@ namespace mRemoteNG.Connection if (connectionInfo.Hostname == "" && connectionInfo.Protocol != ProtocolType.IntApp) { - Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, - Language.ConnectionOpenFailedNoHostname); + Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, Language.ConnectionOpenFailedNoHostname); return; } @@ -108,8 +107,7 @@ namespace mRemoteNG.Connection connectionInfoSshTunnel = getSSHConnectionInfoByName(Runtime.ConnectionsService.ConnectionTreeModel.RootNodes, connectionInfoOriginal.SSHTunnelConnectionName); if (connectionInfoSshTunnel == null) { - Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, - string.Format(Language.SshTunnelConfigProblem, connectionInfoOriginal.Name, connectionInfoOriginal.SSHTunnelConnectionName)); + Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, string.Format(Language.SshTunnelConfigProblem, connectionInfoOriginal.Name, connectionInfoOriginal.SSHTunnelConnectionName)); return; } Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg, diff --git a/mRemoteNG/Connection/DefaultConnectionInfo.cs b/mRemoteNG/Connection/DefaultConnectionInfo.cs index af97783f0..21b596d89 100644 --- a/mRemoteNG/Connection/DefaultConnectionInfo.cs +++ b/mRemoteNG/Connection/DefaultConnectionInfo.cs @@ -1,11 +1,13 @@ using System; using System.ComponentModel; using System.Configuration; +using System.Runtime.Versioning; using mRemoteNG.App; namespace mRemoteNG.Connection { + [SupportedOSPlatform("windows")] public class DefaultConnectionInfo : ConnectionInfo { [Browsable(false)] diff --git a/mRemoteNG/Connection/DefaultConnectionInheritance.cs b/mRemoteNG/Connection/DefaultConnectionInheritance.cs index 00e019c7b..acd08f591 100644 --- a/mRemoteNG/Connection/DefaultConnectionInheritance.cs +++ b/mRemoteNG/Connection/DefaultConnectionInheritance.cs @@ -1,10 +1,12 @@ using System; using System.ComponentModel; +using System.Runtime.Versioning; using mRemoteNG.App; namespace mRemoteNG.Connection { + [SupportedOSPlatform("windows")] public class DefaultConnectionInheritance : ConnectionInfoInheritance { [Browsable(false)] diff --git a/mRemoteNG/Connection/InterfaceControl.cs b/mRemoteNG/Connection/InterfaceControl.cs index 9b610e4a4..cc10f2a68 100644 --- a/mRemoteNG/Connection/InterfaceControl.cs +++ b/mRemoteNG/Connection/InterfaceControl.cs @@ -5,10 +5,11 @@ using System.Drawing; using System.Windows.Forms; using mRemoteNG.UI.Tabs; using WeifenLuo.WinFormsUI.Docking; - +using System.Runtime.Versioning; namespace mRemoteNG.Connection { + [SupportedOSPlatform("windows")] public sealed partial class InterfaceControl { public ProtocolBase Protocol { get; set; } diff --git a/mRemoteNG/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs b/mRemoteNG/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs index 00df0dbed..103c94e6c 100644 --- a/mRemoteNG/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs +++ b/mRemoteNG/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs @@ -5,10 +5,11 @@ using mRemoteNG.Tools; using mRemoteNG.App; using mRemoteNG.UI.Tabs; using mRemoteNG.Resources.Language; - +using System.Runtime.Versioning; namespace mRemoteNG.Connection.Protocol.Http { + [SupportedOSPlatform("windows")] public class HTTPBase : ProtocolBase { #region Private Properties diff --git a/mRemoteNG/Connection/Protocol/IntegratedProgram.cs b/mRemoteNG/Connection/Protocol/IntegratedProgram.cs index ebe7f89de..816ab72c9 100644 --- a/mRemoteNG/Connection/Protocol/IntegratedProgram.cs +++ b/mRemoteNG/Connection/Protocol/IntegratedProgram.cs @@ -8,9 +8,11 @@ using mRemoteNG.Messages; using mRemoteNG.Properties; using mRemoteNG.Tools; using mRemoteNG.Resources.Language; +using System.Runtime.Versioning; namespace mRemoteNG.Connection.Protocol { + [SupportedOSPlatform("windows")] public class IntegratedProgram : ProtocolBase { #region Private Fields diff --git a/mRemoteNG/Connection/Protocol/PowerShell/Connection.Protocol.PowerShell.cs b/mRemoteNG/Connection/Protocol/PowerShell/Connection.Protocol.PowerShell.cs index 4197ad835..51d7dd137 100644 --- a/mRemoteNG/Connection/Protocol/PowerShell/Connection.Protocol.PowerShell.cs +++ b/mRemoteNG/Connection/Protocol/PowerShell/Connection.Protocol.PowerShell.cs @@ -1,5 +1,6 @@ using System; using System.Drawing; +using System.Runtime.Versioning; using System.Windows.Forms; using mRemoteNG.App; using mRemoteNG.Messages; @@ -7,6 +8,7 @@ using mRemoteNG.Resources.Language; namespace mRemoteNG.Connection.Protocol.PowerShell { + [SupportedOSPlatform("windows")] public class ProtocolPowerShell : ProtocolBase { #region Private Fields @@ -28,8 +30,7 @@ namespace mRemoteNG.Connection.Protocol.PowerShell { try { - Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, - "Attempting to start remote PowerShell session.", true); + Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, "Attempting to start remote PowerShell session.", true); _consoleControl = new ConsoleControl.ConsoleControl { diff --git a/mRemoteNG/Connection/Protocol/ProtocolFactory.cs b/mRemoteNG/Connection/Protocol/ProtocolFactory.cs index 5d3aa624b..a103d5cd4 100644 --- a/mRemoteNG/Connection/Protocol/ProtocolFactory.cs +++ b/mRemoteNG/Connection/Protocol/ProtocolFactory.cs @@ -9,9 +9,11 @@ using System; using mRemoteNG.Connection.Protocol.PowerShell; using mRemoteNG.Properties; using mRemoteNG.Resources.Language; +using System.Runtime.Versioning; namespace mRemoteNG.Connection.Protocol { + [SupportedOSPlatform("windows")] public class ProtocolFactory { private readonly RdpProtocolFactory _rdpProtocolFactory = new RdpProtocolFactory(); diff --git a/mRemoteNG/Connection/Protocol/ProtocolList.cs b/mRemoteNG/Connection/Protocol/ProtocolList.cs index 27d8b2148..4acba4ec2 100644 --- a/mRemoteNG/Connection/Protocol/ProtocolList.cs +++ b/mRemoteNG/Connection/Protocol/ProtocolList.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections; using System.Collections.Specialized; @@ -27,8 +27,7 @@ namespace mRemoteNG.Connection.Protocol public void Add(ProtocolBase cProt) { List.Add(cProt); - RaiseCollectionChangedEvent(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, cProt)); + RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, cProt)); } public void AddRange(ProtocolBase[] cProt) @@ -38,8 +37,7 @@ namespace mRemoteNG.Connection.Protocol List.Add(cP); } - RaiseCollectionChangedEvent(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, cProt)); + RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, cProt)); } public void Remove(ProtocolBase cProt) @@ -50,9 +48,7 @@ namespace mRemoteNG.Connection.Protocol return; List.Remove(cProt); - RaiseCollectionChangedEvent(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, - cProt)); + RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, cProt)); } catch (Exception) { @@ -65,8 +61,7 @@ namespace mRemoteNG.Connection.Protocol return; List.Clear(); - RaiseCollectionChangedEvent(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); + RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } public event NotifyCollectionChangedEventHandler CollectionChanged; diff --git a/mRemoteNG/Connection/Protocol/RAW/RawProtocol.cs b/mRemoteNG/Connection/Protocol/RAW/RawProtocol.cs index cb7f0a519..623263aac 100644 --- a/mRemoteNG/Connection/Protocol/RAW/RawProtocol.cs +++ b/mRemoteNG/Connection/Protocol/RAW/RawProtocol.cs @@ -1,5 +1,8 @@ +using System.Runtime.Versioning; + namespace mRemoteNG.Connection.Protocol.RAW { + [SupportedOSPlatform("windows")] public class RawProtocol : PuttyBase { public RawProtocol() diff --git a/mRemoteNG/Connection/Protocol/RDP/RdpErrorCodes.cs b/mRemoteNG/Connection/Protocol/RDP/RdpErrorCodes.cs index a5dbf8c37..5af1e310a 100644 --- a/mRemoteNG/Connection/Protocol/RDP/RdpErrorCodes.cs +++ b/mRemoteNG/Connection/Protocol/RDP/RdpErrorCodes.cs @@ -1,10 +1,12 @@ using System; using System.Collections; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.Resources.Language; namespace mRemoteNG.Connection.Protocol.RDP { + [SupportedOSPlatform("windows")] public static class RdpErrorCodes { private static Hashtable _description; diff --git a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol7.cs b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol7.cs index 1b6a0419f..42b60990d 100644 --- a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol7.cs +++ b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol7.cs @@ -4,9 +4,11 @@ using MSTSCLib; using System; using System.Windows.Forms; using mRemoteNG.Resources.Language; +using System.Runtime.Versioning; namespace mRemoteNG.Connection.Protocol.RDP { + [SupportedOSPlatform("windows")] public class RdpProtocol7 : RdpProtocol6 { protected override RdpVersion RdpProtocolVersion => RdpVersion.Rdc7; diff --git a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs index f8c7c3652..6df68cedb 100644 --- a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs +++ b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs @@ -6,9 +6,11 @@ using mRemoteNG.App; using mRemoteNG.Messages; using MSTSCLib; using mRemoteNG.Resources.Language; +using System.Runtime.Versioning; namespace mRemoteNG.Connection.Protocol.RDP { + [SupportedOSPlatform("windows")] /* RDP v8 requires Windows 7 with: * https://support.microsoft.com/en-us/kb/2592687 * OR diff --git a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs index d521e40d8..391125c80 100644 --- a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs +++ b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs @@ -1,14 +1,15 @@ using System; +using System.Runtime.Versioning; using System.Windows.Forms; using AxMSTSCLib; using MSTSCLib; namespace mRemoteNG.Connection.Protocol.RDP { + [SupportedOSPlatform("windows")] public class RdpProtocol9 : RdpProtocol8 { - private MsRdpClient9NotSafeForScripting RdpClient9 => - (MsRdpClient9NotSafeForScripting)((AxHost)Control).GetOcx(); + private MsRdpClient9NotSafeForScripting RdpClient9 => (MsRdpClient9NotSafeForScripting)((AxHost)Control).GetOcx(); protected override RdpVersion RdpProtocolVersion => RdpVersion.Rdc9; diff --git a/mRemoteNG/Connection/Protocol/RDP/RdpProtocolFactory.cs b/mRemoteNG/Connection/Protocol/RDP/RdpProtocolFactory.cs index 64989c8d0..6e6c3e0b6 100644 --- a/mRemoteNG/Connection/Protocol/RDP/RdpProtocolFactory.cs +++ b/mRemoteNG/Connection/Protocol/RDP/RdpProtocolFactory.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Versioning; namespace mRemoteNG.Connection.Protocol.RDP { + [SupportedOSPlatform("windows")] public class RdpProtocolFactory { public RdpProtocol6 Build(RdpVersion rdpVersion) diff --git a/mRemoteNG/Connection/Protocol/Rlogin/Connection.Protocol.Rlogin.cs b/mRemoteNG/Connection/Protocol/Rlogin/Connection.Protocol.Rlogin.cs index e3fcba198..597de899b 100644 --- a/mRemoteNG/Connection/Protocol/Rlogin/Connection.Protocol.Rlogin.cs +++ b/mRemoteNG/Connection/Protocol/Rlogin/Connection.Protocol.Rlogin.cs @@ -1,5 +1,8 @@ +using System.Runtime.Versioning; + namespace mRemoteNG.Connection.Protocol.Rlogin { + [SupportedOSPlatform("windows")] public class ProtocolRlogin : PuttyBase { public ProtocolRlogin() diff --git a/mRemoteNG/Connection/Protocol/SSH/Connection.Protocol.SSH2.cs b/mRemoteNG/Connection/Protocol/SSH/Connection.Protocol.SSH2.cs index d05c40fef..e9dd89780 100644 --- a/mRemoteNG/Connection/Protocol/SSH/Connection.Protocol.SSH2.cs +++ b/mRemoteNG/Connection/Protocol/SSH/Connection.Protocol.SSH2.cs @@ -1,5 +1,8 @@ +using System.Runtime.Versioning; + namespace mRemoteNG.Connection.Protocol.SSH { + [SupportedOSPlatform("windows")] public class ProtocolSSH2 : PuttyBase { public ProtocolSSH2() diff --git a/mRemoteNG/Connection/Protocol/Serial/Connection.Protocol.Serial.cs b/mRemoteNG/Connection/Protocol/Serial/Connection.Protocol.Serial.cs index 0f4ca94d1..21572413c 100644 --- a/mRemoteNG/Connection/Protocol/Serial/Connection.Protocol.Serial.cs +++ b/mRemoteNG/Connection/Protocol/Serial/Connection.Protocol.Serial.cs @@ -1,5 +1,8 @@ +using System.Runtime.Versioning; + namespace mRemoteNG.Connection.Protocol.Serial { + [SupportedOSPlatform("windows")] public class ProtocolSerial : PuttyBase { public ProtocolSerial() diff --git a/mRemoteNG/Connection/Protocol/Telnet/Connection.Protocol.Telnet.cs b/mRemoteNG/Connection/Protocol/Telnet/Connection.Protocol.Telnet.cs index 6f891c077..f80dedbb3 100644 --- a/mRemoteNG/Connection/Protocol/Telnet/Connection.Protocol.Telnet.cs +++ b/mRemoteNG/Connection/Protocol/Telnet/Connection.Protocol.Telnet.cs @@ -1,5 +1,8 @@ +using System.Runtime.Versioning; + namespace mRemoteNG.Connection.Protocol.Telnet { + [SupportedOSPlatform("windows")] public class ProtocolTelnet : PuttyBase { public ProtocolTelnet() diff --git a/mRemoteNG/Connection/PuttySessionInfo.cs b/mRemoteNG/Connection/PuttySessionInfo.cs index f609dd6af..cdab5428a 100644 --- a/mRemoteNG/Connection/PuttySessionInfo.cs +++ b/mRemoteNG/Connection/PuttySessionInfo.cs @@ -7,10 +7,11 @@ using mRemoteNG.Connection.Protocol; using mRemoteNG.Tree; using mRemoteNG.Tree.Root; using mRemoteNG.Resources.Language; - +using System.Runtime.Versioning; namespace mRemoteNG.Connection { + [SupportedOSPlatform("windows")] public sealed class PuttySessionInfo : ConnectionInfo, IComponent { #region Properties diff --git a/mRemoteNG/Connection/WebHelper.cs b/mRemoteNG/Connection/WebHelper.cs index e2fe50854..5b6ae7998 100644 --- a/mRemoteNG/Connection/WebHelper.cs +++ b/mRemoteNG/Connection/WebHelper.cs @@ -1,9 +1,11 @@ using mRemoteNG.App; using mRemoteNG.Connection.Protocol; using mRemoteNG.Resources.Language; +using System.Runtime.Versioning; namespace mRemoteNG.Connection { + [SupportedOSPlatform("windows")] public class WebHelper { public static void GoToUrl(string url) diff --git a/mRemoteNG/Container/ContainerInfo.cs b/mRemoteNG/Container/ContainerInfo.cs index 597a91e26..a98eb3686 100644 --- a/mRemoteNG/Container/ContainerInfo.cs +++ b/mRemoteNG/Container/ContainerInfo.cs @@ -79,9 +79,7 @@ namespace mRemoteNG.Container newChildItem.Parent = this; Children.Insert(index, newChildItem); SubscribeToChildEvents(newChildItem); - RaiseCollectionChangedEvent(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, - newChildItem)); + RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, newChildItem)); } public void AddChildRange(IEnumerable newChildren) @@ -98,9 +96,7 @@ namespace mRemoteNG.Container removalTarget.Parent = null; Children.Remove(removalTarget); UnsubscribeToChildEvents(removalTarget); - RaiseCollectionChangedEvent(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, - removalTarget)); + RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, removalTarget)); } public void RemoveChildRange(IEnumerable removalTargets) @@ -118,10 +114,7 @@ namespace mRemoteNG.Container Children.Remove(child); if (newIndex > Children.Count) newIndex = Children.Count; Children.Insert(newIndex, child); - RaiseCollectionChangedEvent(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Move, child, - newIndex, - originalIndex)); + RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Move, child, newIndex, originalIndex)); } public void SetChildAbove(ConnectionInfo childToPromote, ConnectionInfo reference) @@ -171,8 +164,7 @@ namespace mRemoteNG.Container SortOn(connectionInfo => connectionInfo.Name, sortDirection); } - public void SortOn(Func propertyToCompare, - ListSortDirection sortDirection = ListSortDirection.Ascending) + public void SortOn(Func propertyToCompare, ListSortDirection sortDirection = ListSortDirection.Ascending) where TProperty : IComparable { var connectionComparer = new ConnectionInfoComparer(propertyToCompare) @@ -180,8 +172,7 @@ namespace mRemoteNG.Container SortDirection = sortDirection }; Children.Sort(connectionComparer); - RaiseCollectionChangedEvent(this, - new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); + RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } public void SortRecursive(ListSortDirection sortDirection = ListSortDirection.Ascending) @@ -189,8 +180,7 @@ namespace mRemoteNG.Container SortOnRecursive(connectionInfo => connectionInfo.Name, sortDirection); } - public void SortOnRecursive(Func propertyToCompare, - ListSortDirection sortDirection = ListSortDirection.Ascending) + public void SortOnRecursive(Func propertyToCompare, ListSortDirection sortDirection = ListSortDirection.Ascending) where TProperty : IComparable { foreach (var child in Children.OfType()) diff --git a/mRemoteNG/Credential/CredentialDeletionMsgBoxConfirmer.cs b/mRemoteNG/Credential/CredentialDeletionMsgBoxConfirmer.cs index 5afdcb1e1..eaad2edfe 100644 --- a/mRemoteNG/Credential/CredentialDeletionMsgBoxConfirmer.cs +++ b/mRemoteNG/Credential/CredentialDeletionMsgBoxConfirmer.cs @@ -26,20 +26,13 @@ namespace mRemoteNG.Credential var targetsArray = confirmationTargets.ToArray(); if (targetsArray.Length == 0) return false; if (targetsArray.Length > 1) - return PromptUser( - string.Format( - "Are you sure you want to delete these {0} selected credentials?", - targetsArray.Length)); - return PromptUser( - string.Format( - Language.ConfirmDeleteCredentialRecord, - targetsArray.First().Title)); + return PromptUser(string.Format("Are you sure you want to delete these {0} selected credentials?", targetsArray.Length)); + return PromptUser(string.Format(Language.ConfirmDeleteCredentialRecord,targetsArray.First().Title)); } private bool PromptUser(string promptMessage) { - var msgBoxResponse = _confirmationFunc.Invoke(promptMessage, Application.ProductName, - MessageBoxButtons.YesNo, MessageBoxIcon.Question); + var msgBoxResponse = _confirmationFunc.Invoke(promptMessage, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question); return msgBoxResponse == DialogResult.Yes; } } diff --git a/mRemoteNG/Credential/CredentialRecordTypeConverter.cs b/mRemoteNG/Credential/CredentialRecordTypeConverter.cs index 396c030fc..dca247a70 100644 --- a/mRemoteNG/Credential/CredentialRecordTypeConverter.cs +++ b/mRemoteNG/Credential/CredentialRecordTypeConverter.cs @@ -2,30 +2,26 @@ using System.ComponentModel; using System.Globalization; using System.Linq; +using System.Runtime.Versioning; using mRemoteNG.App; namespace mRemoteNG.Credential { + [SupportedOSPlatform("windows")] public class CredentialRecordTypeConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { - return sourceType == typeof(Guid) || - base.CanConvertFrom(context, sourceType); + return sourceType == typeof(Guid) || base.CanConvertFrom(context, sourceType); } public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { - return destinationType == typeof(Guid) || - destinationType == typeof(ICredentialRecord) || - base.CanConvertTo(context, destinationType); + return destinationType == typeof(Guid) || destinationType == typeof(ICredentialRecord) || base.CanConvertTo(context, destinationType); } - public override object ConvertTo(ITypeDescriptorContext context, - CultureInfo culture, - object value, - Type destinationType) + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (value is ICredentialRecord && destinationType == typeof(Guid)) return ((ICredentialRecord)value).Id; diff --git a/mRemoteNG/Credential/CredentialServiceFacade.cs b/mRemoteNG/Credential/CredentialServiceFacade.cs index 88a96d498..af8ae83ca 100644 --- a/mRemoteNG/Credential/CredentialServiceFacade.cs +++ b/mRemoteNG/Credential/CredentialServiceFacade.cs @@ -13,9 +13,7 @@ namespace mRemoteNG.Credential public IEnumerable CredentialRepositories => _repositoryList; - public CredentialServiceFacade(ICredentialRepositoryList repositoryList, - ILoader> loader, - ISaver> saver) + public CredentialServiceFacade(ICredentialRepositoryList repositoryList, ILoader> loader, ISaver> saver) { if (repositoryList == null) throw new ArgumentNullException(nameof(repositoryList)); diff --git a/mRemoteNG/Credential/CredentialServiceFactory.cs b/mRemoteNG/Credential/CredentialServiceFactory.cs index d04b97190..671c4c518 100644 --- a/mRemoteNG/Credential/CredentialServiceFactory.cs +++ b/mRemoteNG/Credential/CredentialServiceFactory.cs @@ -1,4 +1,5 @@ using System.IO; +using System.Runtime.Versioning; using mRemoteNG.App; using mRemoteNG.App.Info; using mRemoteNG.Config; @@ -9,25 +10,19 @@ using mRemoteNG.Security.Factories; namespace mRemoteNG.Credential { + [SupportedOSPlatform("windows")] public class CredentialServiceFactory { // When we get a true CompositionRoot we can move this to that class. We should only require 1 instance of this service at a time public CredentialServiceFacade Build() { var cryptoFromSettings = new CryptoProviderFactoryFromSettings(); - var credRepoSerializer = new XmlCredentialPasswordEncryptorDecorator( - cryptoFromSettings.Build(), - new XmlCredentialRecordSerializer()); - var credRepoDeserializer = - new XmlCredentialPasswordDecryptorDecorator(new XmlCredentialRecordDeserializer()); + var credRepoSerializer = new XmlCredentialPasswordEncryptorDecorator(cryptoFromSettings.Build(), new XmlCredentialRecordSerializer()); + var credRepoDeserializer = new XmlCredentialPasswordDecryptorDecorator(new XmlCredentialRecordDeserializer()); var credentialRepoListPath = Path.Combine(SettingsFileInfo.SettingsPath, "credentialRepositories.xml"); var repoListDataProvider = new FileDataProvider(credentialRepoListPath); - var repoListLoader = new CredentialRepositoryListLoader( - repoListDataProvider, - new - CredentialRepositoryListDeserializer(credRepoSerializer, - credRepoDeserializer)); + var repoListLoader = new CredentialRepositoryListLoader(repoListDataProvider, new CredentialRepositoryListDeserializer(credRepoSerializer, credRepoDeserializer)); var repoListSaver = new CredentialRepositoryListSaver(repoListDataProvider); return new CredentialServiceFacade(Runtime.CredentialProviderCatalog, repoListLoader, repoListSaver); diff --git a/mRemoteNG/Messages/MessageCollector.cs b/mRemoteNG/Messages/MessageCollector.cs index 9a89be74b..6840845e0 100644 --- a/mRemoteNG/Messages/MessageCollector.cs +++ b/mRemoteNG/Messages/MessageCollector.cs @@ -3,11 +3,13 @@ using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; +using System.Runtime.Versioning; // ReSharper disable ArrangeAccessorOwnerBody namespace mRemoteNG.Messages { + [SupportedOSPlatform("windows")] public class MessageCollector : INotifyCollectionChanged { private readonly IList _messageList; @@ -44,19 +46,13 @@ namespace mRemoteNG.Messages RaiseCollectionChangedEvent(NotifyCollectionChangedAction.Add, newMessages); } - public void AddExceptionMessage(string message, - Exception ex, - MessageClass msgClass = MessageClass.ErrorMsg, - bool logOnly = true) + public void AddExceptionMessage(string message, Exception ex, MessageClass msgClass = MessageClass.ErrorMsg, bool logOnly = true) { AddMessage(msgClass, message + Environment.NewLine + Tools.MiscTools.GetExceptionMessageRecursive(ex), logOnly); } - public void AddExceptionStackTrace(string message, - Exception ex, - MessageClass msgClass = MessageClass.ErrorMsg, - bool logOnly = true) + public void AddExceptionStackTrace(string message, Exception ex, MessageClass msgClass = MessageClass.ErrorMsg, bool logOnly = true) { AddMessage(msgClass, message + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace, logOnly); diff --git a/mRemoteNG/Messages/WriterDecorators/MessageFocusDecorator.cs b/mRemoteNG/Messages/WriterDecorators/MessageFocusDecorator.cs index 73c6bf4d3..439dada85 100644 --- a/mRemoteNG/Messages/WriterDecorators/MessageFocusDecorator.cs +++ b/mRemoteNG/Messages/WriterDecorators/MessageFocusDecorator.cs @@ -1,4 +1,5 @@ using System; +using System.Runtime.Versioning; using System.Threading.Tasks; using System.Windows.Forms; using mRemoteNG.Messages.MessageFilteringOptions; @@ -9,6 +10,7 @@ using WeifenLuo.WinFormsUI.Docking; namespace mRemoteNG.Messages.WriterDecorators { + [SupportedOSPlatform("windows")] public class MessageFocusDecorator : IMessageWriter { private readonly IMessageTypeFilteringOptions _filter; @@ -16,9 +18,7 @@ namespace mRemoteNG.Messages.WriterDecorators private readonly ErrorAndInfoWindow _messageWindow; private readonly FrmMain _frmMain = FrmMain.Default; - public MessageFocusDecorator(ErrorAndInfoWindow messageWindow, - IMessageTypeFilteringOptions filter, - IMessageWriter decoratedWriter) + public MessageFocusDecorator(ErrorAndInfoWindow messageWindow, IMessageTypeFilteringOptions filter, IMessageWriter decoratedWriter) { _filter = filter ?? throw new ArgumentNullException(nameof(filter)); _messageWindow = messageWindow ?? throw new ArgumentNullException(nameof(messageWindow));