diff --git a/mRemoteNGTests/Connection/ConnectionInfoInheritanceTests.cs b/mRemoteNGTests/Connection/ConnectionInfoInheritanceTests.cs index 5398b77bd..5778e2ac5 100644 --- a/mRemoteNGTests/Connection/ConnectionInfoInheritanceTests.cs +++ b/mRemoteNGTests/Connection/ConnectionInfoInheritanceTests.cs @@ -2,6 +2,7 @@ using NUnit.Framework; using System.Reflection; using System.Collections; +using System.Linq; namespace mRemoteNGTests.Connection { @@ -59,10 +60,23 @@ namespace mRemoteNGTests.Connection Assert.That(_inheritance.Username, Is.True); } + [Test] + public void GetPropertiesReturnsListOfSettableProperties() + { + var hasIconProperty = _inheritance.GetProperties().Contains(typeof(ConnectionInfoInheritance).GetProperty("Icon")); + Assert.That(hasIconProperty, Is.True); + } + + [Test] + public void GetPropertiesExludesPropertiesThatShouldNotBeSet() + { + var hasEverythingInheritedProperty = _inheritance.GetProperties().Contains(typeof(ConnectionInfoInheritance).GetProperty("EverythingInherited")); + Assert.That(hasEverythingInheritedProperty, Is.False); + } private bool AllInheritancePropertiesAreTrue() { - bool allPropertiesTrue = true; + var allPropertiesTrue = true; foreach (var property in _inheritanceProperties) { if (PropertyIsBoolean(property) && PropertyIsChangedWhenSettingInheritAll(property) && BooleanPropertyIsSetToFalse(property)) @@ -73,7 +87,7 @@ namespace mRemoteNGTests.Connection private bool AllInheritancePropertiesAreFalse() { - bool allPropertiesFalse = true; + var allPropertiesFalse = true; foreach (var property in _inheritanceProperties) { if (PropertyIsBoolean(property) && PropertyIsChangedWhenSettingInheritAll(property) && BooleanPropertyIsSetToTrue(property)) @@ -84,8 +98,7 @@ namespace mRemoteNGTests.Connection private bool PropertyIsChangedWhenSettingInheritAll(PropertyInfo property) { - ArrayList propertiesIgnoredByInheritAll = new ArrayList(); - propertiesIgnoredByInheritAll.Add("IsDefault"); + var propertiesIgnoredByInheritAll = new ArrayList {"IsDefault"}; return propertiesIgnoredByInheritAll.Contains(property); } @@ -101,7 +114,7 @@ namespace mRemoteNGTests.Connection private bool BooleanPropertyIsSetToTrue(PropertyInfo property) { - return (bool)property.GetValue(_inheritance) == true; + return (bool)property.GetValue(_inheritance); } } } \ No newline at end of file diff --git a/mRemoteNGTests/Connection/DefaultConnectionInheritanceTests.cs b/mRemoteNGTests/Connection/DefaultConnectionInheritanceTests.cs new file mode 100644 index 000000000..74023cd70 --- /dev/null +++ b/mRemoteNGTests/Connection/DefaultConnectionInheritanceTests.cs @@ -0,0 +1,31 @@ + + +using mRemoteNG.Connection; +using NUnit.Framework; + +namespace mRemoteNGTests.Connection +{ + public class DefaultConnectionInheritanceTests + { + private readonly DefaultConnectionInheritance _defaultConnectionInheritance; + + [SetUp] + public void Setup() + { + + } + + [TearDown] + public void Teardown() + { + + } + + + [Test] + public void a() + { + + } + } +} \ No newline at end of file diff --git a/mRemoteNGTests/mRemoteNGTests.csproj b/mRemoteNGTests/mRemoteNGTests.csproj index e2af3ea14..eb13bb806 100644 --- a/mRemoteNGTests/mRemoteNGTests.csproj +++ b/mRemoteNGTests/mRemoteNGTests.csproj @@ -103,6 +103,7 @@ + diff --git a/mRemoteV1/App/Runtime.cs b/mRemoteV1/App/Runtime.cs index 71a386393..4e4916076 100644 --- a/mRemoteV1/App/Runtime.cs +++ b/mRemoteV1/App/Runtime.cs @@ -17,7 +17,6 @@ using System.IO; using System.Threading; using System.Windows.Forms; using System.Xml; -using mRemoteNG.Security; using mRemoteNG.Security.SymmetricEncryption; using mRemoteNG.UI.Forms; using mRemoteNG.UI.Forms.Input; @@ -145,73 +144,6 @@ namespace mRemoteNG.App } #endregion - #region Default Inheritance - public static ConnectionInfoInheritance DefaultInheritanceFromSettings() - { - DefaultInheritance = new ConnectionInfoInheritance(null); - DefaultInheritance.IsDefault = true; - return DefaultInheritance; - } - - public static void DefaultInheritanceToSettings() - { - Settings.Default.InhDefaultDescription = DefaultInheritance.Description; - Settings.Default.InhDefaultIcon = DefaultInheritance.Icon; - Settings.Default.InhDefaultPanel = DefaultInheritance.Panel; - Settings.Default.InhDefaultUsername = DefaultInheritance.Username; - Settings.Default.InhDefaultPassword = DefaultInheritance.Password; - Settings.Default.InhDefaultDomain = DefaultInheritance.Domain; - Settings.Default.InhDefaultProtocol = DefaultInheritance.Protocol; - Settings.Default.InhDefaultPort = DefaultInheritance.Port; - Settings.Default.InhDefaultPuttySession = DefaultInheritance.PuttySession; - Settings.Default.InhDefaultUseConsoleSession = DefaultInheritance.UseConsoleSession; - Settings.Default.InhDefaultUseCredSsp = DefaultInheritance.UseCredSsp; - Settings.Default.InhDefaultRenderingEngine = DefaultInheritance.RenderingEngine; - Settings.Default.InhDefaultICAEncryptionStrength = DefaultInheritance.ICAEncryption; - Settings.Default.InhDefaultRDPAuthenticationLevel = DefaultInheritance.RDPAuthenticationLevel; - Settings.Default.InhDefaultLoadBalanceInfo = DefaultInheritance.LoadBalanceInfo; - Settings.Default.InhDefaultResolution = DefaultInheritance.Resolution; - Settings.Default.InhDefaultAutomaticResize = DefaultInheritance.AutomaticResize; - Settings.Default.InhDefaultColors = DefaultInheritance.Colors; - Settings.Default.InhDefaultCacheBitmaps = DefaultInheritance.CacheBitmaps; - Settings.Default.InhDefaultDisplayWallpaper = DefaultInheritance.DisplayWallpaper; - Settings.Default.InhDefaultDisplayThemes = DefaultInheritance.DisplayThemes; - Settings.Default.InhDefaultEnableFontSmoothing = DefaultInheritance.EnableFontSmoothing; - Settings.Default.InhDefaultEnableDesktopComposition = DefaultInheritance.EnableDesktopComposition; - Settings.Default.InhDefaultRedirectKeys = DefaultInheritance.RedirectKeys; - Settings.Default.InhDefaultRedirectDiskDrives = DefaultInheritance.RedirectDiskDrives; - Settings.Default.InhDefaultRedirectPrinters = DefaultInheritance.RedirectPrinters; - Settings.Default.InhDefaultRedirectPorts = DefaultInheritance.RedirectPorts; - Settings.Default.InhDefaultRedirectSmartCards = DefaultInheritance.RedirectSmartCards; - Settings.Default.InhDefaultRedirectSound = DefaultInheritance.RedirectSound; - Settings.Default.InhDefaultPreExtApp = DefaultInheritance.PreExtApp; - Settings.Default.InhDefaultPostExtApp = DefaultInheritance.PostExtApp; - Settings.Default.InhDefaultMacAddress = DefaultInheritance.MacAddress; - Settings.Default.InhDefaultUserField = DefaultInheritance.UserField; - // VNC inheritance - Settings.Default.InhDefaultVNCAuthMode = DefaultInheritance.VNCAuthMode; - Settings.Default.InhDefaultVNCColors = DefaultInheritance.VNCColors; - Settings.Default.InhDefaultVNCCompression = DefaultInheritance.VNCCompression; - Settings.Default.InhDefaultVNCEncoding = DefaultInheritance.VNCEncoding; - Settings.Default.InhDefaultVNCProxyIP = DefaultInheritance.VNCProxyIP; - Settings.Default.InhDefaultVNCProxyPassword = DefaultInheritance.VNCProxyPassword; - Settings.Default.InhDefaultVNCProxyPort = DefaultInheritance.VNCProxyPort; - Settings.Default.InhDefaultVNCProxyType = DefaultInheritance.VNCProxyType; - Settings.Default.InhDefaultVNCProxyUsername = DefaultInheritance.VNCProxyUsername; - Settings.Default.InhDefaultVNCSmartSizeMode = DefaultInheritance.VNCSmartSizeMode; - Settings.Default.InhDefaultVNCViewOnly = DefaultInheritance.VNCViewOnly; - // Ext. App inheritance - Settings.Default.InhDefaultExtApp = DefaultInheritance.ExtApp; - // RDP gateway inheritance - Settings.Default.InhDefaultRDGatewayUsageMethod = DefaultInheritance.RDGatewayUsageMethod; - Settings.Default.InhDefaultRDGatewayHostname = DefaultInheritance.RDGatewayHostname; - Settings.Default.InhDefaultRDGatewayUsername = DefaultInheritance.RDGatewayUsername; - Settings.Default.InhDefaultRDGatewayPassword = DefaultInheritance.RDGatewayPassword; - Settings.Default.InhDefaultRDGatewayDomain = DefaultInheritance.RDGatewayDomain; - Settings.Default.InhDefaultRDGatewayUseConnectionCredentials = DefaultInheritance.RDGatewayUseConnectionCredentials; - } - #endregion - #region Panels public static Form AddPanel(string title = "", bool noTabber = false) { diff --git a/mRemoteV1/Config/Connections/ConnectionsSaver.cs b/mRemoteV1/Config/Connections/ConnectionsSaver.cs index ba596d287..e9c540fc3 100644 --- a/mRemoteV1/Config/Connections/ConnectionsSaver.cs +++ b/mRemoteV1/Config/Connections/ConnectionsSaver.cs @@ -418,7 +418,7 @@ namespace mRemoteNG.Config.Connections _sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Inheritance.UseConsoleSession) + "\',"; _sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Inheritance.RenderingEngine) + "\',"; _sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Inheritance.Username) + "\',"; - _sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Inheritance.ICAEncryption) + "\',"; + _sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Inheritance.ICAEncryptionStrength) + "\',"; _sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Inheritance.RDPAuthenticationLevel) + "\',"; _sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Inheritance.LoadBalanceInfo) + "\',"; _sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Inheritance.PreExtApp) + "\',"; @@ -845,7 +845,7 @@ namespace mRemoteNG.Config.Connections _xmlTextWriter.WriteAttributeString("InheritUseCredSsp", "", Convert.ToString(curConI.Inheritance.UseCredSsp)); _xmlTextWriter.WriteAttributeString("InheritRenderingEngine", "", Convert.ToString(curConI.Inheritance.RenderingEngine)); _xmlTextWriter.WriteAttributeString("InheritUsername", "", Convert.ToString(curConI.Inheritance.Username)); - _xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", Convert.ToString(curConI.Inheritance.ICAEncryption)); + _xmlTextWriter.WriteAttributeString("InheritICAEncryptionStrength", "", Convert.ToString(curConI.Inheritance.ICAEncryptionStrength)); _xmlTextWriter.WriteAttributeString("InheritRDPAuthenticationLevel", "", Convert.ToString(curConI.Inheritance.RDPAuthenticationLevel)); _xmlTextWriter.WriteAttributeString("InheritLoadBalanceInfo", "", Convert.ToString(curConI.Inheritance.LoadBalanceInfo)); _xmlTextWriter.WriteAttributeString("InheritPreExtApp", "", Convert.ToString(curConI.Inheritance.PreExtApp)); @@ -1039,7 +1039,7 @@ namespace mRemoteNG.Config.Connections if (SaveSecurity.Inheritance) { - csvLn += con.Inheritance.CacheBitmaps + ";" + Convert.ToString(con.Inheritance.Colors) + ";" + Convert.ToString(con.Inheritance.Description) + ";" + Convert.ToString(con.Inheritance.DisplayThemes) + ";" + Convert.ToString(con.Inheritance.DisplayWallpaper) + ";" + Convert.ToString(con.Inheritance.EnableFontSmoothing) + ";" + Convert.ToString(con.Inheritance.EnableDesktopComposition) + ";" + Convert.ToString(con.Inheritance.Domain) + ";" + Convert.ToString(con.Inheritance.Icon) + ";" + Convert.ToString(con.Inheritance.Panel) + ";" + Convert.ToString(con.Inheritance.Password) + ";" + Convert.ToString(con.Inheritance.Port) + ";" + Convert.ToString(con.Inheritance.Protocol) + ";" + Convert.ToString(con.Inheritance.PuttySession) + ";" + Convert.ToString(con.Inheritance.RedirectDiskDrives) + ";" + Convert.ToString(con.Inheritance.RedirectKeys) + ";" + Convert.ToString(con.Inheritance.RedirectPorts) + ";" + Convert.ToString(con.Inheritance.RedirectPrinters) + ";" + Convert.ToString(con.Inheritance.RedirectSmartCards) + ";" + Convert.ToString(con.Inheritance.RedirectSound) + ";" + Convert.ToString(con.Inheritance.Resolution) + ";" + Convert.ToString(con.Inheritance.AutomaticResize) + ";" + Convert.ToString(con.Inheritance.UseConsoleSession) + ";" + Convert.ToString(con.Inheritance.UseCredSsp) + ";" + Convert.ToString(con.Inheritance.RenderingEngine) + ";" + Convert.ToString(con.Inheritance.Username) + ";" + Convert.ToString(con.Inheritance.ICAEncryption) + ";" + Convert.ToString(con.Inheritance.RDPAuthenticationLevel) + ";" + Convert.ToString(con.Inheritance.LoadBalanceInfo) + ";" + Convert.ToString(con.Inheritance.PreExtApp) + ";" + Convert.ToString(con.Inheritance.PostExtApp) + ";" + Convert.ToString(con.Inheritance.MacAddress) + ";" + Convert.ToString(con.Inheritance.UserField) + ";" + Convert.ToString(con.Inheritance.ExtApp) + ";" + Convert.ToString(con.Inheritance.VNCCompression) + ";" + csvLn += con.Inheritance.CacheBitmaps + ";" + Convert.ToString(con.Inheritance.Colors) + ";" + Convert.ToString(con.Inheritance.Description) + ";" + Convert.ToString(con.Inheritance.DisplayThemes) + ";" + Convert.ToString(con.Inheritance.DisplayWallpaper) + ";" + Convert.ToString(con.Inheritance.EnableFontSmoothing) + ";" + Convert.ToString(con.Inheritance.EnableDesktopComposition) + ";" + Convert.ToString(con.Inheritance.Domain) + ";" + Convert.ToString(con.Inheritance.Icon) + ";" + Convert.ToString(con.Inheritance.Panel) + ";" + Convert.ToString(con.Inheritance.Password) + ";" + Convert.ToString(con.Inheritance.Port) + ";" + Convert.ToString(con.Inheritance.Protocol) + ";" + Convert.ToString(con.Inheritance.PuttySession) + ";" + Convert.ToString(con.Inheritance.RedirectDiskDrives) + ";" + Convert.ToString(con.Inheritance.RedirectKeys) + ";" + Convert.ToString(con.Inheritance.RedirectPorts) + ";" + Convert.ToString(con.Inheritance.RedirectPrinters) + ";" + Convert.ToString(con.Inheritance.RedirectSmartCards) + ";" + Convert.ToString(con.Inheritance.RedirectSound) + ";" + Convert.ToString(con.Inheritance.Resolution) + ";" + Convert.ToString(con.Inheritance.AutomaticResize) + ";" + Convert.ToString(con.Inheritance.UseConsoleSession) + ";" + Convert.ToString(con.Inheritance.UseCredSsp) + ";" + Convert.ToString(con.Inheritance.RenderingEngine) + ";" + Convert.ToString(con.Inheritance.Username) + ";" + Convert.ToString(con.Inheritance.ICAEncryptionStrength) + ";" + Convert.ToString(con.Inheritance.RDPAuthenticationLevel) + ";" + Convert.ToString(con.Inheritance.LoadBalanceInfo) + ";" + Convert.ToString(con.Inheritance.PreExtApp) + ";" + Convert.ToString(con.Inheritance.PostExtApp) + ";" + Convert.ToString(con.Inheritance.MacAddress) + ";" + Convert.ToString(con.Inheritance.UserField) + ";" + Convert.ToString(con.Inheritance.ExtApp) + ";" + Convert.ToString(con.Inheritance.VNCCompression) + ";" + Convert.ToString(con.Inheritance.VNCEncoding) + ";" + Convert.ToString(con.Inheritance.VNCAuthMode) + ";" + Convert.ToString(con.Inheritance.VNCProxyType) + ";" + Convert.ToString(con.Inheritance.VNCProxyIP) + ";" + Convert.ToString(con.Inheritance.VNCProxyPort) + ";" + Convert.ToString(con.Inheritance.VNCProxyUsername) + ";" + Convert.ToString(con.Inheritance.VNCProxyPassword) + ";" + Convert.ToString(con.Inheritance.VNCColors) + ";" + Convert.ToString(con.Inheritance.VNCSmartSizeMode) + ";" + Convert.ToString(con.Inheritance.VNCViewOnly); } diff --git a/mRemoteV1/Config/Connections/SqlConnectionsLoader.cs b/mRemoteV1/Config/Connections/SqlConnectionsLoader.cs index b67177047..c524a011e 100644 --- a/mRemoteV1/Config/Connections/SqlConnectionsLoader.cs +++ b/mRemoteV1/Config/Connections/SqlConnectionsLoader.cs @@ -353,7 +353,7 @@ namespace mRemoteNG.Config.Connections if (_confVersion > 1.5) //1.6 { connectionInfo.ICAEncryption = (ProtocolICA.EncryptionStrength)Tools.MiscTools.StringToEnum(typeof(ProtocolICA.EncryptionStrength), Convert.ToString(_sqlDataReader["ICAEncryptionStrength"])); - connectionInfo.Inheritance.ICAEncryption = Convert.ToBoolean(_sqlDataReader["InheritICAEncryptionStrength"]); + connectionInfo.Inheritance.ICAEncryptionStrength = Convert.ToBoolean(_sqlDataReader["InheritICAEncryptionStrength"]); connectionInfo.PreExtApp = Convert.ToString(_sqlDataReader["PreExtApp"]); connectionInfo.PostExtApp = Convert.ToString(_sqlDataReader["PostExtApp"]); connectionInfo.Inheritance.PreExtApp = Convert.ToBoolean(_sqlDataReader["InheritPreExtApp"]); diff --git a/mRemoteV1/Config/Connections/XmlConnectionsLoader.cs b/mRemoteV1/Config/Connections/XmlConnectionsLoader.cs index 232d334d2..8fd865dd8 100644 --- a/mRemoteV1/Config/Connections/XmlConnectionsLoader.cs +++ b/mRemoteV1/Config/Connections/XmlConnectionsLoader.cs @@ -371,7 +371,7 @@ namespace mRemoteNG.Config.Connections if (_confVersion > 1.5) //1.6 { connectionInfo.ICAEncryption = (ProtocolICA.EncryptionStrength)Tools.MiscTools.StringToEnum(typeof(ProtocolICA.EncryptionStrength), xmlnode.Attributes["ICAEncryptionStrength"].Value); - connectionInfo.Inheritance.ICAEncryption = bool.Parse(xmlnode.Attributes["InheritICAEncryptionStrength"].Value); + connectionInfo.Inheritance.ICAEncryptionStrength = bool.Parse(xmlnode.Attributes["InheritICAEncryptionStrength"].Value); connectionInfo.PreExtApp = xmlnode.Attributes["PreExtApp"].Value; connectionInfo.PostExtApp = xmlnode.Attributes["PostExtApp"].Value; connectionInfo.Inheritance.PreExtApp = bool.Parse(xmlnode.Attributes["InheritPreExtApp"].Value); diff --git a/mRemoteV1/Connection/ConnectionInfo.cs b/mRemoteV1/Connection/ConnectionInfo.cs index 9c9e586ab..5a9f4583c 100644 --- a/mRemoteV1/Connection/ConnectionInfo.cs +++ b/mRemoteV1/Connection/ConnectionInfo.cs @@ -221,7 +221,7 @@ namespace mRemoteNG.Connection TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))] public ProtocolICA.EncryptionStrength ICAEncryption { - get { return GetPropertyValue("ICAEncryption", _icaEncryption); } + get { return GetPropertyValue("ICAEncryptionStrength", _icaEncryption); } set { _icaEncryption = value; } } diff --git a/mRemoteV1/Connection/ConnectionInfoInheritance.cs b/mRemoteV1/Connection/ConnectionInfoInheritance.cs index 7821d6742..53042090e 100644 --- a/mRemoteV1/Connection/ConnectionInfoInheritance.cs +++ b/mRemoteV1/Connection/ConnectionInfoInheritance.cs @@ -1,5 +1,10 @@ +using System; +using System.Collections; +using System.Collections.Generic; using mRemoteNG.Tools; using System.ComponentModel; +using System.Linq; +using System.Reflection; namespace mRemoteNG.Connection { @@ -16,10 +21,7 @@ namespace mRemoteNG.Connection public bool EverythingInherited { get { return EverythingIsInherited(); } - set - { - SetAllValues(value); - } + set { SetAllValues(value); } } #endregion #region Display @@ -78,7 +80,7 @@ namespace mRemoteNG.Connection [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4), LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEncryptionStrength"), LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEncryptionStrength"), - TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool ICAEncryption {get; set;} + TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool ICAEncryptionStrength {get; set;} [LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4), LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAuthenticationLevel"), @@ -294,9 +296,6 @@ namespace mRemoteNG.Connection [Browsable(false)] public object Parent {get; set;} - - [Browsable(false)] - public bool IsDefault {get; set;} #endregion @@ -349,15 +348,23 @@ namespace mRemoteNG.Connection private bool EverythingIsInherited() { - var displaySettings = Description && Icon && Panel; - var connectionSettings = Username && Password && Domain; - var protocolSettings = Protocol && ExtApp && Port && PuttySession && ICAEncryption && RDPAuthenticationLevel && LoadBalanceInfo && RenderingEngine && UseConsoleSession && UseCredSsp; - var appearanceSettings = Resolution && AutomaticResize && Colors && CacheBitmaps && DisplayWallpaper && DisplayThemes && EnableFontSmoothing && EnableDesktopComposition; - var redirectSettings = RedirectDiskDrives && RedirectKeys && RedirectPorts && RedirectPrinters && RedirectSmartCards && RedirectSound; - var miscSettings = PreExtApp && PostExtApp && MacAddress && UserField; - var vncSettings = VNCAuthMode && VNCColors && VNCCompression && VNCEncoding && VNCProxyIP && VNCProxyPassword && VNCProxyPort && VNCProxyType && VNCProxyUsername; + var inheritanceProperties = GetProperties(); + var everythingInherited = inheritanceProperties.All((p) => (bool)p.GetValue(this, null)); + return everythingInherited; + } - return displaySettings && connectionSettings && protocolSettings && appearanceSettings && redirectSettings && miscSettings && vncSettings; + public IEnumerable GetProperties() + { + var properties = typeof(ConnectionInfoInheritance).GetProperties(); + var filteredProperties = properties.Where(FilterProperty); + return filteredProperties; + } + + private bool FilterProperty(PropertyInfo propertyInfo) + { + var exclusions = new[] { "EverythingInherited", "Parent" }; + var valueShouldNotBeFiltered = !exclusions.Contains(propertyInfo.Name); + return valueShouldNotBeFiltered; } private void SetAllValues(bool value) @@ -370,7 +377,7 @@ namespace mRemoteNG.Connection } } - private void SetAllValues(ConnectionInfoInheritance otherInheritanceObject) + protected void SetAllValues(ConnectionInfoInheritance otherInheritanceObject) { var properties = typeof(ConnectionInfoInheritance).GetProperties(); foreach (var property in properties) diff --git a/mRemoteV1/Connection/DefaultConnectionInheritance.cs b/mRemoteV1/Connection/DefaultConnectionInheritance.cs new file mode 100644 index 000000000..f1b5b97b2 --- /dev/null +++ b/mRemoteV1/Connection/DefaultConnectionInheritance.cs @@ -0,0 +1,102 @@ + + +using System.Reflection; + +namespace mRemoteNG.Connection +{ + public class DefaultConnectionInheritance : ConnectionInfoInheritance + { + private static readonly DefaultConnectionInheritance _singletonInstance = new DefaultConnectionInheritance(); + private const string SettingNamePrefix = "InhDefault"; + + + public static DefaultConnectionInheritance Instance { get { return _singletonInstance; } } + + private DefaultConnectionInheritance() : base(null) + { + } + + static DefaultConnectionInheritance() + { } + + + public void LoadFromSettings() + { + var inheritanceProperties = GetProperties(); + foreach (var property in inheritanceProperties) + { + var propertyFromSettings = typeof(Settings).GetProperty($"{SettingNamePrefix}{property.Name}"); + var valueFromSettings = propertyFromSettings.GetValue(Settings.Default, null); + property.SetValue(Instance, valueFromSettings, null); + } + } + + public void SaveToSettings() + { + var inheritanceProperties = GetProperties(); + foreach (var property in inheritanceProperties) + { + var propertyFromSettings = typeof(Settings).GetProperty($"{SettingNamePrefix}{property.Name}"); + var localValue = property.GetValue(Instance, null); + propertyFromSettings.SetValue(Settings.Default, localValue, null); + } + + //Settings.Default.InhDefaultDescription = Description; + //Settings.Default.InhDefaultIcon = Icon; + //Settings.Default.InhDefaultPanel = Panel; + //Settings.Default.InhDefaultUsername = Username; + //Settings.Default.InhDefaultPassword = Password; + //Settings.Default.InhDefaultDomain = Domain; + //Settings.Default.InhDefaultProtocol = Protocol; + //Settings.Default.InhDefaultPort = Port; + //Settings.Default.InhDefaultPuttySession = PuttySession; + //Settings.Default.InhDefaultUseConsoleSession = UseConsoleSession; + //Settings.Default.InhDefaultUseCredSsp = UseCredSsp; + //Settings.Default.InhDefaultRenderingEngine = RenderingEngine; + //Settings.Default.InhDefaultICAEncryptionStrength = ICAEncryptionStrength; + //Settings.Default.InhDefaultRDPAuthenticationLevel = RDPAuthenticationLevel; + //Settings.Default.InhDefaultLoadBalanceInfo = LoadBalanceInfo; + //Settings.Default.InhDefaultResolution = Resolution; + //Settings.Default.InhDefaultAutomaticResize = AutomaticResize; + //Settings.Default.InhDefaultColors = Colors; + //Settings.Default.InhDefaultCacheBitmaps = CacheBitmaps; + //Settings.Default.InhDefaultDisplayWallpaper = DisplayWallpaper; + //Settings.Default.InhDefaultDisplayThemes = DisplayThemes; + //Settings.Default.InhDefaultEnableFontSmoothing = EnableFontSmoothing; + //Settings.Default.InhDefaultEnableDesktopComposition = EnableDesktopComposition; + //// + //Settings.Default.InhDefaultRedirectKeys = RedirectKeys; + //Settings.Default.InhDefaultRedirectDiskDrives = RedirectDiskDrives; + //Settings.Default.InhDefaultRedirectPrinters = RedirectPrinters; + //Settings.Default.InhDefaultRedirectPorts = RedirectPorts; + //Settings.Default.InhDefaultRedirectSmartCards = RedirectSmartCards; + //Settings.Default.InhDefaultRedirectSound = RedirectSound; + //// + //Settings.Default.InhDefaultPreExtApp = PreExtApp; + //Settings.Default.InhDefaultPostExtApp = PostExtApp; + //Settings.Default.InhDefaultMacAddress = MacAddress; + //Settings.Default.InhDefaultUserField = UserField; + //// VNC inheritance + //Settings.Default.InhDefaultVNCAuthMode = VNCAuthMode; + //Settings.Default.InhDefaultVNCColors = VNCColors; + //Settings.Default.InhDefaultVNCCompression = VNCCompression; + //Settings.Default.InhDefaultVNCEncoding = VNCEncoding; + //Settings.Default.InhDefaultVNCProxyIP = VNCProxyIP; + //Settings.Default.InhDefaultVNCProxyPassword = VNCProxyPassword; + //Settings.Default.InhDefaultVNCProxyPort = VNCProxyPort; + //Settings.Default.InhDefaultVNCProxyType = VNCProxyType; + //Settings.Default.InhDefaultVNCProxyUsername = VNCProxyUsername; + //Settings.Default.InhDefaultVNCSmartSizeMode = VNCSmartSizeMode; + //Settings.Default.InhDefaultVNCViewOnly = VNCViewOnly; + //// Ext. App inheritance + //Settings.Default.InhDefaultExtApp = ExtApp; + //// RDP gateway inheritance + //Settings.Default.InhDefaultRDGatewayUsageMethod = RDGatewayUsageMethod; + //Settings.Default.InhDefaultRDGatewayHostname = RDGatewayHostname; + //Settings.Default.InhDefaultRDGatewayUsername = RDGatewayUsername; + //Settings.Default.InhDefaultRDGatewayPassword = RDGatewayPassword; + //Settings.Default.InhDefaultRDGatewayDomain = RDGatewayDomain; + //Settings.Default.InhDefaultRDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials; + } + } +} \ No newline at end of file diff --git a/mRemoteV1/UI/Window/ConfigWindow.cs b/mRemoteV1/UI/Window/ConfigWindow.cs index 800cf2ea1..f48f9d2b6 100644 --- a/mRemoteV1/UI/Window/ConfigWindow.cs +++ b/mRemoteV1/UI/Window/ConfigWindow.cs @@ -180,7 +180,7 @@ namespace mRemoteNG.UI.Window Font = new Font("Segoe UI", 8.25F, FontStyle.Regular, GraphicsUnit.Point, Convert.ToByte(0)); HideOnClose = true; Icon = Resources.Config_Icon; - Name = $"Config"; + Name = "Config"; TabText = @"Config"; Text = @"Config"; propertyGridContextMenu.ResumeLayout(false); @@ -790,13 +790,8 @@ namespace mRemoteNG.UI.Window private void UpdateInheritanceNode() { - if (pGrid.SelectedObject is ConnectionInfoInheritance) - { - if (((ConnectionInfoInheritance)pGrid.SelectedObject).IsDefault) - { - Runtime.DefaultInheritanceToSettings(); - } - } + if (!(pGrid.SelectedObject is DefaultConnectionInheritance)) return; + DefaultConnectionInheritance.Instance.SaveToSettings(); } private void pGrid_PropertySortChanged(object sender, EventArgs e) @@ -819,7 +814,7 @@ namespace mRemoteNG.UI.Window { case Connection.Protocol.ProtocolType.RDP: strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("PuttySession"); strHide.Add("RenderingEngine"); strHide.Add("VNCAuthMode"); @@ -860,7 +855,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableFontSmoothing"); strHide.Add("EnableDesktopComposition"); strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("PuttySession"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); @@ -903,7 +898,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableDesktopComposition"); strHide.Add("Domain"); strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); strHide.Add("RDGatewayPassword"); @@ -944,7 +939,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableDesktopComposition"); strHide.Add("Domain"); strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); strHide.Add("RDGatewayPassword"); @@ -985,7 +980,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableDesktopComposition"); strHide.Add("Domain"); strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("Password"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); @@ -1028,7 +1023,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableDesktopComposition"); strHide.Add("Domain"); strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("Password"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); @@ -1071,7 +1066,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableDesktopComposition"); strHide.Add("Domain"); strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("Password"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); @@ -1114,7 +1109,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableDesktopComposition"); strHide.Add("Domain"); strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("PuttySession"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); @@ -1155,7 +1150,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableDesktopComposition"); strHide.Add("Domain"); strHide.Add("ExtApp"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("PuttySession"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); @@ -1232,7 +1227,7 @@ namespace mRemoteNG.UI.Window strHide.Add("EnableFontSmoothing"); strHide.Add("EnableDesktopComposition"); strHide.Add("Domain"); - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); strHide.Add("PuttySession"); strHide.Add("RDGatewayDomain"); strHide.Add("RDGatewayHostname"); @@ -1389,9 +1384,9 @@ namespace mRemoteNG.UI.Window strHide.Add("RenderingEngine"); } - if (conI.Inheritance.ICAEncryption) + if (conI.Inheritance.ICAEncryptionStrength) { - strHide.Add("ICAEncryption"); + strHide.Add("ICAEncryptionStrength"); } if (conI.Inheritance.RDPAuthenticationLevel) @@ -1563,7 +1558,7 @@ namespace mRemoteNG.UI.Window { if (pGrid.SelectedObject is ConnectionInfoInheritance) { - if (((ConnectionInfoInheritance)pGrid.SelectedObject).IsDefault) + if (pGrid.SelectedObject is DefaultConnectionInheritance) { PropertiesVisible = true; InheritanceVisible = false; @@ -1625,7 +1620,9 @@ namespace mRemoteNG.UI.Window InheritanceVisible = false; DefaultPropertiesVisible = false; DefaultInheritanceVisible = true; - SetPropertyGridObject(Runtime.DefaultInheritanceFromSettings()); + var defaultInheritance = DefaultConnectionInheritance.Instance; + defaultInheritance.LoadFromSettings(); + SetPropertyGridObject(defaultInheritance); } } diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 143a96d94..ff87f6d0c 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -163,6 +163,7 @@ +