Compare commits

..

39 Commits

Author SHA1 Message Date
Sean Kaim
3a173821d7 1.75 Alpha 3 2016-08-12 14:12:57 -04:00
Sean Kaim
4555db8e97 MR-965, MR-871, MR-629: Error 264 on RDP Connect
Error 264 is a timeout:
RDP disconnected!
264 This computer can't connect to the remote computer.

The two computers couldn't connect in the amount of time allotted. Try
connecting again. If the problem continues, contact your network
administrator or technical support.
2016-08-11 16:52:57 -04:00
Sean Kaim
1bbd20de3c Merge PR #130 - port scan button width 2016-08-10 16:48:42 -04:00
Sean Kaim
d1f4164498 Update changelog 2016-08-10 16:41:56 -04:00
Sean Kaim
d1c238a812 Merge pull request #134 from mRemoteNG/MR-946_Initial_SSH.NET
MR-946 initial ssh.net - File xfer
2016-08-10 16:03:56 -04:00
Sean Kaim
675bbd602f Remove old components, update credits.txt 2016-08-10 15:59:14 -04:00
Sean Kaim
ab1be61fda SFTP file transfer now works fully 2016-08-10 15:52:02 -04:00
Sean Kaim
8097ab146c Merge remote-tracking branch 'refs/remotes/origin/develop' into MR-946_Initial_SSH.NET 2016-08-10 12:04:02 -04:00
David Sparer
c0c4b69c64 Rename interface "Inheritance" to "IInheritable" 2016-08-10 09:24:48 -06:00
David Sparer
315d90391c Merge branch 'MR-906_default_Inherit_All_not_saved' into develop 2016-08-10 09:14:18 -06:00
David Sparer
869a5fd773 Created several simple unit & integration tests for DefaultConnectionInheritance 2016-08-10 09:06:44 -06:00
David Sparer
9940cfcf12 Minor cleanup of the Config window class 2016-08-10 08:28:35 -06:00
Sean Kaim
463b6cd791 progress bar style 2016-08-09 17:53:02 -04:00
David Sparer
b981516913 Fix issue setting ICAEncryptionStrength through inheritance 2016-08-09 15:50:56 -06:00
David Sparer
9ffdbee400 Fix self-reference initialization error 2016-08-09 15:49:52 -06:00
Sean Kaim
def55c9dfe code formatting/clean up 2016-08-09 17:48:22 -04:00
Sean Kaim
69668c5e55 background transfer 2016-08-09 17:45:46 -04:00
David Sparer
f41adec096 Minor cleanup of ConnectionInfo 2016-08-09 15:25:21 -06:00
David Sparer
3cc56f9886 Minor cleanup of ConnectionInfoInheritance 2016-08-09 15:25:03 -06:00
Sean Kaim
be8b302e20 Merge remote-tracking branch 'refs/remotes/origin/develop' into MR-946_Initial_SSH.NET 2016-08-09 16:58:57 -04:00
Sean Kaim
6da05af387 code clean up & fix complier warnings 2016-08-09 16:58:44 -04:00
Sean Kaim
2eb74afc20 upload with progress bar working 2016-08-09 16:41:46 -04:00
David Sparer
c44bb1e27d Made DefaultConnectionInheritance.SaveTo a generic method to decouple it from Settings 2016-08-09 11:08:06 -06:00
David Sparer
12cd38a047 Made DefaultConnectionInheritance LoadFrom a generic method to decouple it from the Settings class 2016-08-09 11:02:53 -06:00
David Sparer
e5c896cb36 Refactored much of the inheritance code to use System.Reflection instead of hardcoded values.
Refactored DefaultInheritance to its own class which inherits from the ConnectionInfoInheritance class.
Fixed issue with DefaultInheritance not saving to settings.
2016-08-09 10:34:51 -06:00
Sean Kaim
d89a2487e7 Merge remote-tracking branch 'refs/remotes/origin/develop' into MR-946_Initial_SSH.NET 2016-08-08 17:56:10 -04:00
David Sparer
e59f91a976 Minor refactoring 2016-08-05 09:37:22 -06:00
David Sparer
9a80777fe9 Minor code cleanup in ConnectionInfoInheritance 2016-08-05 09:02:17 -06:00
David Sparer
69b1da50b8 Removed redundant namespace qualifier 2016-08-05 08:55:45 -06:00
Sean Kaim
04ada28ffc Latest SSH.NET package 2016-08-04 17:48:26 -04:00
David Sparer
369a6c2f04 Merge branch 'MR-896_RDP_Class_not_registered' into develop 2016-08-04 13:39:37 -06:00
David Sparer
f438fb65f8 Installer now checkes for KB2574819 on win7 before installation can occur 2016-08-04 13:37:36 -06:00
David Sparer
6590011ef1 Refactored the CustomActions for checking if a KB is installed. Made it more generic 2016-08-04 13:36:08 -06:00
David Sparer
b6eb3d2361 Added the CustomActions project to build by default for Release and Debug builds 2016-08-03 13:26:32 -06:00
David Sparer
13b9b77f0d Added exception catching to a CustomAction method 2016-08-03 13:25:38 -06:00
David Sparer
20419856c1 Minor update to changelog 2016-08-03 13:25:02 -06:00
Sean Kaim
8bbb9a70c6 code clean up, ui tweaks, new backend class 2016-07-29 21:52:06 -04:00
Sean Kaim
37905f8249 Add nuget packages to tests 2016-07-28 16:49:44 -04:00
Sean Kaim
203dcf714f Initial SSH.NET file transfer
Upload succeeds. UI status/etc needs work.
2016-07-27 22:56:28 -04:00
52 changed files with 1768 additions and 1767 deletions

View File

@@ -1,3 +1,14 @@
1.75 Alpha 3 (2016-08-12):
Fixes:
------
MR-965, MR-871, MR-629: Error 264 on RDP Connect attempt - Added timeout value to Tools -> Options -> Connections
MR-946: Remove old/insecure SharpSSH and related components. Replace with SSH.NET for File Transfer Functionality
MR-896: Added prerequisite installer check for KB2574819. Prevents "Class not registered" errors when opening RDP connections.
PR-130: Fix Scan button width to fit russian translation
1.75 Alpha 2 (2016-08-03):
General Changes:
@@ -9,12 +20,13 @@
Features/Enhancements:
----------------------
PR-133: Option to reconnect all currently opened connection tabs
MR-961, PR-133: Option to reconnect all currently opened connection tabs
MR-917: Improved cryptographic support
Fixes:
------
MR-910: Fixes to support Remote Desktop Gateways
MR-874: Incorrect RDP prerequisite check in installer

View File

@@ -9,11 +9,10 @@ Sean Kaim (github.com/kmscode)
Felix Deimel - mRemote original developer
Riley McArdle - mRemoteNG original developer
github.com/Brandhor
Past Contributors
=================
Jason Barbier
Wiktor Beryt
Lionel Caignec
@@ -23,6 +22,8 @@ Tom Hiller
Apisitt Rattana
Andreas Rehm
David Vidmar
github.com/Brandhor
github.com/Kvarkas
Translators
@@ -69,11 +70,6 @@ Copyright
Copyright <20> 2008 Felix Deimel
http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx
DiffieHellman 1.0
Copyright <20> 2003 The Mentalis.org Team
Modified New BSD License
http://www.mentalis.org/
DockPanel Suite 2.10.0.beta2
Copyright <20> 2015 @roken and @lextm (formerly Weifen Luo)
MIT License
@@ -94,27 +90,21 @@ Copyright
Freely redistributable with attribution
http://www.dotnetmagic.com/magic_download.html
Mentalis.org Security Library 1.0.13.715
Copyright <20> 2002-2005 The Mentalis.org Team
Modified New BSD License
http://www.mentalis.org/
PuTTY 0.67
Copyright <20> 1997-2016 Simon Tatham
MIT License
http://www.chiark.greenend.org.uk/~sgtatham/putty/
SharpSSH 1.1.1.13
Copyright <20> 2002-2008 Atsuhiko Yamanaka, JCraft, Inc.
Copyright <20> 2007 Tamir Gal
BSD Style License
http://www.tamirgal.com/blog/page/SharpSSH.aspx
Silk Icon Set
Copyright <20> 2005-2008 FAMFAMFAM
Creative Commons Attribution 2.5 License
http://www.famfamfam.com/
SSH.NET v2016.0.0
Copyright <20> 2016
MIT License
https://github.com/sshnet/SSH.NET
VncSharp 1.1
Copyright <20> 2004-2009 David Humphrey
GNU General Public License (GPL) Version 2

View File

@@ -7,7 +7,15 @@ namespace CustomActions
[CustomAction]
public static ActionResult IsMinimumRdpVersionInstalled(Session session)
{
var rdpVersionChecker = new RdpVersionChecker(session);
var rdpVersionChecker = new InstalledKbChecker("MINIMUM_RDP_KB", "MINIMUM_RDP_VERSION_INSTALLED", session);
rdpVersionChecker.Execute();
return ActionResult.Success;
}
[CustomAction]
public static ActionResult IsRdpDtlsUpdateInstalled(Session session)
{
var rdpVersionChecker = new InstalledKbChecker("RDP_DTLS_KB", "RDP_DTLS_UPDATE_INSTALLED", session);
rdpVersionChecker.Execute();
return ActionResult.Success;
}

View File

@@ -47,7 +47,7 @@
<Compile Include="CustomActions.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="InstalledWindowsUpdateGatherer.cs" />
<Compile Include="RdpVersionChecker.cs" />
<Compile Include="InstalledKbChecker.cs" />
<Compile Include="UninstallNsisVersions.cs" />
<Content Include="CustomAction.config" />
</ItemGroup>

View File

@@ -0,0 +1,53 @@
using System;
using Microsoft.Deployment.WindowsInstaller;
namespace CustomActions
{
public class InstalledKbChecker
{
private readonly Session _session;
private readonly string _kbVariable;
private readonly string _returnVar;
public InstalledKbChecker(string kbVariable, string returnVar, Session session)
{
_kbVariable = kbVariable;
_returnVar = returnVar;
_session = session;
}
public bool Execute()
{
try
{
_session.Log("Begin InstalledKbChecker");
var minimumKb = _session[_kbVariable];
var isUpdateInstalled = IsUpdateInstalled(minimumKb);
SetReturnValue(isUpdateInstalled);
_session.Log("End InstalledKbChecker");
return true;
}
catch (Exception e)
{
_session.Log($"There was an issue executing the RdpVersionChecker. Exception: {e}");
return false;
}
}
private bool IsUpdateInstalled(string kb)
{
_session.Log($"Checking if '{kb}' is installed");
var updateGatherer = new InstalledWindowsUpdateGatherer();
var isUpdateInstalled = updateGatherer.IsUpdateInstalled(kb);
_session.Log($"KB is installed = '{isUpdateInstalled}'");
return isUpdateInstalled;
}
private void SetReturnValue(bool isUpdateInstalled)
{
var updateInstalledVal = isUpdateInstalled ? "1" : "0";
_session[_returnVar] = updateInstalledVal;
_session.Log($"Set property '{_returnVar}' to '{updateInstalledVal}'");
}
}
}

View File

@@ -1,42 +0,0 @@
using Microsoft.Deployment.WindowsInstaller;
namespace CustomActions
{
public class RdpVersionChecker
{
private readonly Session _session;
private const string MinimumVersionInstalledReturnVar = "MINIMUM_RDP_VERSION_INSTALLED";
private const string MinimumRdpKbVariable = "MINIMUM_RDP_KB";
public RdpVersionChecker(Session session)
{
_session = session;
}
public bool Execute()
{
_session.Log("Begin IsMinimumRdpVersionInstalled");
var minimumKb = _session[MinimumRdpKbVariable];
var isUpdateInstalled = IsUpdateInstalled(minimumKb);
SetReturnValue(isUpdateInstalled);
_session.Log("End IsMinimumRdpVersionInstalled");
return true;
}
private bool IsUpdateInstalled(string minimumKb)
{
_session.Log("Checking if '{0}' is installed", minimumKb);
var updateGatherer = new InstalledWindowsUpdateGatherer();
var isUpdateInstalled = updateGatherer.IsUpdateInstalled(minimumKb);
_session.Log("KB is installed = '{0}'", isUpdateInstalled);
return isUpdateInstalled;
}
private void SetReturnValue(bool isUpdateInstalled)
{
var updateInstalledVal = isUpdateInstalled ? "1" : "0";
_session[MinimumVersionInstalledReturnVar] = updateInstalledVal;
_session.Log($"Set property '{MinimumVersionInstalledReturnVar}' to '{updateInstalledVal}'");
}
}
}

View File

@@ -4,4 +4,7 @@
<Fragment>
<CustomAction Id="CheckIfMinimumRdpInstalled" Return="check" Execute="immediate" BinaryKey="CustomActions.CA.dll" DllEntry="IsMinimumRdpVersionInstalled" />
</Fragment>
<Fragment>
<CustomAction Id="CheckIfRdpDtlsUpdateInstalled" Return="check" Execute="immediate" BinaryKey="CustomActions.CA.dll" DllEntry="IsRdpDtlsUpdateInstalled" />
</Fragment>
</Wix>

View File

@@ -19,6 +19,7 @@
<?define Rdp80Kb = "KB2592687" ?>
<?define Rdp81Kb = "KB2923545" ?>
<?define MinimumRdpKb = $(var.Rdp80Kb) ?>
<?define RdpDtlsKb = "KB2574819" ?>
<?define IGNOREPREREQUISITES = 0 ?>
<?if $(var.Platform) = x64 ?>

View File

@@ -7,6 +7,7 @@
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework [REQUIREDDOTNETFRAMEWORKVERSION] or higher.</String>
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
<String Id="Install_RDPDtlsRequirement">mRemoteNG requires KB2574819 in order to create RDP connections. Windows 7 users will need to install this KB.</String>
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
<!-- Directories and File names -->

View File

@@ -16,6 +16,8 @@
<Property Id="APPLICATIONROOTDIRECTORY">
<RegistrySearch Id='mRemoteNGRegistry' Type='raw' Root='HKLM' Key='Software\mRemoteNG' Name='InstallDir' />
</Property>
<Property Id='RDP_DTLS_KB' Value='$(var.RdpDtlsKb)' />
<Property Id='RDP_DTLS_UPDATE_INSTALLED' Value='0' Secure='yes' />
<Property Id='MINIMUM_RDP_KB' Value='$(var.MinimumRdpKb)' />
<Property Id='MINIMUM_RDP_VERSION_INSTALLED' Value='0' Secure='yes' />
<Property Id='REQUIREDDOTNETFRAMEWORKVERSION' Value='$(var.RequiredDotNetFrameworkVersion)' />
@@ -26,7 +28,8 @@
<InstallUISequence>
<Custom Action="CheckIfMinimumRdpInstalled" After="AppSearch">(NOT Installed) AND (VersionNT = 601 OR VersionNT64 = 601)</Custom>
<Custom Action="CheckIfRdpDtlsUpdateInstalled" After="AppSearch">(NOT Installed) AND (VersionNT = 601 OR VersionNT64 = 601)</Custom>
<Custom Action="CheckIfMinimumRdpInstalled" After="CheckIfRdpDtlsUpdateInstalled">(NOT Installed) AND (VersionNT = 601 OR VersionNT64 = 601)</Custom>
<LaunchConditions After="SetWIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED" />
<Custom Action="CheckIfLegacyVersionInstalled" After="LaunchConditions" />
<Custom Action="UninstallLegacyVersion" After="CheckIfLegacyVersionInstalled">(NOT Installed) AND (LEGACYVERSIONINSTALLED = 1)</Custom>
@@ -49,6 +52,10 @@
<Condition Message="!(loc.Install_NeedDotNetFrameworkVersion)">
<![CDATA[Installed OR (IGNOREPREREQUISITES = 1) OR WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED = 1]]>
</Condition>
<!-- If Win7, require RDP DTLS update (KB2574819) -->
<Condition Message="!(loc.Install_RDPDtlsRequirement)">
<![CDATA[Installed OR (IGNOREPREREQUISITES = 1) OR (VersionNT >= 602 OR VersionNT64 >= 602) OR ((VersionNT = 601 OR VersionNT64 = 601) AND (RDP_DTLS_UPDATE_INSTALLED = 1))]]>
</Condition>
<!-- If Win7, require RDP 8.0 update (KB2592687) -->
<Condition Message="!(loc.Install_RDP80Requirement)">
<![CDATA[Installed OR (IGNOREPREREQUISITES = 1) OR (VersionNT >= 602 OR VersionNT64 >= 602) OR ((VersionNT = 601 OR VersionNT64 = 601) AND (MINIMUM_RDP_VERSION_INSTALLED = 1))]]>

View File

@@ -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);
}
}
}

View File

@@ -0,0 +1,49 @@
using mRemoteNG.Connection;
using NUnit.Framework;
namespace mRemoteNGTests.Connection
{
public class DefaultConnectionInheritanceTests
{
[SetUp]
public void Setup()
{
DefaultConnectionInheritance.Instance.TurnOffInheritanceCompletely();
}
[Test]
public void LoadingDefaultInheritanceUpdatesAllProperties()
{
var inheritanceSource = new ConnectionInfoInheritance(new object(), true);
inheritanceSource.TurnOnInheritanceCompletely();
DefaultConnectionInheritance.Instance.LoadFrom(inheritanceSource);
Assert.That(DefaultConnectionInheritance.Instance.EverythingInherited, Is.True);
}
[Test]
public void SavingDefaultInheritanceExportsAllProperties()
{
var inheritanceDestination = new ConnectionInfoInheritance(new object(), true);
DefaultConnectionInheritance.Instance.AutomaticResize = true;
DefaultConnectionInheritance.Instance.SaveTo(inheritanceDestination);
Assert.That(inheritanceDestination.AutomaticResize, Is.True);
}
[Test]
public void NewInheritanceInstancesCreatedWithDefaultInheritanceValues()
{
DefaultConnectionInheritance.Instance.Domain = true;
var inheritanceInstance = new ConnectionInfoInheritance(new object());
Assert.That(inheritanceInstance.Domain, Is.True);
}
[Test]
public void NewInheritanceInstancesCreatedWithAllDefaultInheritanceValues()
{
DefaultConnectionInheritance.Instance.TurnOnInheritanceCompletely();
var inheritanceInstance = new ConnectionInfoInheritance(new object());
Assert.That(inheritanceInstance.EverythingInherited, Is.True);
}
}
}

View File

@@ -103,6 +103,7 @@
<Compile Include="App\LoggerTests.cs" />
<Compile Include="BinaryFileTests.cs" />
<Compile Include="Connection\ConnectionInfoInheritanceTests.cs" />
<Compile Include="Connection\DefaultConnectionInheritanceTests.cs" />
<Compile Include="ListViewTester.cs" />
<Compile Include="Config\Connections\SqlConnectionUpdateCheckerTests.cs" />
<Compile Include="Config\Connections\SqlUpdateQueryBuilderTest.cs" />

View File

@@ -42,8 +42,10 @@ Global
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|x86.Build.0 = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|x86.ActiveCfg = Debug|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug|x86.ActiveCfg = Debug|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug|x86.Build.0 = Debug|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Portable|x86.ActiveCfg = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|x86.ActiveCfg = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|x86.Build.0 = Release|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug Portable|x86.ActiveCfg = Debug Portable|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug|x86.ActiveCfg = Debug|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Portable|x86.ActiveCfg = Release Portable|x86

View File

@@ -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;
@@ -100,7 +99,7 @@ namespace mRemoteNG.App
Settings.Default.ConDefaultDomain = DefaultConnection.Domain;
Settings.Default.ConDefaultProtocol = DefaultConnection.Protocol.ToString();
Settings.Default.ConDefaultPuttySession = DefaultConnection.PuttySession;
Settings.Default.ConDefaultICAEncryptionStrength = DefaultConnection.ICAEncryption.ToString();
Settings.Default.ConDefaultICAEncryptionStrength = DefaultConnection.ICAEncryptionStrength.ToString();
Settings.Default.ConDefaultRDPAuthenticationLevel = DefaultConnection.RDPAuthenticationLevel.ToString();
Settings.Default.ConDefaultLoadBalanceInfo = DefaultConnection.LoadBalanceInfo;
Settings.Default.ConDefaultUseConsoleSession = DefaultConnection.UseConsoleSession;
@@ -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)
{

View File

@@ -48,6 +48,7 @@ namespace mRemoteNG.App
ParseCommandLineArgs();
IeBrowserEmulation.Register();
GetConnectionIcons();
DefaultConnectionInheritance.Instance.LoadFrom(Settings.Default, (a)=>"InhDefault"+a);
}

View File

@@ -313,7 +313,7 @@ namespace mRemoteNG.Config.Connections
_sqlQuery.CommandText += "\'" + Convert.ToString(with_1.Port) + "\',";
_sqlQuery.CommandText += "\'" + Convert.ToString(with_1.UseConsoleSession) + "\',";
_sqlQuery.CommandText += "\'" + with_1.RenderingEngine + "\',";
_sqlQuery.CommandText += "\'" + with_1.ICAEncryption + "\',";
_sqlQuery.CommandText += "\'" + with_1.ICAEncryptionStrength + "\',";
_sqlQuery.CommandText += "\'" + with_1.RDPAuthenticationLevel + "\',";
_sqlQuery.CommandText += "\'" + with_1.LoadBalanceInfo + "\',";
_sqlQuery.CommandText += "\'" + with_1.Colors + "\',";
@@ -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) + "\',";
@@ -724,7 +724,7 @@ namespace mRemoteNG.Config.Connections
_xmlTextWriter.WriteAttributeString("RenderingEngine", "", curConI.RenderingEngine.ToString());
_xmlTextWriter.WriteAttributeString("ICAEncryptionStrength", "", curConI.ICAEncryption.ToString());
_xmlTextWriter.WriteAttributeString("ICAEncryptionStrength", "", curConI.ICAEncryptionStrength.ToString());
_xmlTextWriter.WriteAttributeString("RDPAuthenticationLevel", "", curConI.RDPAuthenticationLevel.ToString());
@@ -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));
@@ -1035,11 +1035,11 @@ namespace mRemoteNG.Config.Connections
csvLn += con.Domain + ";";
}
csvLn += con.Hostname + ";" + con.Protocol + ";" + con.PuttySession + ";" + Convert.ToString(con.Port) + ";" + Convert.ToString(con.UseConsoleSession) + ";" + Convert.ToString(con.UseCredSsp) + ";" + con.RenderingEngine + ";" + con.ICAEncryption + ";" + con.RDPAuthenticationLevel + ";" + con.LoadBalanceInfo + ";" + con.Colors + ";" + con.Resolution + ";" + Convert.ToString(con.AutomaticResize) + ";" + Convert.ToString(con.DisplayWallpaper) + ";" + Convert.ToString(con.DisplayThemes) + ";" + Convert.ToString(con.EnableFontSmoothing) + ";" + Convert.ToString(con.EnableDesktopComposition) + ";" + Convert.ToString(con.CacheBitmaps) + ";" + Convert.ToString(con.RedirectDiskDrives) + ";" + Convert.ToString(con.RedirectPorts) + ";" + Convert.ToString(con.RedirectPrinters) + ";" + Convert.ToString(con.RedirectSmartCards) + ";" + con.RedirectSound + ";" + Convert.ToString(con.RedirectKeys) + ";" + con.PreExtApp + ";" + con.PostExtApp + ";" + con.MacAddress + ";" + con.UserField + ";" + con.ExtApp + ";" + con.VNCCompression + ";" + con.VNCEncoding + ";" + con.VNCAuthMode + ";" + con.VNCProxyType + ";" + con.VNCProxyIP + ";" + Convert.ToString(con.VNCProxyPort) + ";" + con.VNCProxyUsername + ";" + con.VNCProxyPassword + ";" + con.VNCColors + ";" + con.VNCSmartSizeMode + ";" + Convert.ToString(con.VNCViewOnly) + ";";
csvLn += con.Hostname + ";" + con.Protocol + ";" + con.PuttySession + ";" + Convert.ToString(con.Port) + ";" + Convert.ToString(con.UseConsoleSession) + ";" + Convert.ToString(con.UseCredSsp) + ";" + con.RenderingEngine + ";" + con.ICAEncryptionStrength + ";" + con.RDPAuthenticationLevel + ";" + con.LoadBalanceInfo + ";" + con.Colors + ";" + con.Resolution + ";" + Convert.ToString(con.AutomaticResize) + ";" + Convert.ToString(con.DisplayWallpaper) + ";" + Convert.ToString(con.DisplayThemes) + ";" + Convert.ToString(con.EnableFontSmoothing) + ";" + Convert.ToString(con.EnableDesktopComposition) + ";" + Convert.ToString(con.CacheBitmaps) + ";" + Convert.ToString(con.RedirectDiskDrives) + ";" + Convert.ToString(con.RedirectPorts) + ";" + Convert.ToString(con.RedirectPrinters) + ";" + Convert.ToString(con.RedirectSmartCards) + ";" + con.RedirectSound + ";" + Convert.ToString(con.RedirectKeys) + ";" + con.PreExtApp + ";" + con.PostExtApp + ";" + con.MacAddress + ";" + con.UserField + ";" + con.ExtApp + ";" + con.VNCCompression + ";" + con.VNCEncoding + ";" + con.VNCAuthMode + ";" + con.VNCProxyType + ";" + con.VNCProxyIP + ";" + Convert.ToString(con.VNCProxyPort) + ";" + con.VNCProxyUsername + ";" + con.VNCProxyPassword + ";" + con.VNCColors + ";" + con.VNCSmartSizeMode + ";" + Convert.ToString(con.VNCViewOnly) + ";";
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);
}

View File

@@ -352,8 +352,8 @@ 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.ICAEncryptionStrength = (ProtocolICA.EncryptionStrength)Tools.MiscTools.StringToEnum(typeof(ProtocolICA.EncryptionStrength), Convert.ToString(_sqlDataReader["ICAEncryptionStrength"]));
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"]);

View File

@@ -358,7 +358,9 @@ namespace mRemoteNG.Config.Connections
}
else
{
connectionInfo.Inheritance = new ConnectionInfoInheritance(connectionInfo, Convert.ToBoolean(xmlnode.Attributes["Inherit"].Value));
connectionInfo.Inheritance = new ConnectionInfoInheritance(connectionInfo);
if (Convert.ToBoolean(xmlnode.Attributes["Inherit"].Value))
connectionInfo.Inheritance.TurnOnInheritanceCompletely();
connectionInfo.Icon = Convert.ToString(xmlnode.Attributes["Icon"].Value.Replace(".ico", ""));
connectionInfo.Panel = Language.strGeneral;
}
@@ -370,8 +372,8 @@ 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.ICAEncryptionStrength = (ProtocolICA.EncryptionStrength)Tools.MiscTools.StringToEnum(typeof(ProtocolICA.EncryptionStrength), xmlnode.Attributes["ICAEncryptionStrength"].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);

View File

@@ -87,7 +87,8 @@ namespace mRemoteNG.Config.Import
var treeNode = ConnectionTreeNode.AddNode(TreeNodeType.Connection, displayName);
var connectionInfo = new ConnectionInfo();
var inheritanceInfo = new ConnectionInfoInheritance(connectionInfo, true);
var inheritanceInfo = new ConnectionInfoInheritance(connectionInfo);
inheritanceInfo.TurnOnInheritanceCompletely();
inheritanceInfo.Description = false;
if (parentTreeNode.Tag is ContainerInfo)
{

View File

@@ -77,7 +77,7 @@ namespace mRemoteNG.Config.Putty
sessionInfo.RootPuttySessionsInfo = provider.RootInfo;
sessionInfo.TreeNode = treeNode;
//sessionInfo.Inheritance.TurnOffInheritanceCompletely();
//sessionInfo.IInheritable.TurnOffInheritanceCompletely();
treeNode.Tag = sessionInfo;

View File

@@ -15,13 +15,12 @@ using mRemoteNG.Connection.Protocol.Rlogin;
using mRemoteNG.Container;
using mRemoteNG.Connection.Protocol;
using mRemoteNG.Messages;
using mRemoteNG.My;
namespace mRemoteNG.Connection
{
[DefaultProperty("Name")]
public partial class ConnectionInfo : Parent,Inheritance
public class ConnectionInfo : Parent,IInheritable
{
#region Private Properties
// Private properties with public get/set
@@ -71,22 +70,15 @@ namespace mRemoteNG.Connection
private ProtocolVNC.Encoding _vncEncoding;
private ProtocolVNC.AuthMode _vncAuthMode;
private ProtocolVNC.ProxyType _vncProxyType;
private string _vncProxyIP;
private string _vncProxyIp;
private int _vncProxyPort;
private string _vncProxyUsername;
private string _vncProxyPassword;
private ProtocolVNC.Colors _vncColors;
private ProtocolVNC.SmartSizeMode _vncSmartSizeMode;
private bool _vncViewOnly;
private ConnectionInfoInheritance _Inheritance;
private ProtocolList _OpenConnections;
private bool _IsContainer;
private bool _IsDefault;
private int _PositionID;
private bool _IsQuickConnect;
private bool _PleaseConnect;
private string _constantId;
#endregion
#endregion
#region Public Properties
#region Display
@@ -134,16 +126,8 @@ namespace mRemoteNG.Connection
public virtual string Hostname
{
get { return _hostname.Trim(); }
set
{
if (string.IsNullOrEmpty(value))
{
_hostname = string.Empty;
}
else
{
_hostname = value.Trim();
}
set {
_hostname = string.IsNullOrEmpty(value) ? string.Empty : value.Trim();
}
}
@@ -179,7 +163,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameProtocol"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionProtocol"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public virtual ProtocolType Protocol
{
get { return GetPropertyValue("Protocol", _protocol); }
@@ -189,7 +173,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameExternalTool"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionExternalTool"),
TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
TypeConverter(typeof(ExternalToolsTypeConverter))]
public string ExtApp
{
get { return GetPropertyValue("ExtApp", _extApp); }
@@ -218,17 +202,17 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameEncryptionStrength"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionEncryptionStrength"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
public ProtocolICA.EncryptionStrength ICAEncryption
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolICA.EncryptionStrength ICAEncryptionStrength
{
get { return GetPropertyValue("ICAEncryption", _icaEncryption); }
get { return GetPropertyValue("ICAEncryptionStrength", _icaEncryption); }
set { _icaEncryption = value; }
}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameUseConsoleSession"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionUseConsoleSession"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool UseConsoleSession
{
get { return GetPropertyValue("UseConsoleSession", _useConsoleSession); }
@@ -238,7 +222,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameAuthenticationLevel"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionAuthenticationLevel"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolRDP.AuthenticationLevel RDPAuthenticationLevel
{
get { return GetPropertyValue("RDPAuthenticationLevel", _rdpAuthenticationLevel); }
@@ -257,7 +241,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRenderingEngine"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRenderingEngine"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public HTTPBase.RenderingEngine RenderingEngine
{
get { return GetPropertyValue("RenderingEngine", _renderingEngine); }
@@ -267,7 +251,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 3),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameUseCredSsp"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionUseCredSsp"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool UseCredSsp
{
get { return GetPropertyValue("UseCredSsp", _useCredSsp); }
@@ -278,7 +262,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryGateway", 4),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDGatewayUsageMethod"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayUsageMethod"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolRDP.RDGatewayUsageMethod RDGatewayUsageMethod
{
get { return GetPropertyValue("RDGatewayUsageMethod", _rdGatewayUsageMethod); }
@@ -297,7 +281,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryGateway", 4),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRDGatewayUseConnectionCredentials"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayUseConnectionCredentials"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolRDP.RDGatewayUseConnectionCredentials RDGatewayUseConnectionCredentials
{
get { return GetPropertyValue("RDGatewayUseConnectionCredentials", _rdGatewayUseConnectionCredentials); }
@@ -336,7 +320,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameResolution"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionResolution"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolRDP.RDPResolutions Resolution
{
get { return GetPropertyValue("Resolution", _resolution); }
@@ -346,7 +330,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameAutomaticResize"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionAutomaticResize"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool AutomaticResize
{
get { return GetPropertyValue("AutomaticResize", _automaticResize); }
@@ -356,7 +340,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameColors"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionColors"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolRDP.RDPColors Colors
{
get { return GetPropertyValue("Colors", _colors); }
@@ -366,7 +350,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameCacheBitmaps"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionCacheBitmaps"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool CacheBitmaps
{
get { return GetPropertyValue("CacheBitmaps", _cacheBitmaps); }
@@ -376,7 +360,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameDisplayWallpaper"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionDisplayWallpaper"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool DisplayWallpaper
{
get { return GetPropertyValue("DisplayWallpaper", _displayWallpaper); }
@@ -386,7 +370,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameDisplayThemes"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionDisplayThemes"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool DisplayThemes
{
get { return GetPropertyValue("DisplayThemes", _displayThemes); }
@@ -396,7 +380,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameEnableFontSmoothing"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionEnableFontSmoothing"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool EnableFontSmoothing
{
get { return GetPropertyValue("EnableFontSmoothing", _enableFontSmoothing); }
@@ -406,7 +390,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameEnableDesktopComposition"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionEnableDesktopComposition"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool EnableDesktopComposition
{
get { return GetPropertyValue("EnableDesktopComposition", _enableDesktopComposition); }
@@ -417,7 +401,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectKeys"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectKeys"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RedirectKeys
{
get { return GetPropertyValue("RedirectKeys", _redirectKeys); }
@@ -427,7 +411,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectDrives"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectDrives"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RedirectDiskDrives
{
get { return GetPropertyValue("RedirectDiskDrives", _redirectDiskDrives); }
@@ -437,7 +421,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectPrinters"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectPrinters"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RedirectPrinters
{
get { return GetPropertyValue("RedirectPrinters", _redirectPrinters); }
@@ -447,7 +431,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectPorts"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectPorts"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RedirectPorts
{
get { return GetPropertyValue("RedirectPorts", _redirectPorts); }
@@ -457,7 +441,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectSmartCards"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectSmartCards"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RedirectSmartCards
{
get { return GetPropertyValue("RedirectSmartCards", _redirectSmartCards); }
@@ -467,7 +451,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 6),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameRedirectSounds"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectSounds"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolRDP.RDPSounds RedirectSound
{
get { return GetPropertyValue("RedirectSound", _redirectSound); }
@@ -478,7 +462,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 7),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameExternalToolBefore"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionExternalToolBefore"),
TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
TypeConverter(typeof(ExternalToolsTypeConverter))]
public virtual string PreExtApp
{
get { return GetPropertyValue("PreExtApp", _preExtApp); }
@@ -488,7 +472,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 7),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameExternalToolAfter"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionExternalToolAfter"),
TypeConverter(typeof(Tools.ExternalToolsTypeConverter))]
TypeConverter(typeof(ExternalToolsTypeConverter))]
public virtual string PostExtApp
{
get { return GetPropertyValue("PostExtApp", _postExtApp); }
@@ -518,7 +502,7 @@ namespace mRemoteNG.Connection
Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameCompression"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionCompression"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolVNC.Compression VNCCompression
{
get { return GetPropertyValue("VNCCompression", _vncCompression); }
@@ -529,7 +513,7 @@ namespace mRemoteNG.Connection
Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameEncoding"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionEncoding"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolVNC.Encoding VNCEncoding
{
get { return GetPropertyValue("VNCEncoding", _vncEncoding); }
@@ -540,7 +524,7 @@ namespace mRemoteNG.Connection
Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameAuthenticationMode"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionAuthenticationMode"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolVNC.AuthMode VNCAuthMode
{
get { return GetPropertyValue("VNCAuthMode", _vncAuthMode); }
@@ -551,7 +535,7 @@ namespace mRemoteNG.Connection
Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameVNCProxyType"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionVNCProxyType"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolVNC.ProxyType VNCProxyType
{
get { return GetPropertyValue("VNCProxyType", _vncProxyType); }
@@ -564,8 +548,8 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionVNCProxyAddress")]
public string VNCProxyIP
{
get { return GetPropertyValue("VNCProxyIP", _vncProxyIP); }
set { _vncProxyIP = value; }
get { return GetPropertyValue("VNCProxyIP", _vncProxyIp); }
set { _vncProxyIp = value; }
}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 7),
@@ -603,7 +587,7 @@ namespace mRemoteNG.Connection
Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameColors"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionColors"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolVNC.Colors VNCColors
{
get { return GetPropertyValue("VNCColors", _vncColors); }
@@ -613,7 +597,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameSmartSizeMode"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionSmartSizeMode"),
TypeConverter(typeof(Tools.MiscTools.EnumTypeConverter))]
TypeConverter(typeof(MiscTools.EnumTypeConverter))]
public ProtocolVNC.SmartSizeMode VNCSmartSizeMode
{
get { return GetPropertyValue("VNCSmartSizeMode", _vncSmartSizeMode); }
@@ -623,7 +607,7 @@ namespace mRemoteNG.Connection
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 5),
LocalizedAttributes.LocalizedDisplayName("strPropertyNameViewOnly"),
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionViewOnly"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool VNCViewOnly
{
get { return GetPropertyValue("VNCViewOnly", _vncViewOnly); }
@@ -632,67 +616,36 @@ namespace mRemoteNG.Connection
#endregion
#region Non-browsable public properties
[Browsable(false)]
public ConnectionInfoInheritance Inheritance
{
get { return _Inheritance; }
set { _Inheritance = value; }
}
[Browsable(false)]
public ProtocolList OpenConnections
{
get { return _OpenConnections; }
set { _OpenConnections = value; }
}
public ConnectionInfoInheritance Inheritance { get; set; }
[Browsable(false)]
public bool IsContainer
{
get { return _IsContainer; }
set { _IsContainer = value; }
}
[Browsable(false)]
public ProtocolList OpenConnections { get; set; }
[Browsable(false)]
public bool IsDefault
{
get { return _IsDefault; }
set { _IsDefault = value; }
}
[Browsable(false)]
public bool IsContainer { get; set; }
[Browsable(false)]
[Browsable(false)]
public bool IsDefault { get; set; }
[Browsable(false)]
public ContainerInfo Parent { get; set; }
[Browsable(false)]
public int PositionID
{
get { return _PositionID; }
set { _PositionID = value; }
}
public int PositionID { get; set; }
[Browsable(false)]
public string ConstantID
{
get { return _constantId; }
set { _constantId = value; }
}
[Browsable(false)]
public string ConstantID { get; set; }
[Browsable(false)]
[Browsable(false)]
public TreeNode TreeNode { get; set; }
[Browsable(false)]
public bool IsQuickConnect
{
get { return _IsQuickConnect; }
set { _IsQuickConnect = value; }
}
public bool IsQuickConnect { get; set; }
[Browsable(false)]
public bool PleaseConnect
{
get { return _PleaseConnect; }
set { _PleaseConnect = value; }
}
#endregion
[Browsable(false)]
public bool PleaseConnect { get; set; }
#endregion
#endregion
#region Constructors
@@ -702,11 +655,11 @@ namespace mRemoteNG.Connection
SetTreeDisplayDefaults();
SetConnectionDefaults();
SetProtocolDefaults();
SetRDGatewayDefaults();
SetRdGatewayDefaults();
SetAppearanceDefaults();
SetRedirectDefaults();
SetMiscDefaults();
SetVNCDefaults();
SetVncDefaults();
SetNonBrowsablePropertiesDefaults();
SetDefaults();
}
@@ -714,22 +667,22 @@ namespace mRemoteNG.Connection
public ConnectionInfo(ContainerInfo parent) : this()
{
IsContainer = true;
this.Parent = parent;
Parent = parent;
}
#endregion
#region Public Methods
public ConnectionInfo Copy()
{
ConnectionInfo newConnectionInfo = (ConnectionInfo)MemberwiseClone();
var newConnectionInfo = (ConnectionInfo)MemberwiseClone();
newConnectionInfo.ConstantID = MiscTools.CreateConstantID();
newConnectionInfo._OpenConnections = new ProtocolList();
newConnectionInfo.OpenConnections = new ProtocolList();
return newConnectionInfo;
}
public void SetDefaults()
{
if (this.Port == 0)
if (Port == 0)
{
SetDefaultPort();
}
@@ -742,7 +695,7 @@ namespace mRemoteNG.Connection
public void SetDefaultPort()
{
this.Port = GetDefaultPort();
Port = GetDefaultPort();
}
#endregion
@@ -763,13 +716,10 @@ namespace mRemoteNG.Connection
#region Private Methods
private TPropertyType GetPropertyValue<TPropertyType>(string propertyName, TPropertyType value)
{
if (ShouldThisPropertyBeInherited(propertyName))
return GetInheritedPropertyValue(propertyName, value);
else
return value;
return ShouldThisPropertyBeInherited(propertyName) ? GetInheritedPropertyValue<TPropertyType>(propertyName) : value;
}
private bool ShouldThisPropertyBeInherited(string propertyName)
private bool ShouldThisPropertyBeInherited(string propertyName)
{
return (ParentIsValidInheritanceTarget() && IsInheritanceTurnedOnForThisProperty(propertyName));
}
@@ -781,24 +731,18 @@ namespace mRemoteNG.Connection
private bool IsInheritanceTurnedOnForThisProperty(string propertyName)
{
bool inheritPropertyValue = false;
Type inheritType = _Inheritance.GetType();
PropertyInfo inheritPropertyInfo = inheritType.GetProperty(propertyName);
inheritPropertyValue = Convert.ToBoolean(inheritPropertyInfo.GetValue(Inheritance, BindingFlags.GetProperty, null, null, null));
var inheritType = Inheritance.GetType();
var inheritPropertyInfo = inheritType.GetProperty(propertyName);
var inheritPropertyValue = Convert.ToBoolean(inheritPropertyInfo.GetValue(Inheritance, null));
return inheritPropertyValue;
}
private TPropertyType GetInheritedPropertyValue<TPropertyType>(string propertyName, TPropertyType value)
private TPropertyType GetInheritedPropertyValue<TPropertyType>(string propertyName)
{
var parentConnectionInfo = default(ConnectionInfo);
if (IsContainer)
parentConnectionInfo = ((ContainerInfo)Parent.Parent).ConnectionInfo;
else
parentConnectionInfo = Parent.ConnectionInfo;
Type connectionInfoType = parentConnectionInfo.GetType();
PropertyInfo parentPropertyInfo = connectionInfoType.GetProperty(propertyName);
TPropertyType parentPropertyValue = (TPropertyType)parentPropertyInfo.GetValue(parentConnectionInfo, BindingFlags.GetProperty, null, null, null);
var parentConnectionInfo = IsContainer ? Parent.Parent.ConnectionInfo : Parent.ConnectionInfo;
var connectionInfoType = parentConnectionInfo.GetType();
var parentPropertyInfo = connectionInfoType.GetProperty(propertyName);
var parentPropertyValue = (TPropertyType)parentPropertyInfo.GetValue(parentConnectionInfo, null);
return parentPropertyValue;
}
@@ -844,98 +788,98 @@ namespace mRemoteNG.Connection
private void SetTreeDisplayDefaults()
{
_name = Language.strNewConnection;
_description = mRemoteNG.Settings.Default.ConDefaultDescription;
_icon = mRemoteNG.Settings.Default.ConDefaultIcon;
_description = Settings.Default.ConDefaultDescription;
_icon = Settings.Default.ConDefaultIcon;
_panel = Language.strGeneral;
}
private void SetConnectionDefaults()
{
_hostname = string.Empty;
_username = mRemoteNG.Settings.Default.ConDefaultUsername;
_password = mRemoteNG.Settings.Default.ConDefaultPassword;
_domain = mRemoteNG.Settings.Default.ConDefaultDomain;
_username = Settings.Default.ConDefaultUsername;
_password = Settings.Default.ConDefaultPassword;
_domain = Settings.Default.ConDefaultDomain;
}
private void SetProtocolDefaults()
{
_protocol = (ProtocolType)System.Enum.Parse(typeof(ProtocolType), mRemoteNG.Settings.Default.ConDefaultProtocol);
_extApp = mRemoteNG.Settings.Default.ConDefaultExtApp;
_protocol = (ProtocolType)Enum.Parse(typeof(ProtocolType), Settings.Default.ConDefaultProtocol);
_extApp = Settings.Default.ConDefaultExtApp;
_port = 0;
_puttySession = mRemoteNG.Settings.Default.ConDefaultPuttySession;
_icaEncryption = (ProtocolICA.EncryptionStrength) Enum.Parse(typeof(ProtocolICA.EncryptionStrength), mRemoteNG.Settings.Default.ConDefaultICAEncryptionStrength);
_useConsoleSession = mRemoteNG.Settings.Default.ConDefaultUseConsoleSession;
_rdpAuthenticationLevel = (ProtocolRDP.AuthenticationLevel) Enum.Parse(typeof(ProtocolRDP.AuthenticationLevel), mRemoteNG.Settings.Default.ConDefaultRDPAuthenticationLevel);
_loadBalanceInfo = mRemoteNG.Settings.Default.ConDefaultLoadBalanceInfo;
_renderingEngine = (HTTPBase.RenderingEngine) Enum.Parse(typeof(HTTPBase.RenderingEngine), mRemoteNG.Settings.Default.ConDefaultRenderingEngine);
_useCredSsp = mRemoteNG.Settings.Default.ConDefaultUseCredSsp;
_puttySession = Settings.Default.ConDefaultPuttySession;
_icaEncryption = (ProtocolICA.EncryptionStrength) Enum.Parse(typeof(ProtocolICA.EncryptionStrength), Settings.Default.ConDefaultICAEncryptionStrength);
_useConsoleSession = Settings.Default.ConDefaultUseConsoleSession;
_rdpAuthenticationLevel = (ProtocolRDP.AuthenticationLevel) Enum.Parse(typeof(ProtocolRDP.AuthenticationLevel), Settings.Default.ConDefaultRDPAuthenticationLevel);
_loadBalanceInfo = Settings.Default.ConDefaultLoadBalanceInfo;
_renderingEngine = (HTTPBase.RenderingEngine) Enum.Parse(typeof(HTTPBase.RenderingEngine), Settings.Default.ConDefaultRenderingEngine);
_useCredSsp = Settings.Default.ConDefaultUseCredSsp;
}
private void SetRDGatewayDefaults()
private void SetRdGatewayDefaults()
{
_rdGatewayUsageMethod = (ProtocolRDP.RDGatewayUsageMethod) Enum.Parse(typeof(ProtocolRDP.RDGatewayUsageMethod), mRemoteNG.Settings.Default.ConDefaultRDGatewayUsageMethod);
_rdGatewayHostname = mRemoteNG.Settings.Default.ConDefaultRDGatewayHostname;
_rdGatewayUseConnectionCredentials = (ProtocolRDP.RDGatewayUseConnectionCredentials) Enum.Parse(typeof(ProtocolRDP.RDGatewayUseConnectionCredentials), mRemoteNG.Settings.Default.ConDefaultRDGatewayUseConnectionCredentials); ;
_rdGatewayUsername = mRemoteNG.Settings.Default.ConDefaultRDGatewayUsername;
_rdGatewayPassword = mRemoteNG.Settings.Default.ConDefaultRDGatewayPassword;
_rdGatewayDomain = mRemoteNG.Settings.Default.ConDefaultRDGatewayDomain;
_rdGatewayUsageMethod = (ProtocolRDP.RDGatewayUsageMethod) Enum.Parse(typeof(ProtocolRDP.RDGatewayUsageMethod), Settings.Default.ConDefaultRDGatewayUsageMethod);
_rdGatewayHostname = Settings.Default.ConDefaultRDGatewayHostname;
_rdGatewayUseConnectionCredentials = (ProtocolRDP.RDGatewayUseConnectionCredentials) Enum.Parse(typeof(ProtocolRDP.RDGatewayUseConnectionCredentials), Settings.Default.ConDefaultRDGatewayUseConnectionCredentials); ;
_rdGatewayUsername = Settings.Default.ConDefaultRDGatewayUsername;
_rdGatewayPassword = Settings.Default.ConDefaultRDGatewayPassword;
_rdGatewayDomain = Settings.Default.ConDefaultRDGatewayDomain;
}
private void SetAppearanceDefaults()
{
_resolution = (ProtocolRDP.RDPResolutions) Enum.Parse(typeof(ProtocolRDP.RDPResolutions), mRemoteNG.Settings.Default.ConDefaultResolution);
_automaticResize = mRemoteNG.Settings.Default.ConDefaultAutomaticResize;
_colors = (ProtocolRDP.RDPColors) Enum.Parse(typeof(ProtocolRDP.RDPColors), mRemoteNG.Settings.Default.ConDefaultColors);
_cacheBitmaps = mRemoteNG.Settings.Default.ConDefaultCacheBitmaps;
_displayWallpaper = mRemoteNG.Settings.Default.ConDefaultDisplayWallpaper;
_displayThemes = mRemoteNG.Settings.Default.ConDefaultDisplayThemes;
_enableFontSmoothing = mRemoteNG.Settings.Default.ConDefaultEnableFontSmoothing;
_enableDesktopComposition = mRemoteNG.Settings.Default.ConDefaultEnableDesktopComposition;
_resolution = (ProtocolRDP.RDPResolutions) Enum.Parse(typeof(ProtocolRDP.RDPResolutions), Settings.Default.ConDefaultResolution);
_automaticResize = Settings.Default.ConDefaultAutomaticResize;
_colors = (ProtocolRDP.RDPColors) Enum.Parse(typeof(ProtocolRDP.RDPColors), Settings.Default.ConDefaultColors);
_cacheBitmaps = Settings.Default.ConDefaultCacheBitmaps;
_displayWallpaper = Settings.Default.ConDefaultDisplayWallpaper;
_displayThemes = Settings.Default.ConDefaultDisplayThemes;
_enableFontSmoothing = Settings.Default.ConDefaultEnableFontSmoothing;
_enableDesktopComposition = Settings.Default.ConDefaultEnableDesktopComposition;
}
private void SetRedirectDefaults()
{
_redirectKeys = mRemoteNG.Settings.Default.ConDefaultRedirectKeys;
_redirectDiskDrives = mRemoteNG.Settings.Default.ConDefaultRedirectDiskDrives;
_redirectPrinters = mRemoteNG.Settings.Default.ConDefaultRedirectPrinters;
_redirectPorts = mRemoteNG.Settings.Default.ConDefaultRedirectPorts;
_redirectSmartCards = mRemoteNG.Settings.Default.ConDefaultRedirectSmartCards;
_redirectSound = (ProtocolRDP.RDPSounds) Enum.Parse(typeof(ProtocolRDP.RDPSounds), mRemoteNG.Settings.Default.ConDefaultRedirectSound);
_redirectKeys = Settings.Default.ConDefaultRedirectKeys;
_redirectDiskDrives = Settings.Default.ConDefaultRedirectDiskDrives;
_redirectPrinters = Settings.Default.ConDefaultRedirectPrinters;
_redirectPorts = Settings.Default.ConDefaultRedirectPorts;
_redirectSmartCards = Settings.Default.ConDefaultRedirectSmartCards;
_redirectSound = (ProtocolRDP.RDPSounds) Enum.Parse(typeof(ProtocolRDP.RDPSounds), Settings.Default.ConDefaultRedirectSound);
}
private void SetMiscDefaults()
{
_constantId = MiscTools.CreateConstantID();
_preExtApp = mRemoteNG.Settings.Default.ConDefaultPreExtApp;
_postExtApp = mRemoteNG.Settings.Default.ConDefaultPostExtApp;
_macAddress = mRemoteNG.Settings.Default.ConDefaultMacAddress;
_userField = mRemoteNG.Settings.Default.ConDefaultUserField;
ConstantID = MiscTools.CreateConstantID();
_preExtApp = Settings.Default.ConDefaultPreExtApp;
_postExtApp = Settings.Default.ConDefaultPostExtApp;
_macAddress = Settings.Default.ConDefaultMacAddress;
_userField = Settings.Default.ConDefaultUserField;
}
private void SetVNCDefaults()
private void SetVncDefaults()
{
_vncCompression = (ProtocolVNC.Compression) Enum.Parse(typeof(ProtocolVNC.Compression), mRemoteNG.Settings.Default.ConDefaultVNCCompression);
_vncEncoding = (ProtocolVNC.Encoding) Enum.Parse(typeof(ProtocolVNC.Encoding), mRemoteNG.Settings.Default.ConDefaultVNCEncoding);
_vncAuthMode = (ProtocolVNC.AuthMode) Enum.Parse(typeof(ProtocolVNC.AuthMode), mRemoteNG.Settings.Default.ConDefaultVNCAuthMode);
_vncProxyType = (ProtocolVNC.ProxyType) Enum.Parse(typeof(ProtocolVNC.ProxyType), mRemoteNG.Settings.Default.ConDefaultVNCProxyType);
_vncProxyIP = mRemoteNG.Settings.Default.ConDefaultVNCProxyIP;
_vncProxyPort = mRemoteNG.Settings.Default.ConDefaultVNCProxyPort;
_vncProxyUsername = mRemoteNG.Settings.Default.ConDefaultVNCProxyUsername;
_vncProxyPassword = mRemoteNG.Settings.Default.ConDefaultVNCProxyPassword;
_vncColors = (ProtocolVNC.Colors) Enum.Parse(typeof(ProtocolVNC.Colors), mRemoteNG.Settings.Default.ConDefaultVNCColors);
_vncSmartSizeMode = (ProtocolVNC.SmartSizeMode) Enum.Parse(typeof(ProtocolVNC.SmartSizeMode), mRemoteNG.Settings.Default.ConDefaultVNCSmartSizeMode);
_vncViewOnly = mRemoteNG.Settings.Default.ConDefaultVNCViewOnly;
_vncCompression = (ProtocolVNC.Compression) Enum.Parse(typeof(ProtocolVNC.Compression), Settings.Default.ConDefaultVNCCompression);
_vncEncoding = (ProtocolVNC.Encoding) Enum.Parse(typeof(ProtocolVNC.Encoding), Settings.Default.ConDefaultVNCEncoding);
_vncAuthMode = (ProtocolVNC.AuthMode) Enum.Parse(typeof(ProtocolVNC.AuthMode), Settings.Default.ConDefaultVNCAuthMode);
_vncProxyType = (ProtocolVNC.ProxyType) Enum.Parse(typeof(ProtocolVNC.ProxyType), Settings.Default.ConDefaultVNCProxyType);
_vncProxyIp = Settings.Default.ConDefaultVNCProxyIP;
_vncProxyPort = Settings.Default.ConDefaultVNCProxyPort;
_vncProxyUsername = Settings.Default.ConDefaultVNCProxyUsername;
_vncProxyPassword = Settings.Default.ConDefaultVNCProxyPassword;
_vncColors = (ProtocolVNC.Colors) Enum.Parse(typeof(ProtocolVNC.Colors), Settings.Default.ConDefaultVNCColors);
_vncSmartSizeMode = (ProtocolVNC.SmartSizeMode) Enum.Parse(typeof(ProtocolVNC.SmartSizeMode), Settings.Default.ConDefaultVNCSmartSizeMode);
_vncViewOnly = Settings.Default.ConDefaultVNCViewOnly;
}
private void SetNonBrowsablePropertiesDefaults()
{
_Inheritance = new ConnectionInfoInheritance(this);
_OpenConnections = new ProtocolList();
_IsContainer = false;
_IsDefault = false;
_PositionID = 0;
_IsQuickConnect = false;
_PleaseConnect = false;
Inheritance = new ConnectionInfoInheritance(this);
OpenConnections = new ProtocolList();
IsContainer = false;
IsDefault = false;
PositionID = 0;
IsQuickConnect = false;
PleaseConnect = false;
}
#endregion
}

View File

@@ -1,333 +1,310 @@
using System.Collections.Generic;
using mRemoteNG.Tools;
using System;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
namespace mRemoteNG.Connection
{
public class ConnectionInfoInheritance
{
private ConnectionInfoInheritance _tempInheritanceStorage = null;
private ConnectionInfoInheritance _tempInheritanceStorage;
#region Public Properties
#region General
[LocalizedAttributes.LocalizedCategory("strCategoryGeneral", 1),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAll"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionAll"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool EverythingInherited
{
get
{
if (CacheBitmaps && Colors && Description && DisplayThemes && DisplayWallpaper
&& EnableFontSmoothing && EnableDesktopComposition && Domain && Icon && Password
&& Port && Protocol && PuttySession && RedirectDiskDrives && RedirectKeys
&& RedirectPorts && RedirectPrinters && RedirectSmartCards && RedirectSound && Resolution
&& AutomaticResize && UseConsoleSession && UseCredSsp && RenderingEngine && UserField
&& ExtApp && Username && Panel && ICAEncryption && RDPAuthenticationLevel
&& LoadBalanceInfo && PreExtApp && PostExtApp && MacAddress && VNCAuthMode
&& VNCColors && VNCCompression && VNCEncoding && VNCProxyIP && VNCProxyPassword
&& VNCProxyPort && VNCProxyType && VNCProxyUsername)
{
return true;
}
else
{
return false;
}
}
set
{
SetAllValues(value);
}
get { return EverythingIsInherited(); }
set { SetAllValues(value); }
}
#endregion
#region Display
[LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 2),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameDescription"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionDescription"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Description {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Description {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 2),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameIcon"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionIcon"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Icon {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Icon {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryDisplay", 2),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNamePanel"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionPanel"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Panel {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Panel {get; set;}
#endregion
#region Connection
[LocalizedAttributes.LocalizedCategory("strCategoryConnection", 3),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameUsername"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionUsername"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Username {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Username {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryConnection", 3),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNamePassword"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionPassword"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Password {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Password {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryConnection", 3),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameDomain"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionDomain"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Domain {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Domain {get; set;}
#endregion
#region Protocol
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameProtocol"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionProtocol"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Protocol {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Protocol {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameExternalTool"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalTool"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool ExtApp {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool ExtApp {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNamePort"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionPort"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Port {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Port {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNamePuttySession"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionPuttySession"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool PuttySession {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool PuttySession {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEncryptionStrength"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEncryptionStrength"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool ICAEncryption {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool ICAEncryptionStrength {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAuthenticationLevel"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionAuthenticationLevel"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool RDPAuthenticationLevel {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RDPAuthenticationLevel {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameLoadBalanceInfo"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionLoadBalanceInfo"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool LoadBalanceInfo {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool LoadBalanceInfo {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRenderingEngine"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRenderingEngine"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool RenderingEngine {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RenderingEngine {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameUseConsoleSession"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionUseConsoleSession"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool UseConsoleSession {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool UseConsoleSession {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryProtocol", 4),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameUseCredSsp"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionUseCredSsp"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool UseCredSsp {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool UseCredSsp {get; set;}
#endregion
#region RD Gateway
[LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUsageMethod"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUsageMethod"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RDGatewayUsageMethod {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayHostname"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayHostname"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RDGatewayHostname {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUseConnectionCredentials"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUseConnectionCredentials"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RDGatewayUseConnectionCredentials {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayUsername"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayUsername"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RDGatewayUsername {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayPassword"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayPassword"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RDGatewayPassword {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryGateway", 5),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRDGatewayDomain"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRDGatewayDomain"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]
public bool RDGatewayDomain {get; set;}
#endregion
#region Appearance
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameResolution"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionResolution"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Resolution {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Resolution {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAutomaticResize"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionAutomaticResize"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool AutomaticResize {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool AutomaticResize {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameColors"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionColors"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool Colors {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool Colors {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameCacheBitmaps"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionCacheBitmaps"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool CacheBitmaps {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool CacheBitmaps {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameDisplayWallpaper"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionDisplayWallpaper"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool DisplayWallpaper {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool DisplayWallpaper {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameDisplayThemes"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionDisplayThemes"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool DisplayThemes {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool DisplayThemes {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEnableFontSmoothing"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEnableFontSmoothing"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool EnableFontSmoothing {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool EnableFontSmoothing {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 6),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEnableDesktopComposition"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEnableEnableDesktopComposition"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool EnableDesktopComposition {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool EnableDesktopComposition {get; set;}
#endregion
#region Redirect
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectKeys"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectKeys"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool RedirectKeys {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RedirectKeys {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectDrives"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectDrives"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool RedirectDiskDrives {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RedirectDiskDrives {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectPrinters"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectPrinters"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool RedirectPrinters {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RedirectPrinters {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectPorts"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectPorts"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool RedirectPorts {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RedirectPorts {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectSmartCards"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectSmartCards"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool RedirectSmartCards {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RedirectSmartCards {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryRedirect", 7),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameRedirectSounds"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionRedirectSounds"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool RedirectSound {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool RedirectSound {get; set;}
#endregion
#region Misc
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 8),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameExternalToolBefore"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalToolBefore"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool PreExtApp {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool PreExtApp {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 8),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameExternalToolAfter"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionExternalToolAfter"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool PostExtApp {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool PostExtApp {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 8),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameMACAddress"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionMACAddress"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool MacAddress {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool MacAddress {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 8),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameUser1"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionUser1"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool UserField {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool UserField {get; set;}
#endregion
#region VNC
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameCompression"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionCompression"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCCompression {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCCompression {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameEncoding"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionEncoding"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCEncoding {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCEncoding {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryConnection", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameAuthenticationMode"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionAuthenticationMode"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCAuthMode {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCAuthMode {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyType"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyType"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCProxyType {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCProxyType {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyAddress"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyAddress"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCProxyIP {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCProxyIP {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyPort"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyPort"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCProxyPort {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCProxyPort {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyUsername"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyUsername"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCProxyUsername {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCProxyUsername {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryMiscellaneous", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameVNCProxyPassword"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionVNCProxyPassword"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCProxyPassword {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCProxyPassword {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameColors"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionColors"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCColors {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCColors {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameSmartSizeMode"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionSmartSizeMode"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCSmartSizeMode {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCSmartSizeMode {get; set;}
[LocalizedAttributes.LocalizedCategory("strCategoryAppearance", 9),
LocalizedAttributes.LocalizedDisplayNameInheritAttribute("strPropertyNameViewOnly"),
LocalizedAttributes.LocalizedDescriptionInheritAttribute("strPropertyDescriptionViewOnly"),
TypeConverter(typeof(Tools.MiscTools.YesNoTypeConverter))]public bool VNCViewOnly {get; set;}
TypeConverter(typeof(MiscTools.YesNoTypeConverter))]public bool VNCViewOnly {get; set;}
#endregion
[Browsable(false)]
public object Parent {get; set;}
[Browsable(false)]
public bool IsDefault {get; set;}
#endregion
public ConnectionInfoInheritance(object parent, bool inheritEverything = false)
public ConnectionInfoInheritance(object parent, bool ignoreDefaultInheritance = false)
{
Parent = parent;
if (inheritEverything)
TurnOnInheritanceCompletely();
if (!ignoreDefaultInheritance)
SetAllValues(DefaultConnectionInheritance.Instance);
}
public ConnectionInfoInheritance Copy()
{
return (ConnectionInfoInheritance)MemberwiseClone();
@@ -366,26 +343,44 @@ namespace mRemoteNG.Connection
SetAllValues(false);
}
private bool EverythingIsInherited()
{
var inheritanceProperties = GetProperties();
var everythingInherited = inheritanceProperties.All((p) => (bool)p.GetValue(this, null));
return everythingInherited;
}
public IEnumerable<PropertyInfo> 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)
{
var properties = typeof(ConnectionInfoInheritance).GetProperties();
var properties = GetProperties();
foreach (var property in properties)
{
if (property.PropertyType.Name == typeof(Boolean).Name && property.Name != "EverythingInherited" && property.Name != "IsDefault")
if (property.PropertyType.Name == typeof(bool).Name)
property.SetValue(this, value, null);
}
}
private void SetAllValues(ConnectionInfoInheritance otherInheritanceObject)
protected void SetAllValues(ConnectionInfoInheritance otherInheritanceObject)
{
var properties = typeof(ConnectionInfoInheritance).GetProperties();
var properties = GetProperties();
foreach (var property in properties)
{
if (property.Name != "EverythingInherited")
{
var newPropertyValue = property.GetValue(otherInheritanceObject, null);
property.SetValue(this, newPropertyValue, null);
}
var newPropertyValue = property.GetValue(otherInheritanceObject, null);
property.SetValue(this, newPropertyValue, null);
}
}
}

View File

@@ -0,0 +1,42 @@
using System;
namespace mRemoteNG.Connection
{
public class DefaultConnectionInheritance : ConnectionInfoInheritance
{
public static DefaultConnectionInheritance Instance { get; } = new DefaultConnectionInheritance();
private DefaultConnectionInheritance() : base(null, true)
{
}
static DefaultConnectionInheritance()
{ }
public void LoadFrom<TSource>(TSource sourceInstance, Func<string,string> propertyNameMutator = null)
{
if (propertyNameMutator == null) propertyNameMutator = (a) => a;
var inheritanceProperties = GetProperties();
foreach (var property in inheritanceProperties)
{
var propertyFromSettings = typeof(TSource).GetProperty(propertyNameMutator(property.Name));
var valueFromSettings = propertyFromSettings.GetValue(sourceInstance, null);
property.SetValue(Instance, valueFromSettings, null);
}
}
public void SaveTo<TDestination>(TDestination destinationInstance, Func<string, string> propertyNameMutator = null)
{
if (propertyNameMutator == null) propertyNameMutator = (a) => a;
var inheritanceProperties = GetProperties();
foreach (var property in inheritanceProperties)
{
var propertyFromSettings = typeof(TDestination).GetProperty(propertyNameMutator(property.Name));
var localValue = property.GetValue(Instance, null);
propertyFromSettings.SetValue(destinationInstance, localValue, null);
}
}
}
}

View File

@@ -1,6 +1,6 @@
namespace mRemoteNG.Connection
{
public interface Inheritance
public interface IInheritable
{
ConnectionInfoInheritance Inheritance { get; set; }
}

View File

@@ -265,7 +265,7 @@ namespace mRemoteNG.Connection.Protocol.ICA
private void SetSecurity()
{
switch (_Info.ICAEncryption)
switch (_Info.ICAEncryptionStrength)
{
case EncryptionStrength.Encr128BitLogonOnly:
_ICAClient.Encrypt = true;

View File

@@ -133,12 +133,12 @@ namespace mRemoteNG.Connection.Protocol.RDP
//not user changeable
_rdpClient.AdvancedSettings2.GrabFocusOnConnect = true;
_rdpClient.AdvancedSettings3.EnableAutoReconnect = true;
_rdpClient.AdvancedSettings3.MaxReconnectAttempts = Convert.ToInt32(Settings.Default.RdpReconnectionCount);
_rdpClient.AdvancedSettings3.MaxReconnectAttempts = Settings.Default.RdpReconnectionCount;
_rdpClient.AdvancedSettings2.keepAliveInterval = 60000; //in milliseconds (10.000 = 10 seconds)
_rdpClient.AdvancedSettings5.AuthenticationLevel = 0;
_rdpClient.AdvancedSettings2.EncryptionEnabled = 1;
_rdpClient.AdvancedSettings2.overallConnectionTimeout = 20;
_rdpClient.AdvancedSettings2.overallConnectionTimeout = Settings.Default.ConRDPOverallConnectionTimeout;
_rdpClient.AdvancedSettings2.BitmapPeristence = Convert.ToInt32(_connectionInfo.CacheBitmaps);
if (_rdpVersion >= Versions.RDC61)

View File

@@ -6,7 +6,7 @@ using System.Windows.Forms;
namespace mRemoteNG.Container
{
[DefaultProperty("Name")]
public class ContainerInfo : Parent,Inheritance
public class ContainerInfo : Parent,IInheritable
{
private TreeNode _TreeNode;
private ContainerInfo _Parent;

View File

@@ -2295,5 +2295,17 @@ namespace mRemoteNG {
this["ShowCompleteConsPathInTitle"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("20")]
public int ConRDPOverallConnectionTimeout {
get {
return ((int)(this["ConRDPOverallConnectionTimeout"]));
}
set {
this["ConRDPOverallConnectionTimeout"] = value;
}
}
}
}

View File

@@ -572,5 +572,8 @@
<Setting Name="ShowCompleteConsPathInTitle" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConRDPOverallConnectionTimeout" Type="System.Int32" Scope="User">
<Value Profile="(Default)">20</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -97,7 +97,7 @@
do this by simply double-clicking the tab labeled &quot;test&quot; or just close the whole
&quot;General&quot; panel by clicking the small &quot;x&quot; in the upper right corner.</p>
<p>
<span class="heading1">Folders and Inheritance</span></p>
<span class="heading1">Folders and IInheritable</span></p>
<p>
Folders in mRemote cannot only be used to categorize connections but also to
apply properties to the underlying connections.</p>

View File

@@ -20,7 +20,7 @@
Panels and tabs allow to group certain connections together, dock them to any side of the window or completely undock them and move them to another screen for example<br />
Multiple supported protocols (RDP, VNC, ICA, SSH, Telnet, RAW, Rlogin and HTTP/S)<br />
Easy to organize and maintain list of connections<br />
Inheritance makes it possible to store properties on folder basis and let the underlying connections inherit this info<br />
IInheritable makes it possible to store properties on folder basis and let the underlying connections inherit this info<br />
Support for importing connections from Active Directory<br />
Allows creating nested containers (folders) to categorize connections<br />
&quot;Quick Connect&quot; feature to quickly open a connection without creating an entry<br />

View File

@@ -313,7 +313,7 @@ namespace mRemoteNG {
}
/// <summary>
/// Looks up a localized string similar to Default Inheritance.
/// Looks up a localized string similar to Default IInheritable.
/// </summary>
internal static string strButtonDefaultInheritance {
get {
@@ -358,7 +358,7 @@ namespace mRemoteNG {
}
/// <summary>
/// Looks up a localized string similar to Inheritance.
/// Looks up a localized string similar to IInheritable.
/// </summary>
internal static string strButtonInheritance {
get {
@@ -734,7 +734,7 @@ namespace mRemoteNG {
}
/// <summary>
/// Looks up a localized string similar to Inheritance.
/// Looks up a localized string similar to IInheritable.
/// </summary>
internal static string strCheckboxInheritance {
get {
@@ -5307,6 +5307,15 @@ namespace mRemoteNG {
}
}
/// <summary>
/// Looks up a localized string similar to RDP Connection Timeout.
/// </summary>
internal static string strRDPOverallConnectionTimeout {
get {
return ResourceManager.GetString("strRDPOverallConnectionTimeout", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to RDP reconnection count:.
/// </summary>

View File

@@ -203,7 +203,7 @@
<value>閉じる(&amp;C)</value>
</data>
<data name="strButtonDefaultInheritance" xml:space="preserve">
<value>Default Inheritance</value>
<value>Default IInheritable</value>
</data>
<data name="strButtonDefaultProperties" xml:space="preserve">
<value>デフォルトのプロパティ</value>
@@ -218,7 +218,7 @@
<value>インポート(&amp;I)</value>
</data>
<data name="strButtonInheritance" xml:space="preserve">
<value>Inheritance</value>
<value>IInheritable</value>
</data>
<data name="strButtonLaunch" xml:space="preserve">
<value>立ち上げる(&amp;L)</value>
@@ -358,7 +358,7 @@ VncSharpNG Control Version {0}</value>
<value>このメッセージを再び表示しない</value>
</data>
<data name="strCheckboxInheritance" xml:space="preserve">
<value>Inheritance</value>
<value>IInheritable</value>
</data>
<data name="strCheckboxPassword" xml:space="preserve">
<value>パスワード</value>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -202,7 +202,7 @@
<value>&amp;Close</value>
</data>
<data name="strButtonDefaultInheritance" xml:space="preserve">
<value>Default Inheritance</value>
<value>Default IInheritable</value>
</data>
<data name="strButtonDefaultProperties" xml:space="preserve">
<value>Default Properties</value>
@@ -217,7 +217,7 @@
<value>&amp;Import</value>
</data>
<data name="strButtonInheritance" xml:space="preserve">
<value>Inheritance</value>
<value>IInheritable</value>
</data>
<data name="strButtonLaunch" xml:space="preserve">
<value>&amp;Launch</value>
@@ -354,7 +354,7 @@ VncSharpNG Control Version {0}</value>
<value>Do not show this message again.</value>
</data>
<data name="strCheckboxInheritance" xml:space="preserve">
<value>Inheritance</value>
<value>IInheritable</value>
</data>
<data name="strCheckboxPassword" xml:space="preserve">
<value>Password</value>
@@ -2381,4 +2381,7 @@ mRemoteNG will now quit and begin with the installation.</value>
<data name="strMenuReconnectAll" xml:space="preserve">
<value>Reconnect All Open Connections</value>
</data>
<data name="strRDPOverallConnectionTimeout" xml:space="preserve">
<value>RDP Connection Timeout</value>
</data>
</root>

View File

@@ -1,4 +1,3 @@
using mRemoteNG.My;
using mRemoteNG.Tools;
using System;
using System.ComponentModel;
@@ -79,12 +78,10 @@ namespace mRemoteNG.Themes
}
Type themeInfoType = (new ThemeInfo()).GetType();
object myProperty = null;
object otherProperty = null;
foreach (System.Reflection.PropertyInfo propertyInfo in themeInfoType.GetProperties())
foreach (System.Reflection.PropertyInfo propertyInfo in themeInfoType.GetProperties())
{
myProperty = propertyInfo.GetValue(this, null);
otherProperty = propertyInfo.GetValue(otherTheme, null);
var myProperty = propertyInfo.GetValue(this, null);
var otherProperty = propertyInfo.GetValue(otherTheme, null);
if (!myProperty.Equals(otherProperty))
{
return false;
@@ -93,17 +90,23 @@ namespace mRemoteNG.Themes
return true;
}
// just fixing a complier warning. We don't use us so returning this value shouldn't be an issue at all.
public override int GetHashCode()
{
return Name.GetHashCode();
}
#endregion
#region Events
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if
(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
#endregion
#region Properties
[Browsable(false)]
@@ -122,7 +125,7 @@ namespace mRemoteNG.Themes
}
#region General
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1),
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral"),
LocalizedAttributes.LocalizedDisplayName("strThemeNameWindowBackgroundColor"),
LocalizedAttributes.LocalizedDescription("strThemeDescriptionWindowBackgroundColor")]
public Color WindowBackgroundColor
@@ -139,7 +142,7 @@ namespace mRemoteNG.Themes
}
}
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1), Browsable(false),
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral"), Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strThemeNameMenuBackgroundColor"),
LocalizedAttributes.LocalizedDescription("strThemeDescriptionMenuBackgroundColor")]
public Color MenuBackgroundColor
@@ -156,7 +159,7 @@ namespace mRemoteNG.Themes
}
}
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1), Browsable(false),
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral"), Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strThemeNameMenuTextColor"),
LocalizedAttributes.LocalizedDescription("strThemeDescriptionMenuTextColor")]
public Color MenuTextColor
@@ -173,7 +176,7 @@ namespace mRemoteNG.Themes
}
}
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1),
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral"),
Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strThemeNameToolbarBackgroundColor"),
LocalizedAttributes.LocalizedDescription("strThemeDescriptionToolbarBackgroundColor")]
@@ -191,7 +194,7 @@ namespace mRemoteNG.Themes
}
}
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral", 1), Browsable(false),
[LocalizedAttributes.LocalizedCategory("strThemeCategoryGeneral"), Browsable(false),
LocalizedAttributes.LocalizedDisplayName("strThemeNameToolbarTextColor"),
LocalizedAttributes.LocalizedDescription("strThemeDescriptionToolbarTextColor")]
public Color ToolbarTextColor

View File

@@ -4,7 +4,6 @@ using System.Drawing;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security;
using System.Windows.Forms;
using mRemoteNG.App;
@@ -18,24 +17,6 @@ namespace mRemoteNG.Tools
{
public class MiscTools
{
private struct SHFILEINFO
{
public IntPtr hIcon; // : icon
//public int iIcon; // : icondex
//public int dwAttributes; // : SFGAO_ flags
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
}
[DllImport("shell32.dll")]
private static extern IntPtr SHGetFileInfo(string pszPath, int dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, int uFlags);
private const int SHGFI_ICON = 0x100;
private const int SHGFI_SMALLICON = 0x1;
//Private Const SHGFI_LARGEICON = &H0 ' Large icon
public static Icon GetIconFromFile(string FileName)
{
try
@@ -56,10 +37,6 @@ namespace mRemoteNG.Tools
}
}
public static SecureString PasswordDialog(string passwordName = null, bool verify = true)
{
PasswordForm passwordForm = new PasswordForm(passwordName, verify);
@@ -177,15 +154,11 @@ namespace mRemoteNG.Tools
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destType)
{
if (value != null)
{
FieldInfo fi = _enumType.GetField(Enum.GetName(_enumType, value: value));
DescriptionAttribute dna = (DescriptionAttribute) (Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)));
if (value == null) return null;
FieldInfo fi = _enumType.GetField(Enum.GetName(_enumType, value: value));
DescriptionAttribute dna = (DescriptionAttribute) (Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)));
return dna != null ? dna.Description : value.ToString();
}
return null;
return dna != null ? dna.Description : value.ToString();
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type srcType)
@@ -195,7 +168,7 @@ namespace mRemoteNG.Tools
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
foreach (FieldInfo fi in _enumType.GetFields())
foreach (FieldInfo fi in _enumType.GetFields())
{
DescriptionAttribute dna = (DescriptionAttribute) (Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)));
@@ -204,8 +177,8 @@ namespace mRemoteNG.Tools
return Enum.Parse(_enumType, fi.Name);
}
}
return Enum.Parse(_enumType, (string) value);
return value != null ? Enum.Parse(_enumType, (string) value) : null;
}
}
@@ -256,7 +229,7 @@ namespace mRemoteNG.Tools
{
if (destinationType == typeof(string))
{
return ((Convert.ToBoolean(value)) ? Language.strYes : Language.strNo);
return Convert.ToBoolean(value) ? Language.strYes : Language.strNo;
}
return base.ConvertTo(context, culture, value, destinationType);

View File

@@ -0,0 +1,121 @@
using System;
using System.IO;
using mRemoteNG.App;
using Renci.SshNet;
using Renci.SshNet.Sftp;
using static System.IO.FileMode;
namespace mRemoteNG.Tools
{
class SecureTransfer
{
private readonly string Host;
private readonly string User;
private readonly string Password;
private readonly int Port;
public readonly SSHTransferProtocol Protocol;
public string SrcFile;
public string DstFile;
public ScpClient ScpClt;
public SftpClient SftpClt;
public SftpUploadAsyncResult asyncResult;
public AsyncCallback asyncCallback;
public SecureTransfer()
{
}
public SecureTransfer(string host, string user, string pass, int port, SSHTransferProtocol protocol)
{
Host = host;
User = user;
Password = pass;
Port = port;
Protocol = protocol;
}
public SecureTransfer(string host, string user, string pass, int port, SSHTransferProtocol protocol, string source, string dest)
{
Host = host;
User = user;
Password = pass;
Port = port;
Protocol = protocol;
SrcFile = source;
DstFile = dest;
}
public void Connect()
{
if(Protocol == SSHTransferProtocol.SCP)
{
ScpClt = new ScpClient(Host, Port, User, Password);
ScpClt.Connect();
}
if (Protocol == SSHTransferProtocol.SFTP)
{
SftpClt = new SftpClient(Host, Port, User, Password);
SftpClt.Connect();
}
}
public void Disconnect()
{
if (Protocol == SSHTransferProtocol.SCP)
{
ScpClt.Disconnect();
}
if (Protocol == SSHTransferProtocol.SFTP)
{
SftpClt.Disconnect();
}
}
public void Dispose()
{
if (Protocol == SSHTransferProtocol.SCP)
{
ScpClt.Dispose();
}
if (Protocol == SSHTransferProtocol.SFTP)
{
SftpClt.Dispose();
}
}
public void Upload()
{
if (Protocol == SSHTransferProtocol.SCP)
{
if (!ScpClt.IsConnected)
{
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strSSHTransferFailed + Environment.NewLine + "SCP Not Connected!");
return;
}
ScpClt.Upload(new FileInfo(SrcFile), $"{DstFile}/{Path.GetFileName(SrcFile)}");
}
if (Protocol == SSHTransferProtocol.SFTP)
{
if (!SftpClt.IsConnected)
{
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, Language.strSSHTransferFailed + Environment.NewLine + "SFTP Not Connected!");
return;
}
asyncResult = (SftpUploadAsyncResult)SftpClt.BeginUploadFile(new FileStream(SrcFile, Open), $"{DstFile}/{Path.GetFileName(SrcFile)}", asyncCallback);
}
}
public enum SSHTransferProtocol
{
SCP = 0,
SFTP = 1
}
}
}

View File

@@ -67,7 +67,7 @@ namespace mRemoteNG.Tree
if (ConnectionTreeNode.GetNodeType(_nodeBeingMoved.Parent) == TreeNodeType.Container)
{
((Parent)_nodeBeingMoved.Tag).Parent = (ContainerInfo)_nodeBeingMoved.Parent.Tag;
((Inheritance)_nodeBeingMoved.Tag).Inheritance.EnableInheritance();
((IInheritable)_nodeBeingMoved.Tag).Inheritance.EnableInheritance();
}
}
@@ -76,7 +76,7 @@ namespace mRemoteNG.Tree
if (ConnectionTreeNode.GetNodeType(_nodeBeingMoved.Parent) == TreeNodeType.Root)
{
((Parent)_nodeBeingMoved.Tag).Parent = null;
((Inheritance)_nodeBeingMoved.Tag).Inheritance.DisableInheritance();
((IInheritable)_nodeBeingMoved.Tag).Inheritance.DisableInheritance();
}
}

View File

@@ -110,7 +110,7 @@ namespace mRemoteNG.Forms
this.chkInheritance.Name = "chkInheritance";
this.chkInheritance.Size = new System.Drawing.Size(79, 17);
this.chkInheritance.TabIndex = 3;
this.chkInheritance.Text = "Inheritance";
this.chkInheritance.Text = "IInheritable";
this.chkInheritance.UseVisualStyleBackColor = true;
//
// txtFileName

View File

@@ -30,349 +30,398 @@ namespace mRemoteNG.UI.Forms.OptionsPages
//Do not modify it using the code editor.
[System.Diagnostics.DebuggerStepThrough()]private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConnectionsPage));
this.pnlRdpReconnectionCount = new System.Windows.Forms.Panel();
this.lblRdpReconnectionCount = new System.Windows.Forms.Label();
this.numRdpReconnectionCount = new System.Windows.Forms.NumericUpDown();
this.chkSingleClickOnConnectionOpensIt = new System.Windows.Forms.CheckBox();
this.chkHostnameLikeDisplayName = new System.Windows.Forms.CheckBox();
this.pnlDefaultCredentials = new System.Windows.Forms.Panel();
this.radCredentialsCustom = new System.Windows.Forms.RadioButton();
this.radCredentialsCustom.CheckedChanged += new System.EventHandler(this.radCredentialsCustom_CheckedChanged);
this.lblDefaultCredentials = new System.Windows.Forms.Label();
this.radCredentialsNoInfo = new System.Windows.Forms.RadioButton();
this.radCredentialsWindows = new System.Windows.Forms.RadioButton();
this.txtCredentialsDomain = new System.Windows.Forms.TextBox();
this.lblCredentialsUsername = new System.Windows.Forms.Label();
this.txtCredentialsPassword = new System.Windows.Forms.TextBox();
this.lblCredentialsPassword = new System.Windows.Forms.Label();
this.txtCredentialsUsername = new System.Windows.Forms.TextBox();
this.lblCredentialsDomain = new System.Windows.Forms.Label();
this.chkSingleClickOnOpenedConnectionSwitchesToIt = new System.Windows.Forms.CheckBox();
this.pnlAutoSave = new System.Windows.Forms.Panel();
this.lblAutoSave1 = new System.Windows.Forms.Label();
this.numAutoSave = new System.Windows.Forms.NumericUpDown();
this.lblAutoSave2 = new System.Windows.Forms.Label();
this.pnlConfirmCloseConnection = new System.Windows.Forms.Panel();
this.lblClosingConnections = new System.Windows.Forms.Label();
this.radCloseWarnAll = new System.Windows.Forms.RadioButton();
this.radCloseWarnMultiple = new System.Windows.Forms.RadioButton();
this.radCloseWarnExit = new System.Windows.Forms.RadioButton();
this.radCloseWarnNever = new System.Windows.Forms.RadioButton();
this.pnlRdpReconnectionCount.SuspendLayout();
((System.ComponentModel.ISupportInitialize) this.numRdpReconnectionCount).BeginInit();
this.pnlDefaultCredentials.SuspendLayout();
this.pnlAutoSave.SuspendLayout();
((System.ComponentModel.ISupportInitialize) this.numAutoSave).BeginInit();
this.pnlConfirmCloseConnection.SuspendLayout();
this.SuspendLayout();
//
//pnlRdpReconnectionCount
//
this.pnlRdpReconnectionCount.Controls.Add(this.lblRdpReconnectionCount);
this.pnlRdpReconnectionCount.Controls.Add(this.numRdpReconnectionCount);
this.pnlRdpReconnectionCount.Location = new System.Drawing.Point(3, 69);
this.pnlRdpReconnectionCount.Name = "pnlRdpReconnectionCount";
this.pnlRdpReconnectionCount.Size = new System.Drawing.Size(596, 29);
this.pnlRdpReconnectionCount.TabIndex = 10;
//
//lblRdpReconnectionCount
//
this.lblRdpReconnectionCount.Location = new System.Drawing.Point(6, 9);
this.lblRdpReconnectionCount.Name = "lblRdpReconnectionCount";
this.lblRdpReconnectionCount.Size = new System.Drawing.Size(288, 13);
this.lblRdpReconnectionCount.TabIndex = 0;
this.lblRdpReconnectionCount.Text = "RDP Reconnection Count";
this.lblRdpReconnectionCount.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
//numRdpReconnectionCount
//
this.numRdpReconnectionCount.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.numRdpReconnectionCount.Location = new System.Drawing.Point(300, 7);
this.numRdpReconnectionCount.Maximum = new decimal(new int[] {20, 0, 0, 0});
this.numRdpReconnectionCount.Name = "numRdpReconnectionCount";
this.numRdpReconnectionCount.Size = new System.Drawing.Size(53, 20);
this.numRdpReconnectionCount.TabIndex = 1;
this.numRdpReconnectionCount.Value = new decimal(new int[] {5, 0, 0, 0});
//
//chkSingleClickOnConnectionOpensIt
//
this.chkSingleClickOnConnectionOpensIt.AutoSize = true;
this.chkSingleClickOnConnectionOpensIt.Location = new System.Drawing.Point(3, 0);
this.chkSingleClickOnConnectionOpensIt.Name = "chkSingleClickOnConnectionOpensIt";
this.chkSingleClickOnConnectionOpensIt.Size = new System.Drawing.Size(191, 17);
this.chkSingleClickOnConnectionOpensIt.TabIndex = 7;
this.chkSingleClickOnConnectionOpensIt.Text = "Single click on connection opens it";
this.chkSingleClickOnConnectionOpensIt.UseVisualStyleBackColor = true;
//
//chkHostnameLikeDisplayName
//
this.chkHostnameLikeDisplayName.AutoSize = true;
this.chkHostnameLikeDisplayName.Location = new System.Drawing.Point(3, 46);
this.chkHostnameLikeDisplayName.Name = "chkHostnameLikeDisplayName";
this.chkHostnameLikeDisplayName.Size = new System.Drawing.Size(328, 17);
this.chkHostnameLikeDisplayName.TabIndex = 9;
this.chkHostnameLikeDisplayName.Text = "Set hostname like display name when creating new connections";
this.chkHostnameLikeDisplayName.UseVisualStyleBackColor = true;
//
//pnlDefaultCredentials
//
this.pnlDefaultCredentials.Controls.Add(this.radCredentialsCustom);
this.pnlDefaultCredentials.Controls.Add(this.lblDefaultCredentials);
this.pnlDefaultCredentials.Controls.Add(this.radCredentialsNoInfo);
this.pnlDefaultCredentials.Controls.Add(this.radCredentialsWindows);
this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsDomain);
this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsUsername);
this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsPassword);
this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsPassword);
this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsUsername);
this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsDomain);
this.pnlDefaultCredentials.Location = new System.Drawing.Point(3, 139);
this.pnlDefaultCredentials.Name = "pnlDefaultCredentials";
this.pnlDefaultCredentials.Size = new System.Drawing.Size(596, 175);
this.pnlDefaultCredentials.TabIndex = 12;
//
//radCredentialsCustom
//
this.radCredentialsCustom.AutoSize = true;
this.radCredentialsCustom.Location = new System.Drawing.Point(16, 69);
this.radCredentialsCustom.Name = "radCredentialsCustom";
this.radCredentialsCustom.Size = new System.Drawing.Size(87, 17);
this.radCredentialsCustom.TabIndex = 3;
this.radCredentialsCustom.Text = "the following:";
this.radCredentialsCustom.UseVisualStyleBackColor = true;
//
//lblDefaultCredentials
//
this.lblDefaultCredentials.AutoSize = true;
this.lblDefaultCredentials.Location = new System.Drawing.Point(3, 9);
this.lblDefaultCredentials.Name = "lblDefaultCredentials";
this.lblDefaultCredentials.Size = new System.Drawing.Size(257, 13);
this.lblDefaultCredentials.TabIndex = 0;
this.lblDefaultCredentials.Text = "For empty Username, Password or Domain fields use:";
//
//radCredentialsNoInfo
//
this.radCredentialsNoInfo.AutoSize = true;
this.radCredentialsNoInfo.Checked = true;
this.radCredentialsNoInfo.Location = new System.Drawing.Point(16, 31);
this.radCredentialsNoInfo.Name = "radCredentialsNoInfo";
this.radCredentialsNoInfo.Size = new System.Drawing.Size(91, 17);
this.radCredentialsNoInfo.TabIndex = 1;
this.radCredentialsNoInfo.TabStop = true;
this.radCredentialsNoInfo.Text = "no information";
this.radCredentialsNoInfo.UseVisualStyleBackColor = true;
//
//radCredentialsWindows
//
this.radCredentialsWindows.AutoSize = true;
this.radCredentialsWindows.Location = new System.Drawing.Point(16, 50);
this.radCredentialsWindows.Name = "radCredentialsWindows";
this.radCredentialsWindows.Size = new System.Drawing.Size(227, 17);
this.radCredentialsWindows.TabIndex = 2;
this.radCredentialsWindows.Text = "my current credentials (windows logon info)";
this.radCredentialsWindows.UseVisualStyleBackColor = true;
//
//txtCredentialsDomain
//
this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtCredentialsDomain.Enabled = false;
this.txtCredentialsDomain.Location = new System.Drawing.Point(140, 147);
this.txtCredentialsDomain.Name = "txtCredentialsDomain";
this.txtCredentialsDomain.Size = new System.Drawing.Size(150, 20);
this.txtCredentialsDomain.TabIndex = 9;
//
//lblCredentialsUsername
//
this.lblCredentialsUsername.Enabled = false;
this.lblCredentialsUsername.Location = new System.Drawing.Point(37, 95);
this.lblCredentialsUsername.Name = "lblCredentialsUsername";
this.lblCredentialsUsername.Size = new System.Drawing.Size(97, 13);
this.lblCredentialsUsername.TabIndex = 4;
this.lblCredentialsUsername.Text = "Username:";
this.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
//txtCredentialsPassword
//
this.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtCredentialsPassword.Enabled = false;
this.txtCredentialsPassword.Location = new System.Drawing.Point(140, 120);
this.txtCredentialsPassword.Name = "txtCredentialsPassword";
this.txtCredentialsPassword.Size = new System.Drawing.Size(150, 20);
this.txtCredentialsPassword.TabIndex = 7;
this.txtCredentialsPassword.UseSystemPasswordChar = true;
//
//lblCredentialsPassword
//
this.lblCredentialsPassword.Enabled = false;
this.lblCredentialsPassword.Location = new System.Drawing.Point(34, 123);
this.lblCredentialsPassword.Name = "lblCredentialsPassword";
this.lblCredentialsPassword.Size = new System.Drawing.Size(100, 13);
this.lblCredentialsPassword.TabIndex = 6;
this.lblCredentialsPassword.Text = "Password:";
this.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
//txtCredentialsUsername
//
this.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtCredentialsUsername.Enabled = false;
this.txtCredentialsUsername.Location = new System.Drawing.Point(140, 93);
this.txtCredentialsUsername.Name = "txtCredentialsUsername";
this.txtCredentialsUsername.Size = new System.Drawing.Size(150, 20);
this.txtCredentialsUsername.TabIndex = 5;
//
//lblCredentialsDomain
//
this.lblCredentialsDomain.Enabled = false;
this.lblCredentialsDomain.Location = new System.Drawing.Point(34, 150);
this.lblCredentialsDomain.Name = "lblCredentialsDomain";
this.lblCredentialsDomain.Size = new System.Drawing.Size(100, 13);
this.lblCredentialsDomain.TabIndex = 8;
this.lblCredentialsDomain.Text = "Domain:";
this.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
//chkSingleClickOnOpenedConnectionSwitchesToIt
//
this.chkSingleClickOnOpenedConnectionSwitchesToIt.AutoSize = true;
this.chkSingleClickOnOpenedConnectionSwitchesToIt.Location = new System.Drawing.Point(3, 23);
this.chkSingleClickOnOpenedConnectionSwitchesToIt.Name = "chkSingleClickOnOpenedConnectionSwitchesToIt";
this.chkSingleClickOnOpenedConnectionSwitchesToIt.Size = new System.Drawing.Size(254, 17);
this.chkSingleClickOnOpenedConnectionSwitchesToIt.TabIndex = 8;
this.chkSingleClickOnOpenedConnectionSwitchesToIt.Text = Language.strSingleClickOnOpenConnectionSwitchesToIt;
this.chkSingleClickOnOpenedConnectionSwitchesToIt.UseVisualStyleBackColor = true;
//
//pnlAutoSave
//
this.pnlAutoSave.Controls.Add(this.lblAutoSave1);
this.pnlAutoSave.Controls.Add(this.numAutoSave);
this.pnlAutoSave.Controls.Add(this.lblAutoSave2);
this.pnlAutoSave.Location = new System.Drawing.Point(3, 104);
this.pnlAutoSave.Name = "pnlAutoSave";
this.pnlAutoSave.Size = new System.Drawing.Size(596, 29);
this.pnlAutoSave.TabIndex = 11;
//
//lblAutoSave1
//
this.lblAutoSave1.Location = new System.Drawing.Point(6, 9);
this.lblAutoSave1.Name = "lblAutoSave1";
this.lblAutoSave1.Size = new System.Drawing.Size(288, 13);
this.lblAutoSave1.TabIndex = 0;
this.lblAutoSave1.Text = "Auto Save every:";
this.lblAutoSave1.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
//numAutoSave
//
this.numAutoSave.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.numAutoSave.Location = new System.Drawing.Point(300, 7);
this.numAutoSave.Maximum = new decimal(new int[] {9999, 0, 0, 0});
this.numAutoSave.Name = "numAutoSave";
this.numAutoSave.Size = new System.Drawing.Size(53, 20);
this.numAutoSave.TabIndex = 1;
//
//lblAutoSave2
//
this.lblAutoSave2.AutoSize = true;
this.lblAutoSave2.Location = new System.Drawing.Point(359, 9);
this.lblAutoSave2.Name = "lblAutoSave2";
this.lblAutoSave2.Size = new System.Drawing.Size(135, 13);
this.lblAutoSave2.TabIndex = 2;
this.lblAutoSave2.Text = "Minutes (0 means disabled)";
//
//pnlConfirmCloseConnection
//
this.pnlConfirmCloseConnection.Controls.Add(this.lblClosingConnections);
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnAll);
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnMultiple);
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnExit);
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnNever);
this.pnlConfirmCloseConnection.Location = new System.Drawing.Point(3, 320);
this.pnlConfirmCloseConnection.Name = "pnlConfirmCloseConnection";
this.pnlConfirmCloseConnection.Size = new System.Drawing.Size(596, 137);
this.pnlConfirmCloseConnection.TabIndex = 13;
//
//lblClosingConnections
//
this.lblClosingConnections.AutoSize = true;
this.lblClosingConnections.Location = new System.Drawing.Point(3, 9);
this.lblClosingConnections.Name = "lblClosingConnections";
this.lblClosingConnections.Size = new System.Drawing.Size(136, 13);
this.lblClosingConnections.TabIndex = 0;
this.lblClosingConnections.Text = "When closing connections:";
//
//radCloseWarnAll
//
this.radCloseWarnAll.AutoSize = true;
this.radCloseWarnAll.Location = new System.Drawing.Point(16, 31);
this.radCloseWarnAll.Name = "radCloseWarnAll";
this.radCloseWarnAll.Size = new System.Drawing.Size(194, 17);
this.radCloseWarnAll.TabIndex = 1;
this.radCloseWarnAll.TabStop = true;
this.radCloseWarnAll.Text = "Warn me when closing connections";
this.radCloseWarnAll.UseVisualStyleBackColor = true;
//
//radCloseWarnMultiple
//
this.radCloseWarnMultiple.AutoSize = true;
this.radCloseWarnMultiple.Location = new System.Drawing.Point(16, 54);
this.radCloseWarnMultiple.Name = "radCloseWarnMultiple";
this.radCloseWarnMultiple.Size = new System.Drawing.Size(254, 17);
this.radCloseWarnMultiple.TabIndex = 2;
this.radCloseWarnMultiple.TabStop = true;
this.radCloseWarnMultiple.Text = "Warn me only when closing multiple connections";
this.radCloseWarnMultiple.UseVisualStyleBackColor = true;
//
//radCloseWarnExit
//
this.radCloseWarnExit.AutoSize = true;
this.radCloseWarnExit.Location = new System.Drawing.Point(16, 77);
this.radCloseWarnExit.Name = "radCloseWarnExit";
this.radCloseWarnExit.Size = new System.Drawing.Size(216, 17);
this.radCloseWarnExit.TabIndex = 3;
this.radCloseWarnExit.TabStop = true;
this.radCloseWarnExit.Text = "Warn me only when exiting mRemoteNG";
this.radCloseWarnExit.UseVisualStyleBackColor = true;
//
//radCloseWarnNever
//
this.radCloseWarnNever.AutoSize = true;
this.radCloseWarnNever.Location = new System.Drawing.Point(16, 100);
this.radCloseWarnNever.Name = "radCloseWarnNever";
this.radCloseWarnNever.Size = new System.Drawing.Size(226, 17);
this.radCloseWarnNever.TabIndex = 4;
this.radCloseWarnNever.TabStop = true;
this.radCloseWarnNever.Text = "Do not warn me when closing connections";
this.radCloseWarnNever.UseVisualStyleBackColor = true;
//
//ConnectionsPage
//
this.AutoScaleDimensions = new System.Drawing.SizeF((float) (6.0F), (float) (13.0F));
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.pnlRdpReconnectionCount);
this.Controls.Add(this.chkSingleClickOnConnectionOpensIt);
this.Controls.Add(this.chkHostnameLikeDisplayName);
this.Controls.Add(this.pnlDefaultCredentials);
this.Controls.Add(this.chkSingleClickOnOpenedConnectionSwitchesToIt);
this.Controls.Add(this.pnlAutoSave);
this.Controls.Add(this.pnlConfirmCloseConnection);
this.Name = "ConnectionsPage";
this.PageIcon = (System.Drawing.Icon) (resources.GetObject("$this.PageIcon"));
this.Size = new System.Drawing.Size(610, 489);
this.pnlRdpReconnectionCount.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize) this.numRdpReconnectionCount).EndInit();
this.pnlDefaultCredentials.ResumeLayout(false);
this.pnlDefaultCredentials.PerformLayout();
this.pnlAutoSave.ResumeLayout(false);
this.pnlAutoSave.PerformLayout();
((System.ComponentModel.ISupportInitialize) this.numAutoSave).EndInit();
this.pnlConfirmCloseConnection.ResumeLayout(false);
this.pnlConfirmCloseConnection.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConnectionsPage));
this.pnlRdpReconnectionCount = new System.Windows.Forms.Panel();
this.numRDPConTimeout = new System.Windows.Forms.NumericUpDown();
this.lblRDPConTimeout = new System.Windows.Forms.Label();
this.lblRdpReconnectionCount = new System.Windows.Forms.Label();
this.numRdpReconnectionCount = new System.Windows.Forms.NumericUpDown();
this.chkSingleClickOnConnectionOpensIt = new System.Windows.Forms.CheckBox();
this.chkHostnameLikeDisplayName = new System.Windows.Forms.CheckBox();
this.pnlDefaultCredentials = new System.Windows.Forms.Panel();
this.radCredentialsCustom = new System.Windows.Forms.RadioButton();
this.lblDefaultCredentials = new System.Windows.Forms.Label();
this.radCredentialsNoInfo = new System.Windows.Forms.RadioButton();
this.radCredentialsWindows = new System.Windows.Forms.RadioButton();
this.txtCredentialsDomain = new System.Windows.Forms.TextBox();
this.lblCredentialsUsername = new System.Windows.Forms.Label();
this.txtCredentialsPassword = new System.Windows.Forms.TextBox();
this.lblCredentialsPassword = new System.Windows.Forms.Label();
this.txtCredentialsUsername = new System.Windows.Forms.TextBox();
this.lblCredentialsDomain = new System.Windows.Forms.Label();
this.chkSingleClickOnOpenedConnectionSwitchesToIt = new System.Windows.Forms.CheckBox();
this.pnlAutoSave = new System.Windows.Forms.Panel();
this.lblAutoSave1 = new System.Windows.Forms.Label();
this.numAutoSave = new System.Windows.Forms.NumericUpDown();
this.lblAutoSave2 = new System.Windows.Forms.Label();
this.pnlConfirmCloseConnection = new System.Windows.Forms.Panel();
this.lblClosingConnections = new System.Windows.Forms.Label();
this.radCloseWarnAll = new System.Windows.Forms.RadioButton();
this.radCloseWarnMultiple = new System.Windows.Forms.RadioButton();
this.radCloseWarnExit = new System.Windows.Forms.RadioButton();
this.radCloseWarnNever = new System.Windows.Forms.RadioButton();
this.pnlRdpReconnectionCount.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numRDPConTimeout)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numRdpReconnectionCount)).BeginInit();
this.pnlDefaultCredentials.SuspendLayout();
this.pnlAutoSave.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numAutoSave)).BeginInit();
this.pnlConfirmCloseConnection.SuspendLayout();
this.SuspendLayout();
//
// pnlRdpReconnectionCount
//
this.pnlRdpReconnectionCount.Controls.Add(this.numRDPConTimeout);
this.pnlRdpReconnectionCount.Controls.Add(this.lblRDPConTimeout);
this.pnlRdpReconnectionCount.Controls.Add(this.lblRdpReconnectionCount);
this.pnlRdpReconnectionCount.Controls.Add(this.numRdpReconnectionCount);
this.pnlRdpReconnectionCount.Location = new System.Drawing.Point(3, 69);
this.pnlRdpReconnectionCount.Name = "pnlRdpReconnectionCount";
this.pnlRdpReconnectionCount.Size = new System.Drawing.Size(596, 29);
this.pnlRdpReconnectionCount.TabIndex = 10;
//
// numRDPConTimeout
//
this.numRDPConTimeout.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.numRDPConTimeout.Location = new System.Drawing.Point(369, 7);
this.numRDPConTimeout.Maximum = new decimal(new int[] {
600,
0,
0,
0});
this.numRDPConTimeout.Minimum = new decimal(new int[] {
20,
0,
0,
0});
this.numRDPConTimeout.Name = "numRDPConTimeout";
this.numRDPConTimeout.Size = new System.Drawing.Size(53, 20);
this.numRDPConTimeout.TabIndex = 3;
this.numRDPConTimeout.Value = new decimal(new int[] {
20,
0,
0,
0});
//
// lblRDPConTimeout
//
this.lblRDPConTimeout.Location = new System.Drawing.Point(226, 9);
this.lblRDPConTimeout.Name = "lblRDPConTimeout";
this.lblRDPConTimeout.Size = new System.Drawing.Size(137, 13);
this.lblRDPConTimeout.TabIndex = 2;
this.lblRDPConTimeout.Text = "RDP Connection Timeout";
this.lblRDPConTimeout.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// lblRdpReconnectionCount
//
this.lblRdpReconnectionCount.Location = new System.Drawing.Point(3, 9);
this.lblRdpReconnectionCount.Name = "lblRdpReconnectionCount";
this.lblRdpReconnectionCount.Size = new System.Drawing.Size(139, 13);
this.lblRdpReconnectionCount.TabIndex = 0;
this.lblRdpReconnectionCount.Text = "RDP Reconnection Count";
this.lblRdpReconnectionCount.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// numRdpReconnectionCount
//
this.numRdpReconnectionCount.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.numRdpReconnectionCount.Location = new System.Drawing.Point(145, 6);
this.numRdpReconnectionCount.Maximum = new decimal(new int[] {
20,
0,
0,
0});
this.numRdpReconnectionCount.Name = "numRdpReconnectionCount";
this.numRdpReconnectionCount.Size = new System.Drawing.Size(53, 20);
this.numRdpReconnectionCount.TabIndex = 1;
this.numRdpReconnectionCount.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// chkSingleClickOnConnectionOpensIt
//
this.chkSingleClickOnConnectionOpensIt.AutoSize = true;
this.chkSingleClickOnConnectionOpensIt.Location = new System.Drawing.Point(3, 0);
this.chkSingleClickOnConnectionOpensIt.Name = "chkSingleClickOnConnectionOpensIt";
this.chkSingleClickOnConnectionOpensIt.Size = new System.Drawing.Size(191, 17);
this.chkSingleClickOnConnectionOpensIt.TabIndex = 7;
this.chkSingleClickOnConnectionOpensIt.Text = "Single click on connection opens it";
this.chkSingleClickOnConnectionOpensIt.UseVisualStyleBackColor = true;
//
// chkHostnameLikeDisplayName
//
this.chkHostnameLikeDisplayName.AutoSize = true;
this.chkHostnameLikeDisplayName.Location = new System.Drawing.Point(3, 46);
this.chkHostnameLikeDisplayName.Name = "chkHostnameLikeDisplayName";
this.chkHostnameLikeDisplayName.Size = new System.Drawing.Size(328, 17);
this.chkHostnameLikeDisplayName.TabIndex = 9;
this.chkHostnameLikeDisplayName.Text = "Set hostname like display name when creating new connections";
this.chkHostnameLikeDisplayName.UseVisualStyleBackColor = true;
//
// pnlDefaultCredentials
//
this.pnlDefaultCredentials.Controls.Add(this.radCredentialsCustom);
this.pnlDefaultCredentials.Controls.Add(this.lblDefaultCredentials);
this.pnlDefaultCredentials.Controls.Add(this.radCredentialsNoInfo);
this.pnlDefaultCredentials.Controls.Add(this.radCredentialsWindows);
this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsDomain);
this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsUsername);
this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsPassword);
this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsPassword);
this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsUsername);
this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsDomain);
this.pnlDefaultCredentials.Location = new System.Drawing.Point(3, 139);
this.pnlDefaultCredentials.Name = "pnlDefaultCredentials";
this.pnlDefaultCredentials.Size = new System.Drawing.Size(596, 175);
this.pnlDefaultCredentials.TabIndex = 12;
//
// radCredentialsCustom
//
this.radCredentialsCustom.AutoSize = true;
this.radCredentialsCustom.Location = new System.Drawing.Point(16, 69);
this.radCredentialsCustom.Name = "radCredentialsCustom";
this.radCredentialsCustom.Size = new System.Drawing.Size(87, 17);
this.radCredentialsCustom.TabIndex = 3;
this.radCredentialsCustom.Text = "the following:";
this.radCredentialsCustom.UseVisualStyleBackColor = true;
this.radCredentialsCustom.CheckedChanged += new System.EventHandler(this.radCredentialsCustom_CheckedChanged);
//
// lblDefaultCredentials
//
this.lblDefaultCredentials.AutoSize = true;
this.lblDefaultCredentials.Location = new System.Drawing.Point(3, 9);
this.lblDefaultCredentials.Name = "lblDefaultCredentials";
this.lblDefaultCredentials.Size = new System.Drawing.Size(257, 13);
this.lblDefaultCredentials.TabIndex = 0;
this.lblDefaultCredentials.Text = "For empty Username, Password or Domain fields use:";
//
// radCredentialsNoInfo
//
this.radCredentialsNoInfo.AutoSize = true;
this.radCredentialsNoInfo.Checked = true;
this.radCredentialsNoInfo.Location = new System.Drawing.Point(16, 31);
this.radCredentialsNoInfo.Name = "radCredentialsNoInfo";
this.radCredentialsNoInfo.Size = new System.Drawing.Size(91, 17);
this.radCredentialsNoInfo.TabIndex = 1;
this.radCredentialsNoInfo.TabStop = true;
this.radCredentialsNoInfo.Text = "no information";
this.radCredentialsNoInfo.UseVisualStyleBackColor = true;
//
// radCredentialsWindows
//
this.radCredentialsWindows.AutoSize = true;
this.radCredentialsWindows.Location = new System.Drawing.Point(16, 50);
this.radCredentialsWindows.Name = "radCredentialsWindows";
this.radCredentialsWindows.Size = new System.Drawing.Size(227, 17);
this.radCredentialsWindows.TabIndex = 2;
this.radCredentialsWindows.Text = "my current credentials (windows logon info)";
this.radCredentialsWindows.UseVisualStyleBackColor = true;
//
// txtCredentialsDomain
//
this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtCredentialsDomain.Enabled = false;
this.txtCredentialsDomain.Location = new System.Drawing.Point(140, 147);
this.txtCredentialsDomain.Name = "txtCredentialsDomain";
this.txtCredentialsDomain.Size = new System.Drawing.Size(150, 20);
this.txtCredentialsDomain.TabIndex = 9;
//
// lblCredentialsUsername
//
this.lblCredentialsUsername.Enabled = false;
this.lblCredentialsUsername.Location = new System.Drawing.Point(37, 95);
this.lblCredentialsUsername.Name = "lblCredentialsUsername";
this.lblCredentialsUsername.Size = new System.Drawing.Size(97, 13);
this.lblCredentialsUsername.TabIndex = 4;
this.lblCredentialsUsername.Text = "Username:";
this.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// txtCredentialsPassword
//
this.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtCredentialsPassword.Enabled = false;
this.txtCredentialsPassword.Location = new System.Drawing.Point(140, 120);
this.txtCredentialsPassword.Name = "txtCredentialsPassword";
this.txtCredentialsPassword.Size = new System.Drawing.Size(150, 20);
this.txtCredentialsPassword.TabIndex = 7;
this.txtCredentialsPassword.UseSystemPasswordChar = true;
//
// lblCredentialsPassword
//
this.lblCredentialsPassword.Enabled = false;
this.lblCredentialsPassword.Location = new System.Drawing.Point(34, 123);
this.lblCredentialsPassword.Name = "lblCredentialsPassword";
this.lblCredentialsPassword.Size = new System.Drawing.Size(100, 13);
this.lblCredentialsPassword.TabIndex = 6;
this.lblCredentialsPassword.Text = "Password:";
this.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// txtCredentialsUsername
//
this.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtCredentialsUsername.Enabled = false;
this.txtCredentialsUsername.Location = new System.Drawing.Point(140, 93);
this.txtCredentialsUsername.Name = "txtCredentialsUsername";
this.txtCredentialsUsername.Size = new System.Drawing.Size(150, 20);
this.txtCredentialsUsername.TabIndex = 5;
//
// lblCredentialsDomain
//
this.lblCredentialsDomain.Enabled = false;
this.lblCredentialsDomain.Location = new System.Drawing.Point(34, 150);
this.lblCredentialsDomain.Name = "lblCredentialsDomain";
this.lblCredentialsDomain.Size = new System.Drawing.Size(100, 13);
this.lblCredentialsDomain.TabIndex = 8;
this.lblCredentialsDomain.Text = "Domain:";
this.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// chkSingleClickOnOpenedConnectionSwitchesToIt
//
this.chkSingleClickOnOpenedConnectionSwitchesToIt.AutoSize = true;
this.chkSingleClickOnOpenedConnectionSwitchesToIt.Location = new System.Drawing.Point(3, 23);
this.chkSingleClickOnOpenedConnectionSwitchesToIt.Name = "chkSingleClickOnOpenedConnectionSwitchesToIt";
this.chkSingleClickOnOpenedConnectionSwitchesToIt.Size = new System.Drawing.Size(457, 17);
this.chkSingleClickOnOpenedConnectionSwitchesToIt.TabIndex = 8;
this.chkSingleClickOnOpenedConnectionSwitchesToIt.Text = global::mRemoteNG.Language.strSingleClickOnOpenConnectionSwitchesToIt;
this.chkSingleClickOnOpenedConnectionSwitchesToIt.UseVisualStyleBackColor = true;
//
// pnlAutoSave
//
this.pnlAutoSave.Controls.Add(this.lblAutoSave1);
this.pnlAutoSave.Controls.Add(this.numAutoSave);
this.pnlAutoSave.Controls.Add(this.lblAutoSave2);
this.pnlAutoSave.Location = new System.Drawing.Point(3, 104);
this.pnlAutoSave.Name = "pnlAutoSave";
this.pnlAutoSave.Size = new System.Drawing.Size(596, 29);
this.pnlAutoSave.TabIndex = 11;
//
// lblAutoSave1
//
this.lblAutoSave1.Location = new System.Drawing.Point(6, 9);
this.lblAutoSave1.Name = "lblAutoSave1";
this.lblAutoSave1.Size = new System.Drawing.Size(288, 13);
this.lblAutoSave1.TabIndex = 0;
this.lblAutoSave1.Text = "Auto Save every:";
this.lblAutoSave1.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// numAutoSave
//
this.numAutoSave.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.numAutoSave.Location = new System.Drawing.Point(300, 7);
this.numAutoSave.Maximum = new decimal(new int[] {
9999,
0,
0,
0});
this.numAutoSave.Name = "numAutoSave";
this.numAutoSave.Size = new System.Drawing.Size(53, 20);
this.numAutoSave.TabIndex = 1;
//
// lblAutoSave2
//
this.lblAutoSave2.AutoSize = true;
this.lblAutoSave2.Location = new System.Drawing.Point(359, 9);
this.lblAutoSave2.Name = "lblAutoSave2";
this.lblAutoSave2.Size = new System.Drawing.Size(135, 13);
this.lblAutoSave2.TabIndex = 2;
this.lblAutoSave2.Text = "Minutes (0 means disabled)";
//
// pnlConfirmCloseConnection
//
this.pnlConfirmCloseConnection.Controls.Add(this.lblClosingConnections);
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnAll);
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnMultiple);
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnExit);
this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnNever);
this.pnlConfirmCloseConnection.Location = new System.Drawing.Point(3, 320);
this.pnlConfirmCloseConnection.Name = "pnlConfirmCloseConnection";
this.pnlConfirmCloseConnection.Size = new System.Drawing.Size(596, 137);
this.pnlConfirmCloseConnection.TabIndex = 13;
//
// lblClosingConnections
//
this.lblClosingConnections.AutoSize = true;
this.lblClosingConnections.Location = new System.Drawing.Point(3, 9);
this.lblClosingConnections.Name = "lblClosingConnections";
this.lblClosingConnections.Size = new System.Drawing.Size(136, 13);
this.lblClosingConnections.TabIndex = 0;
this.lblClosingConnections.Text = "When closing connections:";
//
// radCloseWarnAll
//
this.radCloseWarnAll.AutoSize = true;
this.radCloseWarnAll.Location = new System.Drawing.Point(16, 31);
this.radCloseWarnAll.Name = "radCloseWarnAll";
this.radCloseWarnAll.Size = new System.Drawing.Size(194, 17);
this.radCloseWarnAll.TabIndex = 1;
this.radCloseWarnAll.TabStop = true;
this.radCloseWarnAll.Text = "Warn me when closing connections";
this.radCloseWarnAll.UseVisualStyleBackColor = true;
//
// radCloseWarnMultiple
//
this.radCloseWarnMultiple.AutoSize = true;
this.radCloseWarnMultiple.Location = new System.Drawing.Point(16, 54);
this.radCloseWarnMultiple.Name = "radCloseWarnMultiple";
this.radCloseWarnMultiple.Size = new System.Drawing.Size(254, 17);
this.radCloseWarnMultiple.TabIndex = 2;
this.radCloseWarnMultiple.TabStop = true;
this.radCloseWarnMultiple.Text = "Warn me only when closing multiple connections";
this.radCloseWarnMultiple.UseVisualStyleBackColor = true;
//
// radCloseWarnExit
//
this.radCloseWarnExit.AutoSize = true;
this.radCloseWarnExit.Location = new System.Drawing.Point(16, 77);
this.radCloseWarnExit.Name = "radCloseWarnExit";
this.radCloseWarnExit.Size = new System.Drawing.Size(216, 17);
this.radCloseWarnExit.TabIndex = 3;
this.radCloseWarnExit.TabStop = true;
this.radCloseWarnExit.Text = "Warn me only when exiting mRemoteNG";
this.radCloseWarnExit.UseVisualStyleBackColor = true;
//
// radCloseWarnNever
//
this.radCloseWarnNever.AutoSize = true;
this.radCloseWarnNever.Location = new System.Drawing.Point(16, 100);
this.radCloseWarnNever.Name = "radCloseWarnNever";
this.radCloseWarnNever.Size = new System.Drawing.Size(226, 17);
this.radCloseWarnNever.TabIndex = 4;
this.radCloseWarnNever.TabStop = true;
this.radCloseWarnNever.Text = "Do not warn me when closing connections";
this.radCloseWarnNever.UseVisualStyleBackColor = true;
//
// ConnectionsPage
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.pnlRdpReconnectionCount);
this.Controls.Add(this.chkSingleClickOnConnectionOpensIt);
this.Controls.Add(this.chkHostnameLikeDisplayName);
this.Controls.Add(this.pnlDefaultCredentials);
this.Controls.Add(this.chkSingleClickOnOpenedConnectionSwitchesToIt);
this.Controls.Add(this.pnlAutoSave);
this.Controls.Add(this.pnlConfirmCloseConnection);
this.Name = "ConnectionsPage";
this.PageIcon = ((System.Drawing.Icon)(resources.GetObject("$this.PageIcon")));
this.Size = new System.Drawing.Size(610, 489);
this.pnlRdpReconnectionCount.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.numRDPConTimeout)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numRdpReconnectionCount)).EndInit();
this.pnlDefaultCredentials.ResumeLayout(false);
this.pnlDefaultCredentials.PerformLayout();
this.pnlAutoSave.ResumeLayout(false);
this.pnlAutoSave.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numAutoSave)).EndInit();
this.pnlConfirmCloseConnection.ResumeLayout(false);
this.pnlConfirmCloseConnection.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
internal System.Windows.Forms.Panel pnlRdpReconnectionCount;
internal System.Windows.Forms.Label lblRdpReconnectionCount;
internal System.Windows.Forms.NumericUpDown numRdpReconnectionCount;
internal System.Windows.Forms.CheckBox chkSingleClickOnConnectionOpensIt;
internal System.Windows.Forms.CheckBox chkHostnameLikeDisplayName;
internal System.Windows.Forms.Panel pnlDefaultCredentials;
@@ -397,6 +446,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
internal System.Windows.Forms.RadioButton radCloseWarnMultiple;
internal System.Windows.Forms.RadioButton radCloseWarnExit;
internal System.Windows.Forms.RadioButton radCloseWarnNever;
}
internal System.Windows.Forms.NumericUpDown numRDPConTimeout;
internal System.Windows.Forms.Label lblRDPConTimeout;
internal System.Windows.Forms.NumericUpDown numRdpReconnectionCount;
}
}

View File

@@ -1,8 +1,6 @@
using System;
using mRemoteNG.App.Info;
using mRemoteNG.Config;
using mRemoteNG.My;
using mRemoteNG.Security;
using mRemoteNG.Security.SymmetricEncryption;
namespace mRemoteNG.UI.Forms.OptionsPages
@@ -30,6 +28,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
lblRdpReconnectionCount.Text = Language.strRdpReconnectCount;
lblRDPConTimeout.Text = Language.strRDPOverallConnectionTimeout;
lblAutoSave1.Text = Language.strAutoSaveEvery;
lblAutoSave2.Text = Language.strAutoSaveMins;
@@ -60,6 +60,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
numRdpReconnectionCount.Value = Convert.ToDecimal(mRemoteNG.Settings.Default.RdpReconnectionCount);
numRDPConTimeout.Value = Convert.ToDecimal(mRemoteNG.Settings.Default.ConRDPOverallConnectionTimeout);
numAutoSave.Value = Convert.ToDecimal(mRemoteNG.Settings.Default.AutoSaveEveryMinutes);
// ReSharper disable once StringLiteralTypo
@@ -107,6 +109,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
mRemoteNG.Settings.Default.RdpReconnectionCount = (int) numRdpReconnectionCount.Value;
mRemoteNG.Settings.Default.ConRDPOverallConnectionTimeout = (int) numRDPConTimeout.Value;
mRemoteNG.Settings.Default.AutoSaveEveryMinutes = (int) numAutoSave.Value;
if (mRemoteNG.Settings.Default.AutoSaveEveryMinutes > 0)
{

View File

@@ -112,12 +112,12 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA

View File

@@ -11,7 +11,9 @@ using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Net.NetworkInformation;
using System.Threading;
using System.Windows.Forms;
using mRemoteNG.Connection.Protocol;
using mRemoteNG.Security;
using mRemoteNG.UI.Controls.FilteredPropertyGrid;
using WeifenLuo.WinFormsUI.Docking;
@@ -117,7 +119,7 @@ namespace mRemoteNG.UI.Window
btnShowInheritance.ImageTransparentColor = Color.Magenta;
btnShowInheritance.Name = "btnShowInheritance";
btnShowInheritance.Size = new Size(23, 22);
btnShowInheritance.Text = @"Inheritance";
btnShowInheritance.Text = @"IInheritable";
//
//btnShowDefaultInheritance
//
@@ -126,7 +128,7 @@ namespace mRemoteNG.UI.Window
btnShowDefaultInheritance.ImageTransparentColor = Color.Magenta;
btnShowDefaultInheritance.Name = "btnShowDefaultInheritance";
btnShowDefaultInheritance.Size = new Size(23, 22);
btnShowDefaultInheritance.Text = @"Default Inheritance";
btnShowDefaultInheritance.Text = @"Default IInheritable";
//
//btnShowProperties
//
@@ -180,7 +182,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);
@@ -480,7 +482,7 @@ namespace mRemoteNG.UI.Window
PropertiesVisible = true;
}
}
else if (InheritanceVisible) //Inheritance selected
else if (InheritanceVisible) //IInheritable selected
{
pGrid.SelectedObject = ((ConnectionInfo)Obj).Inheritance;
@@ -790,13 +792,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.SaveTo<Settings>(Settings.Default, (a)=>"InhDefault"+a);
}
private void pGrid_PropertySortChanged(object sender, EventArgs e)
@@ -817,9 +814,9 @@ namespace mRemoteNG.UI.Window
switch (conI.Protocol)
{
case Connection.Protocol.ProtocolType.RDP:
case ProtocolType.RDP:
strHide.Add("ExtApp");
strHide.Add("ICAEncryption");
strHide.Add("ICAEncryptionStrength");
strHide.Add("PuttySession");
strHide.Add("RenderingEngine");
strHide.Add("VNCAuthMode");
@@ -852,7 +849,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("AutomaticResize");
}
break;
case Connection.Protocol.ProtocolType.VNC:
case ProtocolType.VNC:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -860,7 +857,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");
@@ -894,7 +891,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCProxyUsername");
}
break;
case Connection.Protocol.ProtocolType.SSH1:
case ProtocolType.SSH1:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -903,7 +900,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");
@@ -935,7 +932,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
break;
case Connection.Protocol.ProtocolType.SSH2:
case ProtocolType.SSH2:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -944,7 +941,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");
@@ -976,7 +973,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
break;
case Connection.Protocol.ProtocolType.Telnet:
case ProtocolType.Telnet:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -985,7 +982,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");
@@ -1019,7 +1016,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
break;
case Connection.Protocol.ProtocolType.Rlogin:
case ProtocolType.Rlogin:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -1028,7 +1025,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");
@@ -1062,7 +1059,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
break;
case Connection.Protocol.ProtocolType.RAW:
case ProtocolType.RAW:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -1071,7 +1068,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");
@@ -1105,7 +1102,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
break;
case Connection.Protocol.ProtocolType.HTTP:
case ProtocolType.HTTP:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -1114,7 +1111,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");
@@ -1146,7 +1143,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
break;
case Connection.Protocol.ProtocolType.HTTPS:
case ProtocolType.HTTPS:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -1155,7 +1152,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");
@@ -1186,7 +1183,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
break;
case Connection.Protocol.ProtocolType.ICA:
case ProtocolType.ICA:
strHide.Add("DisplayThemes");
strHide.Add("DisplayWallpaper");
strHide.Add("EnableFontSmoothing");
@@ -1224,7 +1221,7 @@ namespace mRemoteNG.UI.Window
strHide.Add("VNCSmartSizeMode");
strHide.Add("VNCViewOnly");
break;
case Connection.Protocol.ProtocolType.IntApp:
case ProtocolType.IntApp:
strHide.Add("CacheBitmaps");
strHide.Add("Colors");
strHide.Add("DisplayThemes");
@@ -1232,7 +1229,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");
@@ -1270,270 +1267,112 @@ namespace mRemoteNG.UI.Window
if (conI.IsDefault == false)
{
if (conI.Inheritance.CacheBitmaps)
{
strHide.Add("CacheBitmaps");
}
if (conI.Inheritance.Colors)
{
strHide.Add("Colors");
}
if (conI.Inheritance.Description)
{
strHide.Add("Description");
}
if (conI.Inheritance.DisplayThemes)
{
strHide.Add("DisplayThemes");
}
if (conI.Inheritance.DisplayWallpaper)
{
strHide.Add("DisplayWallpaper");
}
if (conI.Inheritance.EnableFontSmoothing)
{
strHide.Add("EnableFontSmoothing");
}
if (conI.Inheritance.EnableDesktopComposition)
{
strHide.Add("EnableDesktopComposition");
}
if (conI.Inheritance.Domain)
{
strHide.Add("Domain");
}
if (conI.Inheritance.Icon)
{
strHide.Add("Icon");
}
if (conI.Inheritance.Password)
{
strHide.Add("Password");
}
if (conI.Inheritance.Port)
{
strHide.Add("Port");
}
if (conI.Inheritance.Protocol)
{
strHide.Add("Protocol");
}
if (conI.Inheritance.PuttySession)
{
strHide.Add("PuttySession");
}
if (conI.Inheritance.RedirectDiskDrives)
{
strHide.Add("RedirectDiskDrives");
}
if (conI.Inheritance.RedirectKeys)
{
strHide.Add("RedirectKeys");
}
if (conI.Inheritance.RedirectPorts)
{
strHide.Add("RedirectPorts");
}
if (conI.Inheritance.RedirectPrinters)
{
strHide.Add("RedirectPrinters");
}
if (conI.Inheritance.RedirectSmartCards)
{
strHide.Add("RedirectSmartCards");
}
if (conI.Inheritance.RedirectSound)
{
strHide.Add("RedirectSound");
}
if (conI.Inheritance.Resolution)
{
strHide.Add("Resolution");
}
if (conI.Inheritance.AutomaticResize)
{
strHide.Add("AutomaticResize");
}
if (conI.Inheritance.UseConsoleSession)
{
strHide.Add("UseConsoleSession");
}
if (conI.Inheritance.UseCredSsp)
{
strHide.Add("UseCredSsp");
}
if (conI.Inheritance.RenderingEngine)
{
strHide.Add("RenderingEngine");
}
if (conI.Inheritance.ICAEncryption)
{
strHide.Add("ICAEncryption");
}
if (conI.Inheritance.RDPAuthenticationLevel)
{
strHide.Add("RDPAuthenticationLevel");
}
if (conI.Inheritance.LoadBalanceInfo)
{
strHide.Add("LoadBalanceInfo");
}
if (conI.Inheritance.Username)
{
strHide.Add("Username");
}
if (conI.Inheritance.Panel)
{
strHide.Add("Panel");
}
if (conI.IsContainer)
{
strHide.Add("Hostname");
}
if (conI.Inheritance.PreExtApp)
{
strHide.Add("PreExtApp");
}
if (conI.Inheritance.PostExtApp)
{
strHide.Add("PostExtApp");
}
if (conI.Inheritance.MacAddress)
{
strHide.Add("MacAddress");
}
if (conI.Inheritance.UserField)
{
strHide.Add("UserField");
}
if (conI.Inheritance.VNCAuthMode)
{
strHide.Add("VNCAuthMode");
}
if (conI.Inheritance.VNCColors)
{
strHide.Add("VNCColors");
}
if (conI.Inheritance.VNCCompression)
{
strHide.Add("VNCCompression");
}
if (conI.Inheritance.VNCEncoding)
{
strHide.Add("VNCEncoding");
}
if (conI.Inheritance.VNCProxyIP)
{
strHide.Add("VNCProxyIP");
}
if (conI.Inheritance.VNCProxyPassword)
{
strHide.Add("VNCProxyPassword");
}
if (conI.Inheritance.VNCProxyPort)
{
strHide.Add("VNCProxyPort");
}
if (conI.Inheritance.VNCProxyType)
{
strHide.Add("VNCProxyType");
}
if (conI.Inheritance.VNCProxyUsername)
{
strHide.Add("VNCProxyUsername");
}
if (conI.Inheritance.VNCViewOnly)
{
strHide.Add("VNCViewOnly");
}
if (conI.Inheritance.VNCSmartSizeMode)
{
strHide.Add("VNCSmartSizeMode");
}
if (conI.Inheritance.ExtApp)
{
strHide.Add("ExtApp");
}
if (conI.Inheritance.RDGatewayUsageMethod)
{
strHide.Add("RDGatewayUsageMethod");
}
if (conI.Inheritance.RDGatewayHostname)
{
strHide.Add("RDGatewayHostname");
}
if (conI.Inheritance.RDGatewayUsername)
{
strHide.Add("RDGatewayUsername");
}
if (conI.Inheritance.RDGatewayPassword)
{
strHide.Add("RDGatewayPassword");
}
if (conI.Inheritance.RDGatewayDomain)
{
strHide.Add("RDGatewayDomain");
}
if (conI.Inheritance.RDGatewayUseConnectionCredentials)
{
strHide.Add("RDGatewayUseConnectionCredentials");
}
if (conI.Inheritance.RDGatewayHostname)
{
strHide.Add("RDGatewayHostname");
}
}
strHide.Add("RedirectDiskDrives");
if (conI.Inheritance.RedirectKeys)
strHide.Add("RedirectKeys");
if (conI.Inheritance.RedirectPorts)
strHide.Add("RedirectPorts");
if (conI.Inheritance.RedirectPrinters)
strHide.Add("RedirectPrinters");
if (conI.Inheritance.RedirectSmartCards)
strHide.Add("RedirectSmartCards");
if (conI.Inheritance.RedirectSound)
strHide.Add("RedirectSound");
if (conI.Inheritance.Resolution)
strHide.Add("Resolution");
if (conI.Inheritance.AutomaticResize)
strHide.Add("AutomaticResize");
if (conI.Inheritance.UseConsoleSession)
strHide.Add("UseConsoleSession");
if (conI.Inheritance.UseCredSsp)
strHide.Add("UseCredSsp");
if (conI.Inheritance.RenderingEngine)
strHide.Add("RenderingEngine");
if (conI.Inheritance.ICAEncryptionStrength)
strHide.Add("ICAEncryptionStrength");
if (conI.Inheritance.RDPAuthenticationLevel)
strHide.Add("RDPAuthenticationLevel");
if (conI.Inheritance.LoadBalanceInfo)
strHide.Add("LoadBalanceInfo");
if (conI.Inheritance.Username)
strHide.Add("Username");
if (conI.Inheritance.Panel)
strHide.Add("Panel");
if (conI.IsContainer)
strHide.Add("Hostname");
if (conI.Inheritance.PreExtApp)
strHide.Add("PreExtApp");
if (conI.Inheritance.PostExtApp)
strHide.Add("PostExtApp");
if (conI.Inheritance.MacAddress)
strHide.Add("MacAddress");
if (conI.Inheritance.UserField)
strHide.Add("UserField");
if (conI.Inheritance.VNCAuthMode)
strHide.Add("VNCAuthMode");
if (conI.Inheritance.VNCColors)
strHide.Add("VNCColors");
if (conI.Inheritance.VNCCompression)
strHide.Add("VNCCompression");
if (conI.Inheritance.VNCEncoding)
strHide.Add("VNCEncoding");
if (conI.Inheritance.VNCProxyIP)
strHide.Add("VNCProxyIP");
if (conI.Inheritance.VNCProxyPassword)
strHide.Add("VNCProxyPassword");
if (conI.Inheritance.VNCProxyPort)
strHide.Add("VNCProxyPort");
if (conI.Inheritance.VNCProxyType)
strHide.Add("VNCProxyType");
if (conI.Inheritance.VNCProxyUsername)
strHide.Add("VNCProxyUsername");
if (conI.Inheritance.VNCViewOnly)
strHide.Add("VNCViewOnly");
if (conI.Inheritance.VNCSmartSizeMode)
strHide.Add("VNCSmartSizeMode");
if (conI.Inheritance.ExtApp)
strHide.Add("ExtApp");
if (conI.Inheritance.RDGatewayUsageMethod)
strHide.Add("RDGatewayUsageMethod");
if (conI.Inheritance.RDGatewayHostname)
strHide.Add("RDGatewayHostname");
if (conI.Inheritance.RDGatewayUsername)
strHide.Add("RDGatewayUsername");
if (conI.Inheritance.RDGatewayPassword)
strHide.Add("RDGatewayPassword");
if (conI.Inheritance.RDGatewayDomain)
strHide.Add("RDGatewayDomain");
if (conI.Inheritance.RDGatewayUseConnectionCredentials)
strHide.Add("RDGatewayUseConnectionCredentials");
if (conI.Inheritance.RDGatewayHostname)
strHide.Add("RDGatewayHostname");
}
else
{
strHide.Add("Hostname");
@@ -1550,7 +1389,6 @@ namespace mRemoteNG.UI.Window
}
pGrid.HiddenProperties = strHide.ToArray();
pGrid.Refresh();
}
catch (Exception ex)
@@ -1563,7 +1401,7 @@ namespace mRemoteNG.UI.Window
{
if (pGrid.SelectedObject is ConnectionInfoInheritance)
{
if (((ConnectionInfoInheritance)pGrid.SelectedObject).IsDefault)
if (pGrid.SelectedObject is DefaultConnectionInheritance)
{
PropertiesVisible = true;
InheritanceVisible = false;
@@ -1582,39 +1420,33 @@ namespace mRemoteNG.UI.Window
}
else if (pGrid.SelectedObject is ConnectionInfo)
{
if (((ConnectionInfo)pGrid.SelectedObject).IsDefault)
{
PropertiesVisible = true;
InheritanceVisible = false;
DefaultPropertiesVisible = false;
DefaultInheritanceVisible = false;
SetPropertyGridObject((RootNodeInfo)Windows.treeForm.tvConnections.SelectedNode.Tag);
}
if (!((ConnectionInfo) pGrid.SelectedObject).IsDefault) return;
PropertiesVisible = true;
InheritanceVisible = false;
DefaultPropertiesVisible = false;
DefaultInheritanceVisible = false;
SetPropertyGridObject((RootNodeInfo)Windows.treeForm.tvConnections.SelectedNode.Tag);
}
}
private void btnShowDefaultProperties_Click(object sender, EventArgs e)
{
if (pGrid.SelectedObject is RootNodeInfo || pGrid.SelectedObject is ConnectionInfoInheritance)
{
PropertiesVisible = false;
InheritanceVisible = false;
DefaultPropertiesVisible = true;
DefaultInheritanceVisible = false;
SetPropertyGridObject(Runtime.DefaultConnectionFromSettings());
}
if (!(pGrid.SelectedObject is RootNodeInfo) && !(pGrid.SelectedObject is ConnectionInfoInheritance)) return;
PropertiesVisible = false;
InheritanceVisible = false;
DefaultPropertiesVisible = true;
DefaultInheritanceVisible = false;
SetPropertyGridObject(Runtime.DefaultConnectionFromSettings());
}
private void btnShowInheritance_Click(object sender, EventArgs e)
{
if (pGrid.SelectedObject is ConnectionInfo)
{
PropertiesVisible = false;
InheritanceVisible = true;
DefaultPropertiesVisible = false;
DefaultInheritanceVisible = false;
SetPropertyGridObject(((ConnectionInfo)pGrid.SelectedObject).Inheritance);
}
if (!(pGrid.SelectedObject is ConnectionInfo)) return;
PropertiesVisible = false;
InheritanceVisible = true;
DefaultPropertiesVisible = false;
DefaultInheritanceVisible = false;
SetPropertyGridObject(((ConnectionInfo)pGrid.SelectedObject).Inheritance);
}
private void btnShowDefaultInheritance_Click(object sender, EventArgs e)
@@ -1625,7 +1457,7 @@ namespace mRemoteNG.UI.Window
InheritanceVisible = false;
DefaultPropertiesVisible = false;
DefaultInheritanceVisible = true;
SetPropertyGridObject(Runtime.DefaultInheritanceFromSettings());
SetPropertyGridObject(DefaultConnectionInheritance.Instance);
}
}
@@ -1644,10 +1476,12 @@ namespace mRemoteNG.UI.Window
foreach (var iStr in ConnectionIcon.Icons)
{
var tI = new ToolStripMenuItem();
tI.Text = iStr;
tI.Image = ConnectionIcon.FromString(iStr).ToBitmap();
tI.Click += IconMenu_Click;
var tI = new ToolStripMenuItem
{
Text = iStr,
Image = ConnectionIcon.FromString(iStr).ToBitmap()
};
tI.Click += IconMenu_Click;
cMenIcons.Items.Add(tI);
}
@@ -1705,17 +1539,16 @@ namespace mRemoteNG.UI.Window
#region Host Status (Ping)
private string HostName;
private System.Threading.Thread pThread;
private Thread pThread;
private void CheckHostAlive()
{
var pingSender = new Ping();
PingReply pReply;
try
try
{
pReply = pingSender.Send(HostName);
if (pReply != null && pReply.Status == IPStatus.Success)
var pReply = pingSender.Send(HostName);
if (pReply?.Status == IPStatus.Success)
{
if ((string)btnHostStatus.Tag == "checking")
{
@@ -1739,30 +1572,30 @@ namespace mRemoteNG.UI.Window
}
}
delegate void ShowStatusImageCB(Image Image);
private void ShowStatusImage(Image Image)
delegate void ShowStatusImageCB(Image image);
private void ShowStatusImage(Image image)
{
if (pGrid.InvokeRequired)
{
ShowStatusImageCB d = ShowStatusImage;
pGrid.Invoke(d, new object[] {Image});
pGrid.Invoke(d, image);
}
else
{
btnHostStatus.Image = Image;
btnHostStatus.Image = image;
btnHostStatus.Tag = "checkfinished";
}
}
public void SetHostStatus(object ConnectionInfo)
public void SetHostStatus(object connectionInfo)
{
try
{
btnHostStatus.Image = Resources.HostStatus_Check;
// To check status, ConnectionInfo must be an mRemoteNG.Connection.Info that is not a container
if (ConnectionInfo is ConnectionInfo)
if (connectionInfo is ConnectionInfo)
{
if (((ConnectionInfo)ConnectionInfo).IsContainer)
if (((ConnectionInfo)connectionInfo).IsContainer)
{
return;
}
@@ -1773,9 +1606,9 @@ namespace mRemoteNG.UI.Window
}
btnHostStatus.Tag = "checking";
HostName = ((ConnectionInfo)ConnectionInfo).Hostname;
pThread = new System.Threading.Thread(CheckHostAlive);
pThread.SetApartmentState(System.Threading.ApartmentState.STA);
HostName = ((ConnectionInfo)connectionInfo).Hostname;
pThread = new Thread(CheckHostAlive);
pThread.SetApartmentState(ApartmentState.STA);
pThread.IsBackground = true;
pThread.Start();
}
@@ -1793,7 +1626,7 @@ namespace mRemoteNG.UI.Window
{
propertyGridContextMenuShowHelpText.Checked = Settings.Default.ShowConfigHelpText;
var gridItem = pGrid.SelectedGridItem;
propertyGridContextMenuReset.Enabled = Convert.ToBoolean(pGrid.SelectedObject != null && gridItem != null && gridItem.PropertyDescriptor != null && gridItem.PropertyDescriptor.CanResetValue(pGrid.SelectedObject));
propertyGridContextMenuReset.Enabled = Convert.ToBoolean(pGrid.SelectedObject != null && gridItem?.PropertyDescriptor != null && gridItem.PropertyDescriptor.CanResetValue(pGrid.SelectedObject));
}
catch (Exception ex)
{
@@ -1806,7 +1639,7 @@ namespace mRemoteNG.UI.Window
try
{
var gridItem = pGrid.SelectedGridItem;
if (pGrid.SelectedObject != null && gridItem != null && gridItem.PropertyDescriptor != null && gridItem.PropertyDescriptor.CanResetValue(pGrid.SelectedObject))
if (pGrid.SelectedObject != null && gridItem?.PropertyDescriptor != null && gridItem.PropertyDescriptor.CanResetValue(pGrid.SelectedObject))
{
pGrid.ResetSelectedProperty();
}

View File

@@ -89,7 +89,7 @@ namespace mRemoteNG.UI.Window
this.lblStartIP.AutoSize = true;
this.lblStartIP.Location = new System.Drawing.Point(12, 7);
this.lblStartIP.Name = "lblStartIP";
this.lblStartIP.Size = new System.Drawing.Size(57, 19);
this.lblStartIP.Size = new System.Drawing.Size(46, 13);
this.lblStartIP.TabIndex = 0;
this.lblStartIP.Text = "Start IP:";
//
@@ -98,7 +98,7 @@ namespace mRemoteNG.UI.Window
this.lblEndIP.AutoSize = true;
this.lblEndIP.Location = new System.Drawing.Point(148, 7);
this.lblEndIP.Name = "lblEndIP";
this.lblEndIP.Size = new System.Drawing.Size(51, 19);
this.lblEndIP.Size = new System.Drawing.Size(42, 13);
this.lblEndIP.TabIndex = 5;
this.lblEndIP.Text = "End IP:";
//
@@ -106,9 +106,10 @@ namespace mRemoteNG.UI.Window
//
this.btnScan.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnScan.Image = global::mRemoteNG.Resources.Search;
this.btnScan.Location = new System.Drawing.Point(597, 9);
this.btnScan.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.btnScan.Location = new System.Drawing.Point(592, 7);
this.btnScan.Name = "btnScan";
this.btnScan.Size = new System.Drawing.Size(86, 58);
this.btnScan.Size = new System.Drawing.Size(100, 60);
this.btnScan.TabIndex = 20;
this.btnScan.Text = "&Scan";
this.btnScan.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
@@ -126,7 +127,7 @@ namespace mRemoteNG.UI.Window
this.lvHosts.HideSelection = false;
this.lvHosts.Location = new System.Drawing.Point(12, 73);
this.lvHosts.Name = "lvHosts";
this.lvHosts.Size = new System.Drawing.Size(671, 265);
this.lvHosts.Size = new System.Drawing.Size(680, 290);
this.lvHosts.TabIndex = 26;
this.lvHosts.UseCompatibleStateImageBehavior = false;
this.lvHosts.View = System.Windows.Forms.View.Details;
@@ -134,7 +135,7 @@ namespace mRemoteNG.UI.Window
// btnImport
//
this.btnImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnImport.Location = new System.Drawing.Point(585, 3);
this.btnImport.Location = new System.Drawing.Point(594, 3);
this.btnImport.Name = "btnImport";
this.btnImport.Size = new System.Drawing.Size(75, 31);
this.btnImport.TabIndex = 101;
@@ -157,7 +158,7 @@ namespace mRemoteNG.UI.Window
"VNC"});
this.cbProtocol.Location = new System.Drawing.Point(157, 6);
this.cbProtocol.Name = "cbProtocol";
this.cbProtocol.Size = new System.Drawing.Size(122, 27);
this.cbProtocol.Size = new System.Drawing.Size(122, 21);
this.cbProtocol.TabIndex = 28;
//
// lblOnlyImport
@@ -166,7 +167,7 @@ namespace mRemoteNG.UI.Window
this.lblOnlyImport.AutoSize = true;
this.lblOnlyImport.Location = new System.Drawing.Point(5, 13);
this.lblOnlyImport.Name = "lblOnlyImport";
this.lblOnlyImport.Size = new System.Drawing.Size(125, 19);
this.lblOnlyImport.Size = new System.Drawing.Size(104, 13);
this.lblOnlyImport.TabIndex = 1;
this.lblOnlyImport.Text = "Protocol to import:";
//
@@ -224,7 +225,7 @@ namespace mRemoteNG.UI.Window
//
this.prgBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.prgBar.Location = new System.Drawing.Point(12, 51);
this.prgBar.Location = new System.Drawing.Point(12, 50);
this.prgBar.Name = "prgBar";
this.prgBar.Size = new System.Drawing.Size(579, 16);
this.prgBar.Step = 1;
@@ -250,7 +251,7 @@ namespace mRemoteNG.UI.Window
0,
0});
this.portEnd.Name = "portEnd";
this.portEnd.Size = new System.Drawing.Size(67, 26);
this.portEnd.Size = new System.Drawing.Size(67, 22);
this.portEnd.TabIndex = 15;
this.portEnd.Enter += new System.EventHandler(this.portEnd_Enter);
//
@@ -263,7 +264,7 @@ namespace mRemoteNG.UI.Window
0,
0});
this.portStart.Name = "portStart";
this.portStart.Size = new System.Drawing.Size(67, 26);
this.portStart.Size = new System.Drawing.Size(67, 22);
this.portStart.TabIndex = 5;
this.portStart.Enter += new System.EventHandler(this.portStart_Enter);
//
@@ -272,7 +273,7 @@ namespace mRemoteNG.UI.Window
this.Label2.AutoSize = true;
this.Label2.Location = new System.Drawing.Point(162, 7);
this.Label2.Name = "Label2";
this.Label2.Size = new System.Drawing.Size(64, 19);
this.Label2.Size = new System.Drawing.Size(54, 13);
this.Label2.TabIndex = 10;
this.Label2.Text = "End Port:";
//
@@ -281,7 +282,7 @@ namespace mRemoteNG.UI.Window
this.Label1.AutoSize = true;
this.Label1.Location = new System.Drawing.Point(3, 7);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(70, 19);
this.Label1.Size = new System.Drawing.Size(58, 13);
this.Label1.TabIndex = 0;
this.Label1.Text = "Start Port:";
//
@@ -292,15 +293,15 @@ namespace mRemoteNG.UI.Window
this.pnlImport.Controls.Add(this.btnImport);
this.pnlImport.Controls.Add(this.lblOnlyImport);
this.pnlImport.Controls.Add(this.cbProtocol);
this.pnlImport.Location = new System.Drawing.Point(12, 344);
this.pnlImport.Location = new System.Drawing.Point(12, 369);
this.pnlImport.Name = "pnlImport";
this.pnlImport.Size = new System.Drawing.Size(671, 40);
this.pnlImport.Size = new System.Drawing.Size(680, 40);
this.pnlImport.TabIndex = 102;
//
// PortScanWindow
//
this.AcceptButton = this.btnImport;
this.ClientSize = new System.Drawing.Size(695, 396);
this.ClientSize = new System.Drawing.Size(704, 421);
this.Controls.Add(this.pnlImport);
this.Controls.Add(this.lvHosts);
this.Controls.Add(this.pnlPorts);

File diff suppressed because it is too large Load Diff

View File

@@ -588,6 +588,9 @@
<setting name="ShowCompleteConsPathInTitle" serializeAs="String">
<value>False</value>
</setting>
<setting name="ConRDPOverallConnectionTimeout" serializeAs="String">
<value>20</value>
</setting>
</mRemoteNG.Settings>
</userSettings>
<applicationSettings>

View File

@@ -63,10 +63,6 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>References\ADTree.dll</HintPath>
</Reference>
<Reference Include="DiffieHellman, Version=0.0.0.0, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>References\DiffieHellman.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>References\log4net.dll</HintPath>
@@ -76,9 +72,9 @@
<HintPath>References\MagicLibrary.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Org.Mentalis.Security, Version=1.0.13.715, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>References\Org.Mentalis.Security.dll</HintPath>
<Reference Include="Renci.SshNet, Version=2016.0.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
<HintPath>..\packages\SSH.NET.2016.0.0\lib\net40\Renci.SshNet.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
@@ -89,10 +85,6 @@
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Tamir.SharpSSH, Version=1.1.1.13, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>References\Tamir.SharpSSH.dll</HintPath>
</Reference>
<Reference Include="VncSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=61974755c7bfea7c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>References\VncSharp.dll</HintPath>
@@ -163,7 +155,8 @@
<Compile Include="Connection\ConnectionInfoInheritance.cs" />
<Compile Include="App\ProgramRoot.cs" />
<Compile Include="Connection\Converter.cs" />
<Compile Include="Connection\Inheritance.cs" />
<Compile Include="Connection\DefaultConnectionInheritance.cs" />
<Compile Include="Connection\IInheritable.cs" />
<Compile Include="Connection\Parent.cs" />
<Compile Include="Connection\Protocol\ProtocolFactory.cs" />
<Compile Include="Connection\Protocol\RDP\RDPEnums.cs" />
@@ -181,6 +174,7 @@
<Compile Include="Tools\ArgumentParser.cs" />
<Compile Include="Tools\CmdArgumentsInterpreter.cs" />
<Compile Include="Tools\ExternalToolsTypeConverter.cs" />
<Compile Include="Tools\SecureTransfer.cs" />
<Compile Include="Tools\Sorting\TreeNodeSorter.cs" />
<Compile Include="Tools\Sorting\Sortable.cs" />
<Compile Include="Tree\ConnectionTree.cs" />

View File

@@ -4,4 +4,5 @@
<package id="DockPanelSuite" version="2.10.0" targetFramework="net40" />
<package id="DockPanelSuite.ThemeVS2012Light" version="2.10.0" targetFramework="net40" />
<package id="Geckofx45" version="45.0.20" targetFramework="net40" />
<package id="SSH.NET" version="2016.0.0" targetFramework="net40" />
</packages>