diff options
author | David Sparer <sparerd@users.noreply.github.com> | 2017-03-06 20:33:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-06 20:33:04 +0300 |
commit | be5c66bd93ef9445f523d70e34da10dca100bfe7 (patch) | |
tree | 4c299269e98fc566113a20ed28e0a22b55b2345a | |
parent | b1ec9756125fe423dba48a3cbd8c8d538e46ead8 (diff) | |
parent | 5347e5a3aaad9e123df85795f644bf32ca03890f (diff) |
Merge pull request #438 from mRemoteNG/1_75_hotfixesv1.75Hotfix1
1.75 hotfix 1
10 files changed, 69 insertions, 21 deletions
diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT index 8fa19fbe..558cb946 100644 --- a/CHANGELOG.TXT +++ b/CHANGELOG.TXT @@ -1,3 +1,16 @@ +1.75 hotfix 1 (2017-03-06): + +General Changes: +---------------- +#437: Modify version numbering scheme + +Fixes: +------ +#422: Uncaught exception when clicking in connection tree whitespace +#312: Resolved KeePass auto-type issue +#427: Export does not respect filtering user/password/domain + + 1.75 (2017-03-01): Known Issue: diff --git a/mRemoteNGTests/Config/Serializers/XmlConnectionNodeSerializerTests.cs b/mRemoteNGTests/Config/Serializers/XmlConnectionNodeSerializerTests.cs index 9136450e..dc63d79e 100644 --- a/mRemoteNGTests/Config/Serializers/XmlConnectionNodeSerializerTests.cs +++ b/mRemoteNGTests/Config/Serializers/XmlConnectionNodeSerializerTests.cs @@ -12,13 +12,14 @@ namespace mRemoteNGTests.Config.Serializers public class XmlConnectionNodeSerializerTests { private XmlConnectionNodeSerializer _connectionNodeSerializer; + private ICryptographyProvider _cryptographyProvider; [SetUp] public void Setup() { - var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider( + _cryptographyProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider( BlockCipherEngines.AES, BlockCipherModes.GCM); - _connectionNodeSerializer = new XmlConnectionNodeSerializer(cryptoProvider, "myPassword1".ConvertToSecureString()); + _connectionNodeSerializer = new XmlConnectionNodeSerializer(_cryptographyProvider, "myPassword1".ConvertToSecureString(), new SaveFilter()); } [Test] @@ -48,8 +49,7 @@ namespace mRemoteNGTests.Config.Serializers public void AttributesNotSerializedWhenFiltered(string attributeName, ConnectionInfo connectionInfo) { var saveFilter = new SaveFilter(true); - var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM); - _connectionNodeSerializer = new XmlConnectionNodeSerializer(cryptoProvider, "myPassword1".ConvertToSecureString(), saveFilter); + _connectionNodeSerializer = new XmlConnectionNodeSerializer(_cryptographyProvider, "myPassword1".ConvertToSecureString(), saveFilter); var returnVal = _connectionNodeSerializer.SerializeConnectionInfo(connectionInfo); var targetAttribute = returnVal.Attribute(XName.Get(attributeName)); Assert.That(targetAttribute?.Value, Is.EqualTo(string.Empty)); @@ -59,8 +59,7 @@ namespace mRemoteNGTests.Config.Serializers public void InheritanceNotSerialiedWhenFiltered(string attributeName, ConnectionInfo connectionInfo) { var saveFilter = new SaveFilter(true); - var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM); - _connectionNodeSerializer = new XmlConnectionNodeSerializer(cryptoProvider, "myPassword1".ConvertToSecureString(), saveFilter); + _connectionNodeSerializer = new XmlConnectionNodeSerializer(_cryptographyProvider, "myPassword1".ConvertToSecureString(), saveFilter); var returnVal = _connectionNodeSerializer.SerializeConnectionInfo(connectionInfo); var targetAttribute = returnVal.Attribute(XName.Get(attributeName)); Assert.That(targetAttribute?.Value, Is.EqualTo(false.ToString())); diff --git a/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentCompilerTests.cs b/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentCompilerTests.cs index e7ba07be..69292cc2 100644 --- a/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentCompilerTests.cs +++ b/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentCompilerTests.cs @@ -28,7 +28,8 @@ namespace mRemoteNGTests.Config.Serializers public void Setup() { _cryptographyProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM); - _documentCompiler = new XmlConnectionsDocumentCompiler(_cryptographyProvider); + var saveFilter = new SaveFilter(); + _documentCompiler = new XmlConnectionsDocumentCompiler(_cryptographyProvider, saveFilter); _connectionTreeModel = SetupConnectionTreeModel(); } diff --git a/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentEncryptorTests.cs b/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentEncryptorTests.cs index ec17d85d..2fbe9331 100644 --- a/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentEncryptorTests.cs +++ b/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentEncryptorTests.cs @@ -20,7 +20,8 @@ namespace mRemoteNGTests.Config.Serializers { var connectionTreeModel = SetupConnectionTreeModel(); var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM); - _originalDocument = new XmlConnectionsDocumentCompiler(cryptoProvider).CompileDocument(connectionTreeModel, false, false); + var saveFilter = new SaveFilter(); + _originalDocument = new XmlConnectionsDocumentCompiler(cryptoProvider, saveFilter).CompileDocument(connectionTreeModel, false, false); _documentEncryptor = new XmlConnectionsDocumentEncryptor(cryptoProvider); } diff --git a/mRemoteNGTests/Config/Serializers/XmlConnectionsSerializerTests.cs b/mRemoteNGTests/Config/Serializers/XmlConnectionsSerializerTests.cs index 078a1b9b..8604ef47 100644 --- a/mRemoteNGTests/Config/Serializers/XmlConnectionsSerializerTests.cs +++ b/mRemoteNGTests/Config/Serializers/XmlConnectionsSerializerTests.cs @@ -1,7 +1,9 @@ using System.Xml; +using System.Xml.Linq; using mRemoteNG.Config.Serializers; using mRemoteNG.Connection; using mRemoteNG.Container; +using mRemoteNG.Security; using mRemoteNG.Security.SymmetricEncryption; using mRemoteNG.Tree; using mRemoteNG.Tree.Root; @@ -45,6 +47,27 @@ namespace mRemoteNGTests.Config.Serializers Assert.That(connectionNode, Is.Not.Null); } + [TestCase("Username", "")] + [TestCase("Domain", "")] + [TestCase("Password", "")] + [TestCase("InheritAutomaticResize", "False")] + public void SerializerRespectsSaveFilterSettings(string attributeName, string expectedValue) + { + _serializer.SaveFilter = new SaveFilter(true); + var connectionInfo = new ConnectionInfo + { + Name = "myConnection", + Username = "somefilteredstuff", + Domain = "somefilteredstuff", + Password = "somefilteredstuff", + Inheritance = {AutomaticResize = true} + }; + var serializedConnections = _serializer.Serialize(connectionInfo); + var xdoc = XDocument.Parse(serializedConnections); + var attributeValue = xdoc.Root?.Element("Node")?.Attribute(attributeName)?.Value; + Assert.That(attributeValue, Is.EqualTo(expectedValue)); + } + private ConnectionTreeModel SetupConnectionTreeModel() { /* diff --git a/mRemoteV1/Config/Serializers/XmlConnectionNodeSerializer.cs b/mRemoteV1/Config/Serializers/XmlConnectionNodeSerializer.cs index 0ec493f2..01b6345b 100644 --- a/mRemoteV1/Config/Serializers/XmlConnectionNodeSerializer.cs +++ b/mRemoteV1/Config/Serializers/XmlConnectionNodeSerializer.cs @@ -1,4 +1,5 @@ -using System.Security; +using System; +using System.Security; using System.Xml.Linq; using mRemoteNG.Connection; using mRemoteNG.Container; @@ -13,14 +14,15 @@ namespace mRemoteNG.Config.Serializers private readonly SecureString _encryptionKey; private readonly SaveFilter _saveFilter = new SaveFilter(); - public XmlConnectionNodeSerializer(ICryptographyProvider cryptographyProvider, SecureString encryptionKey) - { - _cryptographyProvider = cryptographyProvider; - _encryptionKey = encryptionKey; - } - public XmlConnectionNodeSerializer(ICryptographyProvider cryptographyProvider, SecureString encryptionKey, SaveFilter saveFilter) { + if (cryptographyProvider == null) + throw new ArgumentNullException(nameof(cryptographyProvider)); + if (encryptionKey == null) + throw new ArgumentNullException(nameof(encryptionKey)); + if (saveFilter == null) + throw new ArgumentNullException(nameof(saveFilter)); + _cryptographyProvider = cryptographyProvider; _encryptionKey = encryptionKey; _saveFilter = saveFilter; diff --git a/mRemoteV1/Config/Serializers/XmlConnectionsDocumentCompiler.cs b/mRemoteV1/Config/Serializers/XmlConnectionsDocumentCompiler.cs index 15e14e19..224348e0 100644 --- a/mRemoteV1/Config/Serializers/XmlConnectionsDocumentCompiler.cs +++ b/mRemoteV1/Config/Serializers/XmlConnectionsDocumentCompiler.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using System.Security; using System.Xml.Linq; using mRemoteNG.Connection; @@ -14,10 +15,17 @@ namespace mRemoteNG.Config.Serializers { private readonly ICryptographyProvider _cryptographyProvider; private SecureString _encryptionKey; + private readonly SaveFilter _saveFilter; - public XmlConnectionsDocumentCompiler(ICryptographyProvider cryptographyProvider) + public XmlConnectionsDocumentCompiler(ICryptographyProvider cryptographyProvider, SaveFilter saveFilter) { + if (cryptographyProvider == null) + throw new ArgumentNullException(nameof(cryptographyProvider)); + if (saveFilter == null) + throw new ArgumentNullException(nameof(saveFilter)); + _cryptographyProvider = cryptographyProvider; + _saveFilter = saveFilter; } public XDocument CompileDocument(ConnectionTreeModel connectionTreeModel, bool fullFileEncryption, bool export) @@ -77,7 +85,7 @@ namespace mRemoteNG.Config.Serializers private XElement CompileConnectionInfoNode(ConnectionInfo connectionInfo) { - var connectionSerializer = new XmlConnectionNodeSerializer(_cryptographyProvider, _encryptionKey); + var connectionSerializer = new XmlConnectionNodeSerializer(_cryptographyProvider, _encryptionKey, _saveFilter); return connectionSerializer.SerializeConnectionInfo(connectionInfo); } } diff --git a/mRemoteV1/Config/Serializers/XmlConnectionsSerializer.cs b/mRemoteV1/Config/Serializers/XmlConnectionsSerializer.cs index 72a6682f..183d82c1 100644 --- a/mRemoteV1/Config/Serializers/XmlConnectionsSerializer.cs +++ b/mRemoteV1/Config/Serializers/XmlConnectionsSerializer.cs @@ -41,7 +41,7 @@ namespace mRemoteNG.Config.Serializers var xml = ""; try { - var documentCompiler = new XmlConnectionsDocumentCompiler(_cryptographyProvider); + var documentCompiler = new XmlConnectionsDocumentCompiler(_cryptographyProvider, SaveFilter); var xmlDocument = documentCompiler.CompileDocument(serializationTarget, UseFullEncryption, Export); xml = WriteXmlToString(xmlDocument); } diff --git a/mRemoteV1/Properties/AssemblyInfo.cs b/mRemoteV1/Properties/AssemblyInfo.cs index 16ac8871..78163846 100644 --- a/mRemoteV1/Properties/AssemblyInfo.cs +++ b/mRemoteV1/Properties/AssemblyInfo.cs @@ -33,7 +33,7 @@ using System.Runtime.InteropServices; // by using the '*' as shown below: // <Assembly: AssemblyVersion("1.0.*")> -[assembly: AssemblyVersion("1.75.*")] +[assembly: AssemblyVersion("1.75.7000.*")] [assembly:NeutralResourcesLanguageAttribute("en")] diff --git a/mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs b/mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs index ea076939..cb640ba0 100644 --- a/mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs +++ b/mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs @@ -48,6 +48,7 @@ namespace mRemoteNG.UI.Controls { InitializeComponent(); SetupConnectionTreeView(); + UseOverlays = false; } #region ConnectionTree Setup @@ -264,7 +265,7 @@ namespace mRemoteNG.UI.Controls if (mouseEventArgs.Clicks > 1) return; OLVColumn column; var listItem = GetItemAt(mouseEventArgs.X, mouseEventArgs.Y, out column); - var clickedNode = listItem.RowObject as ConnectionInfo; + var clickedNode = listItem?.RowObject as ConnectionInfo; if (clickedNode == null) return; SingleClickHandler.Execute(clickedNode); } |