Merge branch 'develop' into push_settings_recursively

# Conflicts:
#	mRemoteV1/Resources/Language/Language.Designer.cs
#	mRemoteV1/Resources/Language/Language.resx
This commit is contained in:
David Sparer
2019-06-18 09:10:23 -05:00
50 changed files with 866 additions and 698 deletions

View File

@@ -7,8 +7,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
### Added
- #870: Added option to push inheritance settings to child nodes recursively
### Changed
- #1468: Improved mRemoteNG startup time
- #1443: Chinese (simplified) translation improvements
- #1437: Norwegian translation improvements
- #1239: Increased default key derivation function (KDF) iterations from 1000 to 10000
- Moved most RDP enums outside of the RDP protocol class. Scripts which reference these enums will need to be updated.
### Fixed
- #1447: Exception occurs when resetting layout
- #1439: Searching in hosts tree loses first keystroke

View File

@@ -38,7 +38,7 @@ For a detailed feature list and general usage support, refer to the [User Manual
## Installation
Before installing make sure you have all the required [prerequisites](https://github.com/mRemoteNG/mRemoteNG/wiki/Prerequisites).
Before installing make sure you fullfill all the [minimum requirements](https://mremoteng.readthedocs.io/en/latest/installation/minimum_requirements.html).
mRemoteNG is available as a redistributable msi package, and can be downloaded from the following locations:
* [GitHub](https://github.com/mRemoteNG/mRemoteNG/releases)

View File

@@ -98,9 +98,9 @@ namespace mRemoteNGTests.Config.Serializers.ConnectionSerializers.Csv
UseCredSsp = true,
RenderingEngine = HTTPBase.RenderingEngine.Gecko,
ICAEncryptionStrength = IcaProtocol.EncryptionStrength.Encr40Bit,
RDPAuthenticationLevel = RdpProtocol.AuthenticationLevel.WarnOnFailedAuth,
Colors = RdpProtocol.RDPColors.Colors16Bit,
Resolution = RdpProtocol.RDPResolutions.Res1366x768,
RDPAuthenticationLevel = AuthenticationLevel.WarnOnFailedAuth,
Colors = RDPColors.Colors16Bit,
Resolution = RDPResolutions.Res1366x768,
AutomaticResize = true,
DisplayWallpaper = true,
DisplayThemes = true,
@@ -111,7 +111,7 @@ namespace mRemoteNGTests.Config.Serializers.ConnectionSerializers.Csv
RedirectPorts = true,
RedirectPrinters = true,
RedirectSmartCards = true,
RedirectSound = RdpProtocol.RDPSounds.LeaveAtRemoteComputer,
RedirectSound = RDPSounds.LeaveAtRemoteComputer,
RedirectAudioCapture = true,
RedirectKeys = true,
VNCCompression = ProtocolVNC.Compression.Comp4,
@@ -122,8 +122,8 @@ namespace mRemoteNGTests.Config.Serializers.ConnectionSerializers.Csv
VNCColors = ProtocolVNC.Colors.Col8Bit,
VNCSmartSizeMode = ProtocolVNC.SmartSizeMode.SmartSAspect,
VNCViewOnly = true,
RDGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Detect,
RDGatewayUseConnectionCredentials = RdpProtocol.RDGatewayUseConnectionCredentials.SmartCard
RDGatewayUsageMethod = RDGatewayUsageMethod.Detect,
RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard
};
}

View File

@@ -19,9 +19,9 @@ namespace mRemoteNGTests.Config.Serializers.MiscSerializers
private const string ExpectedGatewayHostname = "gatewayhostname.domain.com";
private const string ExpectedLoadBalanceInfo = "tsv://MS Terminal Services Plugin.1.RDS-NAME";
private const int ExpectedPort = 9933;
private const RdpProtocol.RDPColors ExpectedColors = RdpProtocol.RDPColors.Colors24Bit;
private const RDPColors ExpectedColors = RDPColors.Colors24Bit;
private const bool ExpectedBitmapCaching = false;
private const RdpProtocol.RDPResolutions ExpectedResolutionMode = RdpProtocol.RDPResolutions.FitToWindow;
private const RDPResolutions ExpectedResolutionMode = RDPResolutions.FitToWindow;
private const bool ExpectedWallpaperDisplay = true;
private const bool ExpectedThemesDisplay = true;
private const bool ExpectedFontSmoothing = true;
@@ -30,7 +30,7 @@ namespace mRemoteNGTests.Config.Serializers.MiscSerializers
private const bool ExpectedDriveRedirection = true;
private const bool ExpectedPortRedirection = true;
private const bool ExpectedPrinterRedirection = true;
private const RdpProtocol.RDPSounds ExpectedSoundRedirection = RdpProtocol.RDPSounds.BringToThisComputer;
private const RDPSounds ExpectedSoundRedirection = RDPSounds.BringToThisComputer;
[OneTimeSetUp]

View File

@@ -24,20 +24,20 @@ namespace mRemoteNGTests.Config.Serializers.MiscSerializers
private const string ExpectedPassword = "passwordHere!";
private const bool ExpectedUseConsoleSession = true;
private const int ExpectedPort = 9933;
private const RdpProtocol.RDGatewayUsageMethod ExpectedGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Always;
private const RDGatewayUsageMethod ExpectedGatewayUsageMethod = RDGatewayUsageMethod.Always;
private const string ExpectedGatewayHostname = "gatewayserverhost.innerdomain.net";
private const string ExpectedGatewayUsername = "gatewayusername";
private const string ExpectedGatewayDomain = "innerdomain";
private const string ExpectedGatewayPassword = "gatewayPassword123";
private const RdpProtocol.RDPResolutions ExpectedRdpResolution = RdpProtocol.RDPResolutions.FitToWindow;
private const RdpProtocol.RDPColors ExpectedRdpColorDepth = RdpProtocol.RDPColors.Colors24Bit;
private const RdpProtocol.RDPSounds ExpectedAudioRedirection = RdpProtocol.RDPSounds.DoNotPlay;
private const RDPResolutions ExpectedRdpResolution = RDPResolutions.FitToWindow;
private const RDPColors ExpectedRdpColorDepth = RDPColors.Colors24Bit;
private const RDPSounds ExpectedAudioRedirection = RDPSounds.DoNotPlay;
private const bool ExpectedKeyRedirection = true;
private const bool ExpectedSmartcardRedirection = true;
private const bool ExpectedDriveRedirection = true;
private const bool ExpectedPortRedirection = true;
private const bool ExpectedPrinterRedirection = true;
private const RdpProtocol.AuthenticationLevel ExpectedAuthLevel = RdpProtocol.AuthenticationLevel.WarnOnFailedAuth;
private const AuthenticationLevel ExpectedAuthLevel = AuthenticationLevel.WarnOnFailedAuth;
[OneTimeSetUp]

View File

@@ -23,20 +23,20 @@ namespace mRemoteNGTests.Config.Serializers.MiscSerializers
private const string ExpectedPassword = "passwordHere!";
private const bool ExpectedUseConsoleSession = true;
private const int ExpectedPort = 9933;
private const RdpProtocol.RDGatewayUsageMethod ExpectedGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Always;
private const RDGatewayUsageMethod ExpectedGatewayUsageMethod = RDGatewayUsageMethod.Always;
private const string ExpectedGatewayHostname = "gatewayserverhost.innerdomain.net";
private const string ExpectedGatewayUsername = "gatewayusername";
private const string ExpectedGatewayDomain = "innerdomain";
private const string ExpectedGatewayPassword = "gatewayPassword123";
private const RdpProtocol.RDPResolutions ExpectedRdpResolution = RdpProtocol.RDPResolutions.FitToWindow;
private const RdpProtocol.RDPColors ExpectedRdpColorDepth = RdpProtocol.RDPColors.Colors24Bit;
private const RdpProtocol.RDPSounds ExpectedAudioRedirection = RdpProtocol.RDPSounds.DoNotPlay;
private const RDPResolutions ExpectedRdpResolution = RDPResolutions.FitToWindow;
private const RDPColors ExpectedRdpColorDepth = RDPColors.Colors24Bit;
private const RDPSounds ExpectedAudioRedirection = RDPSounds.DoNotPlay;
private const bool ExpectedKeyRedirection = true;
private const bool ExpectedSmartcardRedirection = true;
private const bool ExpectedDriveRedirection = true;
private const bool ExpectedPortRedirection = true;
private const bool ExpectedPrinterRedirection = true;
private const RdpProtocol.AuthenticationLevel ExpectedAuthLevel = RdpProtocol.AuthenticationLevel.AuthRequired;
private const AuthenticationLevel ExpectedAuthLevel = AuthenticationLevel.AuthRequired;
[OneTimeSetUp]

View File

@@ -165,7 +165,7 @@ namespace mRemoteNGTests.Connection
{
var wasCalled = false;
_testAbstractConnectionInfoData.PropertyChanged += (sender, args) => wasCalled = true;
_testAbstractConnectionInfoData.RDPAuthenticationLevel = RdpProtocol.AuthenticationLevel.AuthRequired;
_testAbstractConnectionInfoData.RDPAuthenticationLevel = AuthenticationLevel.AuthRequired;
Assert.That(wasCalled, Is.True);
}
@@ -201,7 +201,7 @@ namespace mRemoteNGTests.Connection
{
var wasCalled = false;
_testAbstractConnectionInfoData.PropertyChanged += (sender, args) => wasCalled = true;
_testAbstractConnectionInfoData.RDGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Always;
_testAbstractConnectionInfoData.RDGatewayUsageMethod = RDGatewayUsageMethod.Always;
Assert.That(wasCalled, Is.True);
}
@@ -219,7 +219,7 @@ namespace mRemoteNGTests.Connection
{
var wasCalled = false;
_testAbstractConnectionInfoData.PropertyChanged += (sender, args) => wasCalled = true;
_testAbstractConnectionInfoData.RDGatewayUseConnectionCredentials = RdpProtocol.RDGatewayUseConnectionCredentials.SmartCard;
_testAbstractConnectionInfoData.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.SmartCard;
Assert.That(wasCalled, Is.True);
}
@@ -255,7 +255,7 @@ namespace mRemoteNGTests.Connection
{
var wasCalled = false;
_testAbstractConnectionInfoData.PropertyChanged += (sender, args) => wasCalled = true;
_testAbstractConnectionInfoData.Resolution = RdpProtocol.RDPResolutions.Res1366x768;
_testAbstractConnectionInfoData.Resolution = RDPResolutions.Res1366x768;
Assert.That(wasCalled, Is.True);
}
@@ -273,7 +273,7 @@ namespace mRemoteNGTests.Connection
{
var wasCalled = false;
_testAbstractConnectionInfoData.PropertyChanged += (sender, args) => wasCalled = true;
_testAbstractConnectionInfoData.Colors = RdpProtocol.RDPColors.Colors16Bit;
_testAbstractConnectionInfoData.Colors = RDPColors.Colors16Bit;
Assert.That(wasCalled, Is.True);
}
@@ -372,7 +372,7 @@ namespace mRemoteNGTests.Connection
{
var wasCalled = false;
_testAbstractConnectionInfoData.PropertyChanged += (sender, args) => wasCalled = true;
_testAbstractConnectionInfoData.RedirectSound = RdpProtocol.RDPSounds.DoNotPlay;
_testAbstractConnectionInfoData.RedirectSound = RDPSounds.DoNotPlay;
Assert.That(wasCalled, Is.True);
}

View File

@@ -184,10 +184,10 @@ namespace mRemoteNGTests.UI.Window.ConfigWindowTests
: new ConnectionInfo();
node.Protocol = protocol;
node.Resolution = RdpProtocol.RDPResolutions.Res800x600;
node.RDGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Never;
node.RDGatewayUseConnectionCredentials = RdpProtocol.RDGatewayUseConnectionCredentials.Yes;
node.RedirectSound = RdpProtocol.RDPSounds.DoNotPlay;
node.Resolution = RDPResolutions.Res800x600;
node.RDGatewayUsageMethod = RDGatewayUsageMethod.Never;
node.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.Yes;
node.RedirectSound = RDPSounds.DoNotPlay;
node.VNCAuthMode = ProtocolVNC.AuthMode.AuthVNC;
node.VNCProxyType = ProtocolVNC.ProxyType.ProxyNone;
node.Inheritance.TurnOffInheritanceCompletely();

View File

@@ -18,12 +18,12 @@ namespace mRemoteNGTests.UI.Window.ConfigWindowTests
RunVerification();
}
[TestCase(RdpProtocol.RDGatewayUsageMethod.Always)]
[TestCase(RdpProtocol.RDGatewayUsageMethod.Detect)]
public void RdGatewayPropertiesShown_WhenRdGatewayUsageMethodIsNotNever(RdpProtocol.RDGatewayUsageMethod gatewayUsageMethod)
[TestCase(RDGatewayUsageMethod.Always)]
[TestCase(RDGatewayUsageMethod.Detect)]
public void RdGatewayPropertiesShown_WhenRdGatewayUsageMethodIsNotNever(RDGatewayUsageMethod gatewayUsageMethod)
{
ConnectionInfo.RDGatewayUsageMethod = gatewayUsageMethod;
ConnectionInfo.RDGatewayUseConnectionCredentials = RdpProtocol.RDGatewayUseConnectionCredentials.Yes;
ConnectionInfo.RDGatewayUseConnectionCredentials = RDGatewayUseConnectionCredentials.Yes;
ExpectedPropertyList.AddRange(new []
{
nameof(mRemoteNG.Connection.ConnectionInfo.RDGatewayHostname),
@@ -33,11 +33,11 @@ namespace mRemoteNGTests.UI.Window.ConfigWindowTests
RunVerification();
}
[TestCase(RdpProtocol.RDGatewayUseConnectionCredentials.No)]
[TestCase(RdpProtocol.RDGatewayUseConnectionCredentials.SmartCard)]
public void RdGatewayPropertiesShown_WhenRDGatewayUseConnectionCredentialsIsNotYes(RdpProtocol.RDGatewayUseConnectionCredentials useConnectionCredentials)
[TestCase(RDGatewayUseConnectionCredentials.No)]
[TestCase(RDGatewayUseConnectionCredentials.SmartCard)]
public void RdGatewayPropertiesShown_WhenRDGatewayUseConnectionCredentialsIsNotYes(RDGatewayUseConnectionCredentials useConnectionCredentials)
{
ConnectionInfo.RDGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Always;
ConnectionInfo.RDGatewayUsageMethod = RDGatewayUsageMethod.Always;
ConnectionInfo.RDGatewayUseConnectionCredentials = useConnectionCredentials;
ExpectedPropertyList.AddRange(new []
{
@@ -54,15 +54,15 @@ namespace mRemoteNGTests.UI.Window.ConfigWindowTests
[Test]
public void SoundQualityPropertyShown_WhenRdpSoundsSetToBringToThisComputer()
{
ConnectionInfo.RedirectSound = RdpProtocol.RDPSounds.BringToThisComputer;
ConnectionInfo.RedirectSound = RDPSounds.BringToThisComputer;
ExpectedPropertyList.Add(nameof(mRemoteNG.Connection.ConnectionInfo.SoundQuality));
RunVerification();
}
[TestCase(RdpProtocol.RDPResolutions.FitToWindow)]
[TestCase(RdpProtocol.RDPResolutions.Fullscreen)]
public void AutomaticResizePropertyShown_WhenResolutionIsDynamic(RdpProtocol.RDPResolutions resolution)
[TestCase(RDPResolutions.FitToWindow)]
[TestCase(RDPResolutions.Fullscreen)]
public void AutomaticResizePropertyShown_WhenResolutionIsDynamic(RDPResolutions resolution)
{
ConnectionInfo.Resolution = resolution;
ExpectedPropertyList.Add(nameof(mRemoteNG.Connection.ConnectionInfo.AutomaticResize));

View File

@@ -76,7 +76,7 @@ namespace mRemoteNG.App.Initialization
var architecture = string.Empty;
try
{
foreach (var o in new ManagementObjectSearcher("SELECT * FROM Win32_Processor WHERE DeviceID=\'CPU0\'")
foreach (var o in new ManagementObjectSearcher("SELECT AddressWidth FROM Win32_Processor WHERE DeviceID=\'CPU0\'")
.Get())
{
var managementObject = (ManagementObject)o;

View File

@@ -32,19 +32,16 @@ namespace mRemoteNG.Config.Connections
try
{
var cryptographyProvider = new CryptoProviderFactoryFromSettings().Build();
var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
cryptographyProvider,
connectionTreeModel
.RootNodes.OfType<RootNodeInfo>()
.First().PasswordString
.ConvertToSecureString(),
_saveFilter);
var xmlConnectionsSerializer =
new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer)
{
UseFullEncryption = mRemoteNG.Settings.Default.EncryptCompleteConnectionsFile
};
var xml = xmlConnectionsSerializer.Serialize(connectionTreeModel);
var serializerFactory = new XmlConnectionSerializerFactory();
var xmlConnectionsSerializer = serializerFactory.Build(
cryptographyProvider,
connectionTreeModel,
_saveFilter,
mRemoteNG.Settings.Default.EncryptCompleteConnectionsFile);
var rootNode = connectionTreeModel.RootNodes.OfType<RootNodeInfo>().First();
var xml = xmlConnectionsSerializer.Serialize(rootNode);
var fileDataProvider = new FileDataProviderWithRollingBackup(_connectionFileName);
fileDataProvider.Save(xml);

View File

@@ -174,21 +174,21 @@ namespace mRemoteNG.Config.Serializers.Csv
if (headers.Contains("RDPAuthenticationLevel"))
{
RdpProtocol.AuthenticationLevel value;
AuthenticationLevel value;
if (Enum.TryParse(connectionCsv[headers.IndexOf("RDPAuthenticationLevel")], out value))
connectionRecord.RDPAuthenticationLevel = value;
}
if (headers.Contains("Colors"))
{
RdpProtocol.RDPColors value;
RDPColors value;
if (Enum.TryParse(connectionCsv[headers.IndexOf("Colors")], out value))
connectionRecord.Colors = value;
}
if (headers.Contains("Resolution"))
{
RdpProtocol.RDPResolutions value;
RDPResolutions value;
if (Enum.TryParse(connectionCsv[headers.IndexOf("Resolution")], out value))
connectionRecord.Resolution = value;
}
@@ -272,7 +272,7 @@ namespace mRemoteNG.Config.Serializers.Csv
if (headers.Contains("RedirectSound"))
{
RdpProtocol.RDPSounds value;
RDPSounds value;
if (Enum.TryParse(connectionCsv[headers.IndexOf("RedirectSound")], out value))
connectionRecord.RedirectSound = value;
}
@@ -349,14 +349,14 @@ namespace mRemoteNG.Config.Serializers.Csv
if (headers.Contains("RDGatewayUsageMethod"))
{
RdpProtocol.RDGatewayUsageMethod value;
RDGatewayUsageMethod value;
if (Enum.TryParse(connectionCsv[headers.IndexOf("RDGatewayUsageMethod")], out value))
connectionRecord.RDGatewayUsageMethod = value;
}
if (headers.Contains("RDGatewayUseConnectionCredentials"))
{
RdpProtocol.RDGatewayUseConnectionCredentials value;
RDGatewayUseConnectionCredentials value;
if (Enum.TryParse(connectionCsv[headers.IndexOf("RDGatewayUseConnectionCredentials")], out value))
connectionRecord.RDGatewayUseConnectionCredentials = value;
}

View File

@@ -100,15 +100,15 @@ namespace mRemoteNG.Config.Serializers.MsSql
(IcaProtocol.EncryptionStrength)Enum.Parse(typeof(IcaProtocol.EncryptionStrength),
(string)dataRow["ICAEncryptionStrength"]);
connectionInfo.RDPAuthenticationLevel =
(RdpProtocol.AuthenticationLevel)Enum.Parse(typeof(RdpProtocol.AuthenticationLevel),
(AuthenticationLevel)Enum.Parse(typeof(AuthenticationLevel),
(string)dataRow["RDPAuthenticationLevel"]);
connectionInfo.RDPMinutesToIdleTimeout = (int)dataRow["RDPMinutesToIdleTimeout"];
connectionInfo.RDPAlertIdleTimeout = (bool)dataRow["RDPAlertIdleTimeout"];
connectionInfo.LoadBalanceInfo = (string)dataRow["LoadBalanceInfo"];
connectionInfo.Colors =
(RdpProtocol.RDPColors)Enum.Parse(typeof(RdpProtocol.RDPColors), (string)dataRow["Colors"]);
(RDPColors)Enum.Parse(typeof(RDPColors), (string)dataRow["Colors"]);
connectionInfo.Resolution =
(RdpProtocol.RDPResolutions)Enum.Parse(typeof(RdpProtocol.RDPResolutions),
(RDPResolutions)Enum.Parse(typeof(RDPResolutions),
(string)dataRow["Resolution"]);
connectionInfo.AutomaticResize = (bool)dataRow["AutomaticResize"];
connectionInfo.DisplayWallpaper = (bool)dataRow["DisplayWallpaper"];
@@ -122,8 +122,8 @@ namespace mRemoteNG.Config.Serializers.MsSql
connectionInfo.RedirectClipboard = (bool)dataRow["RedirectClipboard"];
connectionInfo.RedirectSmartCards = (bool)dataRow["RedirectSmartCards"];
connectionInfo.RedirectSound =
(RdpProtocol.RDPSounds)Enum.Parse(typeof(RdpProtocol.RDPSounds), (string)dataRow["RedirectSound"]);
connectionInfo.SoundQuality = (RdpProtocol.RDPSoundQuality)Enum.Parse(typeof(RdpProtocol.RDPSoundQuality),
(RDPSounds)Enum.Parse(typeof(RDPSounds), (string)dataRow["RedirectSound"]);
connectionInfo.SoundQuality = (RDPSoundQuality)Enum.Parse(typeof(RDPSoundQuality),
(string)dataRow["SoundQuality"]);
connectionInfo.RedirectAudioCapture = (bool)dataRow["RedirectAudioCapture"];
@@ -152,15 +152,12 @@ namespace mRemoteNG.Config.Serializers.MsSql
["VNCSmartSizeMode"]);
connectionInfo.VNCViewOnly = (bool)dataRow["VNCViewOnly"];
connectionInfo.RDGatewayUsageMethod =
(RdpProtocol.RDGatewayUsageMethod)Enum.Parse(typeof(RdpProtocol.RDGatewayUsageMethod),
(RDGatewayUsageMethod)Enum.Parse(typeof(RDGatewayUsageMethod),
(string)dataRow["RDGatewayUsageMethod"]);
connectionInfo.RDGatewayHostname = (string)dataRow["RDGatewayHostname"];
connectionInfo.RDGatewayUseConnectionCredentials =
(RdpProtocol.RDGatewayUseConnectionCredentials)Enum.Parse(
typeof(RdpProtocol.
RDGatewayUseConnectionCredentials),
(string)dataRow
["RDGatewayUseConnectionCredentials"]);
(RDGatewayUseConnectionCredentials)Enum.Parse(typeof(RDGatewayUseConnectionCredentials),
(string)dataRow["RDGatewayUseConnectionCredentials"]);
connectionInfo.RDGatewayUsername = (string)dataRow["RDGatewayUsername"];
connectionInfo.RDGatewayPassword = DecryptValue((string)dataRow["RDGatewayPassword"]);
connectionInfo.RDGatewayDomain = (string)dataRow["RDGatewayDomain"];

View File

@@ -20,7 +20,8 @@ namespace mRemoteNG.Config.Serializers.MsSql
.Select(m => new XElement("Node",
new XAttribute("ConnectionId", m.ConnectionId),
new XAttribute("Connected", m.Connected),
new XAttribute("Expanded", m.Expanded)));
new XAttribute("Expanded", m.Expanded),
new XAttribute("Favorite", m.Favorite)));
var root = new XElement("LocalConnections", localConnections);
var xdoc = new XDocument(new XDeclaration("1.0", "utf-8", null), root);
@@ -40,7 +41,8 @@ namespace mRemoteNG.Config.Serializers.MsSql
{
ConnectionId = e.Attribute("ConnectionId")?.Value,
Connected = bool.Parse(e.Attribute("Connected")?.Value ?? "False"),
Expanded = bool.Parse(e.Attribute("Expanded")?.Value ?? "False")
Expanded = bool.Parse(e.Attribute("Expanded")?.Value ?? "False"),
Favorite = bool.Parse(e.Attribute("Favorite")?.Value ?? "False")
});
}

View File

@@ -0,0 +1,33 @@
using System.Linq;
using mRemoteNG.Connection;
using mRemoteNG.Security;
using mRemoteNG.Tree;
using mRemoteNG.Tree.Root;
namespace mRemoteNG.Config.Serializers.Xml
{
public class XmlConnectionSerializerFactory
{
public ISerializer<ConnectionInfo, string> Build(
ICryptographyProvider cryptographyProvider,
ConnectionTreeModel connectionTreeModel,
SaveFilter saveFilter = null,
bool useFullEncryption = false)
{
var encryptionKey = connectionTreeModel
.RootNodes.OfType<RootNodeInfo>()
.First().PasswordString
.ConvertToSecureString();
var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
cryptographyProvider,
encryptionKey,
saveFilter ?? new SaveFilter());
return new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer)
{
UseFullEncryption = useFullEncryption
};
}
}
}

View File

@@ -226,8 +226,8 @@ namespace mRemoteNG.Config.Serializers.Xml
if (_confVersion < 1.1) //1.0 - 0.1
{
connectionInfo.Resolution = xmlnode.GetAttributeAsBool("Fullscreen")
? RdpProtocol.RDPResolutions.Fullscreen
: RdpProtocol.RDPResolutions.FitToWindow;
? RDPResolutions.Fullscreen
: RDPResolutions.FitToWindow;
}
if (!Runtime.UseCredentialManager || _confVersion <= 2.6) // 0.2 - 2.6
@@ -318,9 +318,9 @@ namespace mRemoteNG.Config.Serializers.Xml
if (_confVersion >= 1.3)
{
connectionInfo.Colors = xmlnode.GetAttributeAsEnum<RdpProtocol.RDPColors>("Colors");
connectionInfo.Resolution = xmlnode.GetAttributeAsEnum<RdpProtocol.RDPResolutions>("Resolution");
connectionInfo.RedirectSound = xmlnode.GetAttributeAsEnum<RdpProtocol.RDPSounds>("RedirectSound");
connectionInfo.Colors = xmlnode.GetAttributeAsEnum<RDPColors>("Colors");
connectionInfo.Resolution = xmlnode.GetAttributeAsEnum<RDPResolutions>("Resolution");
connectionInfo.RedirectSound = xmlnode.GetAttributeAsEnum<RDPSounds>("RedirectSound");
connectionInfo.RedirectAudioCapture = xmlnode.GetAttributeAsBool("RedirectAudioCapture");
}
else
@@ -328,25 +328,25 @@ namespace mRemoteNG.Config.Serializers.Xml
switch (xmlnode.GetAttributeAsInt("Colors"))
{
case 0:
connectionInfo.Colors = RdpProtocol.RDPColors.Colors256;
connectionInfo.Colors = RDPColors.Colors256;
break;
case 1:
connectionInfo.Colors = RdpProtocol.RDPColors.Colors16Bit;
connectionInfo.Colors = RDPColors.Colors16Bit;
break;
case 2:
connectionInfo.Colors = RdpProtocol.RDPColors.Colors24Bit;
connectionInfo.Colors = RDPColors.Colors24Bit;
break;
case 3:
connectionInfo.Colors = RdpProtocol.RDPColors.Colors32Bit;
connectionInfo.Colors = RDPColors.Colors32Bit;
break;
// ReSharper disable once RedundantCaseLabel
case 4:
default:
connectionInfo.Colors = RdpProtocol.RDPColors.Colors15Bit;
connectionInfo.Colors = RDPColors.Colors15Bit;
break;
}
connectionInfo.RedirectSound = xmlnode.GetAttributeAsEnum<RdpProtocol.RDPSounds>("RedirectSound");
connectionInfo.RedirectSound = xmlnode.GetAttributeAsEnum<RDPSounds>("RedirectSound");
connectionInfo.RedirectAudioCapture = xmlnode.GetAttributeAsBool("RedirectAudioCapture");
}
@@ -442,7 +442,7 @@ namespace mRemoteNG.Config.Serializers.Xml
if (_confVersion >= 1.8)
{
connectionInfo.RDPAuthenticationLevel =
xmlnode.GetAttributeAsEnum<RdpProtocol.AuthenticationLevel>("RDPAuthenticationLevel");
xmlnode.GetAttributeAsEnum<AuthenticationLevel>("RDPAuthenticationLevel");
connectionInfo.Inheritance.RDPAuthenticationLevel =
xmlnode.GetAttributeAsBool("InheritRDPAuthenticationLevel");
}
@@ -472,10 +472,10 @@ namespace mRemoteNG.Config.Serializers.Xml
{
// Get settings
connectionInfo.RDGatewayUsageMethod =
xmlnode.GetAttributeAsEnum<RdpProtocol.RDGatewayUsageMethod>("RDGatewayUsageMethod");
xmlnode.GetAttributeAsEnum<RDGatewayUsageMethod>("RDGatewayUsageMethod");
connectionInfo.RDGatewayHostname = xmlnode.GetAttributeAsString("RDGatewayHostname");
connectionInfo.RDGatewayUseConnectionCredentials =
xmlnode.GetAttributeAsEnum<RdpProtocol.RDGatewayUseConnectionCredentials>(
xmlnode.GetAttributeAsEnum<RDGatewayUseConnectionCredentials>(
"RDGatewayUseConnectionCredentials");
connectionInfo.RDGatewayUsername = xmlnode.GetAttributeAsString("RDGatewayUsername");
connectionInfo.RDGatewayPassword =
@@ -526,7 +526,7 @@ namespace mRemoteNG.Config.Serializers.Xml
if (_confVersion >= 2.6)
{
connectionInfo.SoundQuality =
xmlnode.GetAttributeAsEnum<RdpProtocol.RDPSoundQuality>("SoundQuality");
xmlnode.GetAttributeAsEnum<RDPSoundQuality>("SoundQuality");
connectionInfo.Inheritance.SoundQuality = xmlnode.GetAttributeAsBool("InheritSoundQuality");
connectionInfo.RDPMinutesToIdleTimeout = xmlnode.GetAttributeAsInt("RDPMinutesToIdleTimeout");
connectionInfo.Inheritance.RDPMinutesToIdleTimeout =

View File

@@ -61,7 +61,7 @@ namespace mRemoteNG.Config.Serializers.Xml
var serializationTargetAsContainer = serializationTarget as ContainerInfo;
if (serializationTargetAsContainer == null) return;
foreach (var child in serializationTargetAsContainer.Children)
foreach (var child in serializationTargetAsContainer.Children.ToArray())
CompileRecursive(child, newElement);
}

View File

@@ -60,19 +60,19 @@ namespace mRemoteNG.Config.Serializers
switch (value)
{
case "8":
connectionInfo.Colors = RdpProtocol.RDPColors.Colors256;
connectionInfo.Colors = RDPColors.Colors256;
break;
case "15":
connectionInfo.Colors = RdpProtocol.RDPColors.Colors15Bit;
connectionInfo.Colors = RDPColors.Colors15Bit;
break;
case "16":
connectionInfo.Colors = RdpProtocol.RDPColors.Colors16Bit;
connectionInfo.Colors = RDPColors.Colors16Bit;
break;
case "24":
connectionInfo.Colors = RdpProtocol.RDPColors.Colors24Bit;
connectionInfo.Colors = RDPColors.Colors24Bit;
break;
case "32":
connectionInfo.Colors = RdpProtocol.RDPColors.Colors32Bit;
connectionInfo.Colors = RDPColors.Colors32Bit;
break;
}
break;
@@ -81,8 +81,8 @@ namespace mRemoteNG.Config.Serializers
break;
case "screen mode id":
connectionInfo.Resolution = value == "2"
? RdpProtocol.RDPResolutions.Fullscreen
: RdpProtocol.RDPResolutions.FitToWindow;
? RDPResolutions.Fullscreen
: RDPResolutions.FitToWindow;
break;
case "connect to console":
connectionInfo.UseConsoleSession = value == "1";
@@ -118,13 +118,13 @@ namespace mRemoteNG.Config.Serializers
switch (value)
{
case "0":
connectionInfo.RedirectSound = RdpProtocol.RDPSounds.BringToThisComputer;
connectionInfo.RedirectSound = RDPSounds.BringToThisComputer;
break;
case "1":
connectionInfo.RedirectSound = RdpProtocol.RDPSounds.LeaveAtRemoteComputer;
connectionInfo.RedirectSound = RDPSounds.LeaveAtRemoteComputer;
break;
case "2":
connectionInfo.RedirectSound = RdpProtocol.RDPSounds.DoNotPlay;
connectionInfo.RedirectSound = RDPSounds.DoNotPlay;
break;
}
break;
@@ -138,13 +138,13 @@ namespace mRemoteNG.Config.Serializers
switch (value)
{
case "0":
connectionInfo.RDGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Never;
connectionInfo.RDGatewayUsageMethod = RDGatewayUsageMethod.Never;
break;
case "1":
connectionInfo.RDGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Always;
connectionInfo.RDGatewayUsageMethod = RDGatewayUsageMethod.Always;
break;
case "2":
connectionInfo.RDGatewayUsageMethod = RdpProtocol.RDGatewayUsageMethod.Detect;
connectionInfo.RDGatewayUsageMethod = RDGatewayUsageMethod.Detect;
break;
}
break;

View File

@@ -197,8 +197,8 @@ namespace mRemoteNG.Config.Serializers
{
connectionInfo.RDGatewayUsageMethod =
gatewaySettingsNode.SelectSingleNode("./enabled")?.InnerText == "True"
? RdpProtocol.RDGatewayUsageMethod.Always
: RdpProtocol.RDGatewayUsageMethod.Never;
? RDGatewayUsageMethod.Always
: RDGatewayUsageMethod.Never;
connectionInfo.RDGatewayHostname = gatewaySettingsNode.SelectSingleNode("./hostName")?.InnerText ?? string.Empty;
connectionInfo.RDGatewayUsername = gatewaySettingsNode.SelectSingleNode("./userName")?.InnerText ?? string.Empty;
@@ -225,21 +225,21 @@ namespace mRemoteNG.Config.Serializers
if (remoteDesktopNode?.Attributes?["inherit"]?.Value == "None")
{
connectionInfo.Resolution =
Enum.TryParse<RdpProtocol.RDPResolutions>(remoteDesktopNode.SelectSingleNode("./size")?.InnerText.Replace(" ", ""), true, out var rdpResolution)
Enum.TryParse<RDPResolutions>(remoteDesktopNode.SelectSingleNode("./size")?.InnerText.Replace(" ", ""), true, out var rdpResolution)
? rdpResolution
: RdpProtocol.RDPResolutions.FitToWindow;
: RDPResolutions.FitToWindow;
if (remoteDesktopNode.SelectSingleNode("./sameSizeAsClientArea")?.InnerText == "True")
{
connectionInfo.Resolution = RdpProtocol.RDPResolutions.FitToWindow;
connectionInfo.Resolution = RDPResolutions.FitToWindow;
}
if (remoteDesktopNode.SelectSingleNode("./fullScreen")?.InnerText == "True")
{
connectionInfo.Resolution = RdpProtocol.RDPResolutions.Fullscreen;
connectionInfo.Resolution = RDPResolutions.Fullscreen;
}
if (Enum.TryParse<RdpProtocol.RDPColors>(remoteDesktopNode.SelectSingleNode("./colorDepth")?.InnerText, true, out var rdpColors))
if (Enum.TryParse<RDPColors>(remoteDesktopNode.SelectSingleNode("./colorDepth")?.InnerText, true, out var rdpColors))
connectionInfo.Colors = rdpColors;
}
else
@@ -256,15 +256,15 @@ namespace mRemoteNG.Config.Serializers
{
case "0": // Bring to this computer
case "Client":
connectionInfo.RedirectSound = RdpProtocol.RDPSounds.BringToThisComputer;
connectionInfo.RedirectSound = RDPSounds.BringToThisComputer;
break;
case "1": // Leave at remote computer
case "Remote":
connectionInfo.RedirectSound = RdpProtocol.RDPSounds.LeaveAtRemoteComputer;
connectionInfo.RedirectSound = RDPSounds.LeaveAtRemoteComputer;
break;
case "2": // Do not play
case "NoSound":
connectionInfo.RedirectSound = RdpProtocol.RDPSounds.DoNotPlay;
connectionInfo.RedirectSound = RDPSounds.DoNotPlay;
break;
}
@@ -323,15 +323,15 @@ namespace mRemoteNG.Config.Serializers
{
case "0": // No authentication
case "None":
connectionInfo.RDPAuthenticationLevel = RdpProtocol.AuthenticationLevel.NoAuth;
connectionInfo.RDPAuthenticationLevel = AuthenticationLevel.NoAuth;
break;
case "1": // Do not connect if authentication fails
case "Required":
connectionInfo.RDPAuthenticationLevel = RdpProtocol.AuthenticationLevel.AuthRequired;
connectionInfo.RDPAuthenticationLevel = AuthenticationLevel.AuthRequired;
break;
case "2": // Warn if authentication fails
case "Warn":
connectionInfo.RDPAuthenticationLevel = RdpProtocol.AuthenticationLevel.WarnOnFailedAuth;
connectionInfo.RDPAuthenticationLevel = AuthenticationLevel.WarnOnFailedAuth;
break;
}
}

View File

@@ -31,23 +31,23 @@ namespace mRemoteNG.Connection
private string _puttySession;
private IcaProtocol.EncryptionStrength _icaEncryption;
private bool _useConsoleSession;
private RdpProtocol.AuthenticationLevel _rdpAuthenticationLevel;
private AuthenticationLevel _rdpAuthenticationLevel;
private int _rdpMinutesToIdleTimeout;
private bool _rdpAlertIdleTimeout;
private string _loadBalanceInfo;
private HTTPBase.RenderingEngine _renderingEngine;
private bool _useCredSsp;
private RdpProtocol.RDGatewayUsageMethod _rdGatewayUsageMethod;
private RDGatewayUsageMethod _rdGatewayUsageMethod;
private string _rdGatewayHostname;
private RdpProtocol.RDGatewayUseConnectionCredentials _rdGatewayUseConnectionCredentials;
private RDGatewayUseConnectionCredentials _rdGatewayUseConnectionCredentials;
private string _rdGatewayUsername;
private string _rdGatewayPassword;
private string _rdGatewayDomain;
private RdpProtocol.RDPResolutions _resolution;
private RDPResolutions _resolution;
private bool _automaticResize;
private RdpProtocol.RDPColors _colors;
private RDPColors _colors;
private bool _cacheBitmaps;
private bool _displayWallpaper;
private bool _displayThemes;
@@ -60,8 +60,8 @@ namespace mRemoteNG.Connection
private bool _redirectClipboard;
private bool _redirectPorts;
private bool _redirectSmartCards;
private RdpProtocol.RDPSounds _redirectSound;
private RdpProtocol.RDPSoundQuality _soundQuality;
private RDPSounds _redirectSound;
private RDPSoundQuality _soundQuality;
private bool _redirectAudioCapture;
private string _preExtApp;
@@ -244,7 +244,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionAuthenticationLevel"),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
UsedInProtocol(ProtocolType.RDP)]
public RdpProtocol.AuthenticationLevel RDPAuthenticationLevel
public AuthenticationLevel RDPAuthenticationLevel
{
get => GetPropertyValue("RDPAuthenticationLevel", _rdpAuthenticationLevel);
set => SetField(ref _rdpAuthenticationLevel, value, "RDPAuthenticationLevel");
@@ -318,7 +318,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayUsageMethod"),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
UsedInProtocol(ProtocolType.RDP)]
public RdpProtocol.RDGatewayUsageMethod RDGatewayUsageMethod
public RDGatewayUsageMethod RDGatewayUsageMethod
{
get => GetPropertyValue("RDGatewayUsageMethod", _rdGatewayUsageMethod);
set => SetField(ref _rdGatewayUsageMethod, value, "RDGatewayUsageMethod");
@@ -339,7 +339,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRDGatewayUseConnectionCredentials"),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
UsedInProtocol(ProtocolType.RDP)]
public RdpProtocol.RDGatewayUseConnectionCredentials RDGatewayUseConnectionCredentials
public RDGatewayUseConnectionCredentials RDGatewayUseConnectionCredentials
{
get => GetPropertyValue("RDGatewayUseConnectionCredentials", _rdGatewayUseConnectionCredentials);
set => SetField(ref _rdGatewayUseConnectionCredentials, value, "RDGatewayUseConnectionCredentials");
@@ -385,7 +385,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionResolution"),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
UsedInProtocol(ProtocolType.RDP, ProtocolType.ICA)]
public RdpProtocol.RDPResolutions Resolution
public RDPResolutions Resolution
{
get => GetPropertyValue("Resolution", _resolution);
set => SetField(ref _resolution, value, "Resolution");
@@ -407,7 +407,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionColors"),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
UsedInProtocol(ProtocolType.RDP, ProtocolType.ICA)]
public RdpProtocol.RDPColors Colors
public RDPColors Colors
{
get => GetPropertyValue("Colors", _colors);
set => SetField(ref _colors, value, "Colors");
@@ -544,7 +544,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionRedirectSounds"),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
UsedInProtocol(ProtocolType.RDP)]
public RdpProtocol.RDPSounds RedirectSound
public RDPSounds RedirectSound
{
get => GetPropertyValue("RedirectSound", _redirectSound);
set => SetField(ref _redirectSound, value, "RedirectSound");
@@ -555,7 +555,7 @@ namespace mRemoteNG.Connection
LocalizedAttributes.LocalizedDescription("strPropertyDescriptionSoundQuality"),
TypeConverter(typeof(MiscTools.EnumTypeConverter)),
UsedInProtocol(ProtocolType.RDP)]
public RdpProtocol.RDPSoundQuality SoundQuality
public RDPSoundQuality SoundQuality
{
get => GetPropertyValue("SoundQuality", _soundQuality);
set => SetField(ref _soundQuality, value, "SoundQuality");

View File

@@ -300,17 +300,11 @@ namespace mRemoteNG.Connection
ExtApp = Settings.Default.ConDefaultExtApp;
Port = 0;
PuttySession = Settings.Default.ConDefaultPuttySession;
ICAEncryptionStrength = (IcaProtocol.EncryptionStrength)Enum.Parse(typeof(IcaProtocol.EncryptionStrength),
Settings
.Default
.ConDefaultICAEncryptionStrength);
ICAEncryptionStrength = (IcaProtocol.EncryptionStrength)Enum.Parse(
typeof(IcaProtocol.EncryptionStrength), Settings.Default.ConDefaultICAEncryptionStrength);
UseConsoleSession = Settings.Default.ConDefaultUseConsoleSession;
RDPAuthenticationLevel = (RdpProtocol.AuthenticationLevel)Enum.Parse(
typeof(RdpProtocol.AuthenticationLevel
),
Settings
.Default
.ConDefaultRDPAuthenticationLevel);
RDPAuthenticationLevel = (AuthenticationLevel)Enum.Parse(
typeof(AuthenticationLevel), Settings.Default.ConDefaultRDPAuthenticationLevel);
RDPMinutesToIdleTimeout = Settings.Default.ConDefaultRDPMinutesToIdleTimeout;
RDPAlertIdleTimeout = Settings.Default.ConDefaultRDPAlertIdleTimeout;
LoadBalanceInfo = Settings.Default.ConDefaultLoadBalanceInfo;
@@ -321,21 +315,11 @@ namespace mRemoteNG.Connection
private void SetRdGatewayDefaults()
{
RDGatewayUsageMethod = (RdpProtocol.RDGatewayUsageMethod)Enum.Parse(
typeof(RdpProtocol.RDGatewayUsageMethod
),
Settings
.Default
.ConDefaultRDGatewayUsageMethod);
RDGatewayUsageMethod = (RDGatewayUsageMethod)Enum.Parse(
typeof(RDGatewayUsageMethod), Settings.Default.ConDefaultRDGatewayUsageMethod);
RDGatewayHostname = Settings.Default.ConDefaultRDGatewayHostname;
RDGatewayUseConnectionCredentials = (RdpProtocol.RDGatewayUseConnectionCredentials)Enum.Parse(
typeof(
RdpProtocol
.RDGatewayUseConnectionCredentials
),
Settings
.Default
.ConDefaultRDGatewayUseConnectionCredentials);
RDGatewayUseConnectionCredentials = (RDGatewayUseConnectionCredentials)Enum.Parse(
typeof(RDGatewayUseConnectionCredentials), Settings.Default.ConDefaultRDGatewayUseConnectionCredentials);
RDGatewayUsername = Settings.Default.ConDefaultRDGatewayUsername;
RDGatewayPassword = Settings.Default.ConDefaultRDGatewayPassword;
RDGatewayDomain = Settings.Default.ConDefaultRDGatewayDomain;
@@ -343,11 +327,10 @@ namespace mRemoteNG.Connection
private void SetAppearanceDefaults()
{
Resolution = (RdpProtocol.RDPResolutions)Enum.Parse(typeof(RdpProtocol.RDPResolutions),
Settings.Default.ConDefaultResolution);
Resolution = (RDPResolutions)Enum.Parse(
typeof(RDPResolutions), Settings.Default.ConDefaultResolution);
AutomaticResize = Settings.Default.ConDefaultAutomaticResize;
Colors = (RdpProtocol.RDPColors)Enum.Parse(typeof(RdpProtocol.RDPColors),
Settings.Default.ConDefaultColors);
Colors = (RDPColors)Enum.Parse(typeof(RDPColors), Settings.Default.ConDefaultColors);
CacheBitmaps = Settings.Default.ConDefaultCacheBitmaps;
DisplayWallpaper = Settings.Default.ConDefaultDisplayWallpaper;
DisplayThemes = Settings.Default.ConDefaultDisplayThemes;
@@ -363,9 +346,9 @@ namespace mRemoteNG.Connection
RedirectClipboard = Settings.Default.ConDefaultRedirectClipboard;
RedirectPorts = Settings.Default.ConDefaultRedirectPorts;
RedirectSmartCards = Settings.Default.ConDefaultRedirectSmartCards;
RedirectSound = (RdpProtocol.RDPSounds)Enum.Parse(typeof(RdpProtocol.RDPSounds),
RedirectSound = (RDPSounds)Enum.Parse(typeof(RDPSounds),
Settings.Default.ConDefaultRedirectSound);
SoundQuality = (RdpProtocol.RDPSoundQuality)Enum.Parse(typeof(RdpProtocol.RDPSoundQuality),
SoundQuality = (RDPSoundQuality)Enum.Parse(typeof(RDPSoundQuality),
Settings.Default.ConDefaultSoundQuality);
RedirectAudioCapture = Settings.Default.ConDefaultRedirectAudioCapture;
}

View File

@@ -201,17 +201,17 @@ namespace mRemoteNG.Connection.Protocol.ICA
return;
}
if (InterfaceControl.Info.Resolution == RdpProtocol.RDPResolutions.FitToWindow)
if (InterfaceControl.Info.Resolution == RDPResolutions.FitToWindow)
{
_icaClient.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, InterfaceControl.Size.Width,
InterfaceControl.Size.Height, 0);
}
else if (InterfaceControl.Info.Resolution == RdpProtocol.RDPResolutions.SmartSize)
else if (InterfaceControl.Info.Resolution == RDPResolutions.SmartSize)
{
_icaClient.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient, InterfaceControl.Size.Width,
InterfaceControl.Size.Height, 0);
}
else if (InterfaceControl.Info.Resolution == RdpProtocol.RDPResolutions.Fullscreen)
else if (InterfaceControl.Info.Resolution == RDPResolutions.Fullscreen)
{
_icaClient.SetWindowSize(WFICALib.ICAWindowType.WindowTypeClient,
Screen.FromControl(_frmMain).Bounds.Width,
@@ -238,13 +238,13 @@ namespace mRemoteNG.Connection.Protocol.ICA
// ReSharper disable once SwitchStatementMissingSomeCases
switch (_info.Colors)
{
case RdpProtocol.RDPColors.Colors256:
case RDPColors.Colors256:
_icaClient.SetProp("DesiredColor", "2");
break;
case RdpProtocol.RDPColors.Colors15Bit:
case RDPColors.Colors15Bit:
_icaClient.SetProp("DesiredColor", "4");
break;
case RdpProtocol.RDPColors.Colors16Bit:
case RDPColors.Colors16Bit:
_icaClient.SetProp("DesiredColor", "4");
break;
default:

View File

@@ -0,0 +1,16 @@
using mRemoteNG.Tools;
namespace mRemoteNG.Connection.Protocol.RDP
{
public enum AuthenticationLevel
{
[LocalizedAttributes.LocalizedDescription("strAlwaysConnectEvenIfAuthFails")]
NoAuth = 0,
[LocalizedAttributes.LocalizedDescription("strDontConnectWhenAuthFails")]
AuthRequired = 1,
[LocalizedAttributes.LocalizedDescription("strWarnIfAuthFails")]
WarnOnFailedAuth = 2
}
}

View File

@@ -0,0 +1,16 @@
using mRemoteNG.Tools;
namespace mRemoteNG.Connection.Protocol.RDP
{
public enum RDGatewayUsageMethod
{
[LocalizedAttributes.LocalizedDescription("strNever")]
Never = 0, // TSC_PROXY_MODE_NONE_DIRECT
[LocalizedAttributes.LocalizedDescription("strAlways")]
Always = 1, // TSC_PROXY_MODE_DIRECT
[LocalizedAttributes.LocalizedDescription("strDetect")]
Detect = 2 // TSC_PROXY_MODE_DETECT
}
}

View File

@@ -0,0 +1,16 @@
using mRemoteNG.Tools;
namespace mRemoteNG.Connection.Protocol.RDP
{
public enum RDGatewayUseConnectionCredentials
{
[LocalizedAttributes.LocalizedDescription("strUseDifferentUsernameAndPassword")]
No = 0,
[LocalizedAttributes.LocalizedDescription("strUseSameUsernameAndPassword")]
Yes = 1,
[LocalizedAttributes.LocalizedDescription("strUseSmartCard")]
SmartCard = 2
}
}

View File

@@ -0,0 +1,22 @@
using mRemoteNG.Tools;
namespace mRemoteNG.Connection.Protocol.RDP
{
public enum RDPColors
{
[LocalizedAttributes.LocalizedDescription("strRDP256Colors")]
Colors256 = 8,
[LocalizedAttributes.LocalizedDescription("strRDP32768Colors")]
Colors15Bit = 15,
[LocalizedAttributes.LocalizedDescription("strRDP65536Colors")]
Colors16Bit = 16,
[LocalizedAttributes.LocalizedDescription("strRDP16777216Colors")]
Colors24Bit = 24,
[LocalizedAttributes.LocalizedDescription("strRDP4294967296Colors")]
Colors32Bit = 32
}
}

View File

@@ -0,0 +1,22 @@
using System.ComponentModel;
namespace mRemoteNG.Connection.Protocol.RDP
{
public enum RDPPerformanceFlags
{
[Description("strRDPDisableWallpaper")]
DisableWallpaper = 0x1,
// [Description("strRDPDisableFullWindowdrag")]DisableFullWindowDrag = 0x2,
// [Description("strRDPDisableMenuAnimations")]DisableMenuAnimations = 0x4,
[Description("strRDPDisableThemes")] DisableThemes = 0x8,
// [Description("strRDPDisableCursorShadow")]DisableCursorShadow = 0x20,
// [Description("strRDPDisableCursorblinking")]DisableCursorBlinking = 0x40,
[Description("strRDPEnableFontSmoothing")]
EnableFontSmoothing = 0x80,
[Description("strRDPEnableDesktopComposition")]
EnableDesktopComposition = 0x100
}
}

View File

@@ -0,0 +1,34 @@
using System.ComponentModel;
using mRemoteNG.Tools;
namespace mRemoteNG.Connection.Protocol.RDP
{
public enum RDPResolutions
{
[LocalizedAttributes.LocalizedDescription("strRDPFitToPanel")]
FitToWindow,
[LocalizedAttributes.LocalizedDescription("strFullscreen")]
Fullscreen,
[LocalizedAttributes.LocalizedDescription("strRDPSmartSize")]
SmartSize,
[Description("800x600")] Res800x600,
[Description("1024x768")] Res1024x768,
[Description("1152x864")] Res1152x864,
[Description("1280x800")] Res1280x800,
[Description("1280x1024")] Res1280x1024,
[Description("1366x768")] Res1366x768,
[Description("1440x900")] Res1440x900,
[Description("1600x900")] Res1600x900,
[Description("1600x1200")] Res1600x1200,
[Description("1680x1050")] Res1680x1050,
[Description("1920x1080")] Res1920x1080,
[Description("1920x1200")] Res1920x1200,
[Description("2048x1536")] Res2048x1536,
[Description("2560x1440")] Res2560x1440,
[Description("2560x1600")] Res2560x1600,
[Description("2560x2048")] Res2560x2048,
[Description("3840x2160")] Res3840x2160
}
}

View File

@@ -0,0 +1,16 @@
using mRemoteNG.Tools;
namespace mRemoteNG.Connection.Protocol.RDP
{
public enum RDPSoundQuality
{
[LocalizedAttributes.LocalizedDescription("strRDPSoundQualityDynamic")]
Dynamic = 0,
[LocalizedAttributes.LocalizedDescription("strRDPSoundQualityMedium")]
Medium = 1,
[LocalizedAttributes.LocalizedDescription("strRDPSoundQualityHigh")]
High = 2
}
}

View File

@@ -0,0 +1,16 @@
using mRemoteNG.Tools;
namespace mRemoteNG.Connection.Protocol.RDP
{
public enum RDPSounds
{
[LocalizedAttributes.LocalizedDescription("strRDPSoundBringToThisComputer")]
BringToThisComputer = 0,
[LocalizedAttributes.LocalizedDescription("strRDPSoundLeaveAtRemoteComputer")]
LeaveAtRemoteComputer = 1,
[LocalizedAttributes.LocalizedDescription("strRDPSoundDoNotPlay")]
DoNotPlay = 2
}
}

View File

@@ -1,5 +1,4 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Threading;
@@ -15,7 +14,7 @@ using MSTSCLib;
namespace mRemoteNG.Connection.Protocol.RDP
{
public class RdpProtocol : ProtocolBase, ISupportsViewOnly
public partial class RdpProtocol : ProtocolBase, ISupportsViewOnly
{
/* RDP v8 requires Windows 7 with:
* https://support.microsoft.com/en-us/kb/2592687
@@ -819,131 +818,6 @@ namespace mRemoteNG.Connection.Protocol.RDP
Port = 3389
}
public enum RDPColors
{
[LocalizedAttributes.LocalizedDescription("strRDP256Colors")]
Colors256 = 8,
[LocalizedAttributes.LocalizedDescription("strRDP32768Colors")]
Colors15Bit = 15,
[LocalizedAttributes.LocalizedDescription("strRDP65536Colors")]
Colors16Bit = 16,
[LocalizedAttributes.LocalizedDescription("strRDP16777216Colors")]
Colors24Bit = 24,
[LocalizedAttributes.LocalizedDescription("strRDP4294967296Colors")]
Colors32Bit = 32
}
public enum RDPSounds
{
[LocalizedAttributes.LocalizedDescription("strRDPSoundBringToThisComputer")]
BringToThisComputer = 0,
[LocalizedAttributes.LocalizedDescription("strRDPSoundLeaveAtRemoteComputer")]
LeaveAtRemoteComputer = 1,
[LocalizedAttributes.LocalizedDescription("strRDPSoundDoNotPlay")]
DoNotPlay = 2
}
public enum RDPSoundQuality
{
[LocalizedAttributes.LocalizedDescription("strRDPSoundQualityDynamic")]
Dynamic = 0,
[LocalizedAttributes.LocalizedDescription("strRDPSoundQualityMedium")]
Medium = 1,
[LocalizedAttributes.LocalizedDescription("strRDPSoundQualityHigh")]
High = 2
}
private enum RDPPerformanceFlags
{
[Description("strRDPDisableWallpaper")]
DisableWallpaper = 0x1,
// [Description("strRDPDisableFullWindowdrag")]DisableFullWindowDrag = 0x2,
// [Description("strRDPDisableMenuAnimations")]DisableMenuAnimations = 0x4,
[Description("strRDPDisableThemes")] DisableThemes = 0x8,
// [Description("strRDPDisableCursorShadow")]DisableCursorShadow = 0x20,
// [Description("strRDPDisableCursorblinking")]DisableCursorBlinking = 0x40,
[Description("strRDPEnableFontSmoothing")]
EnableFontSmoothing = 0x80,
[Description("strRDPEnableDesktopComposition")]
EnableDesktopComposition = 0x100
}
public enum RDPResolutions
{
[LocalizedAttributes.LocalizedDescription("strRDPFitToPanel")]
FitToWindow,
[LocalizedAttributes.LocalizedDescription("strFullscreen")]
Fullscreen,
[LocalizedAttributes.LocalizedDescription("strRDPSmartSize")]
SmartSize,
[Description("800x600")] Res800x600,
[Description("1024x768")] Res1024x768,
[Description("1152x864")] Res1152x864,
[Description("1280x800")] Res1280x800,
[Description("1280x1024")] Res1280x1024,
[Description("1366x768")] Res1366x768,
[Description("1440x900")] Res1440x900,
[Description("1600x900")] Res1600x900,
[Description("1600x1200")] Res1600x1200,
[Description("1680x1050")] Res1680x1050,
[Description("1920x1080")] Res1920x1080,
[Description("1920x1200")] Res1920x1200,
[Description("2048x1536")] Res2048x1536,
[Description("2560x1440")] Res2560x1440,
[Description("2560x1600")] Res2560x1600,
[Description("2560x2048")] Res2560x2048,
[Description("3840x2160")] Res3840x2160
}
public enum AuthenticationLevel
{
[LocalizedAttributes.LocalizedDescription("strAlwaysConnectEvenIfAuthFails")]
NoAuth = 0,
[LocalizedAttributes.LocalizedDescription("strDontConnectWhenAuthFails")]
AuthRequired = 1,
[LocalizedAttributes.LocalizedDescription("strWarnIfAuthFails")]
WarnOnFailedAuth = 2
}
public enum RDGatewayUsageMethod
{
[LocalizedAttributes.LocalizedDescription("strNever")]
Never = 0, // TSC_PROXY_MODE_NONE_DIRECT
[LocalizedAttributes.LocalizedDescription("strAlways")]
Always = 1, // TSC_PROXY_MODE_DIRECT
[LocalizedAttributes.LocalizedDescription("strDetect")]
Detect = 2 // TSC_PROXY_MODE_DETECT
}
public enum RDGatewayUseConnectionCredentials
{
[LocalizedAttributes.LocalizedDescription("strUseDifferentUsernameAndPassword")]
No = 0,
[LocalizedAttributes.LocalizedDescription("strUseSameUsernameAndPassword")]
Yes = 1,
[LocalizedAttributes.LocalizedDescription("strUseSmartCard")]
SmartCard = 2
}
#endregion
#region Resolution

View File

@@ -1,4 +1,4 @@
**************************
**************************
Frequently Asked Questions
**************************
@@ -12,7 +12,7 @@ You sometimes see PuTTY icons on the side of the terminal (example below).
This is a new security feature in PuTTY 0.71. It is meant to signify that PuTTY itself is outputting those lines and not some remote server.
Full details are available `here <https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-auth-prompt-spoofing.html>`_.
How can I edit or creat connections in bulk?
How can I edit or create connections in bulk?
============================================
Currently, mRemoteNG does not have a feature to support editing or creating connections in bulk. See :ref:`bulk_connections` for more info on this.

View File

@@ -0,0 +1,155 @@
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblCons]
GO
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblRoot]
GO
if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblUpdate]
GO
CREATE TABLE [dbo].[tblCons] (
[ID] [int] IDENTITY (1001, 1) NOT NULL ,
[ConstantID] [varchar] (128) NULL ,
[PositionID] [int] NOT NULL ,
[ParentID] [varchar] (128) NULL ,
[LastChange] [datetime] NOT NULL ,
[Name] [varchar] (128) NOT NULL ,
[Type] [varchar] (32) NOT NULL ,
[Expanded] [bit] NOT NULL ,
[Description] [varchar] (1024) NULL ,
[Icon] [varchar] (128) NOT NULL ,
[Panel] [varchar] (128) NOT NULL ,
[Username] [varchar] (512) NULL ,
[DomainName] [varchar] (512) NULL ,
[Password] [varchar] (1024) NULL ,
[Hostname] [varchar] (512) NULL ,
[Protocol] [varchar] (32) NOT NULL ,
[PuttySession] [varchar] (128) NULL ,
[Port] [int] NOT NULL ,
[ConnectToConsole] [bit] NOT NULL ,
[UseCredSsp] [bit] NOT NULL ,
[RenderingEngine] [varchar] (10) NULL ,
[ICAEncryptionStrength] [varchar] (32) NOT NULL ,
[RDPAuthenticationLevel] [varchar] (32) NOT NULL ,
[RDPMinutesToIdleTimeout] [int] NOT NULL,
[RDPAlertIdleTimeout] [bit] NOT NULL,
[Colors] [varchar] (32) NOT NULL ,
[Resolution] [varchar] (32) NOT NULL ,
[DisplayWallpaper] [bit] NOT NULL ,
[DisplayThemes] [bit] NOT NULL ,
[EnableFontSmoothing] [bit] NOT NULL ,
[EnableDesktopComposition] [bit] NOT NULL ,
[CacheBitmaps] [bit] NOT NULL ,
[RedirectDiskDrives] [bit] NOT NULL ,
[RedirectPorts] [bit] NOT NULL ,
[RedirectPrinters] [bit] NOT NULL ,
[RedirectSmartCards] [bit] NOT NULL ,
[RedirectSound] [varchar] (64) NOT NULL ,
[SoundQuality] [varchar] (20) NOT NULL,
[RedirectAudioCapture] [bit] NOT NULL,
[RedirectKeys] [bit] NOT NULL ,
[Connected] [bit] NOT NULL ,
[PreExtApp] [varchar] (256) NULL ,
[PostExtApp] [varchar] (256) NULL ,
[MacAddress] [varchar] (32) NULL ,
[UserField] [varchar] (256) NULL ,
[ExtApp] [varchar] (256) NULL ,
[VNCCompression] [varchar] (10) NULL ,
[VNCEncoding] [varchar] (20) NULL ,
[VNCAuthMode] [varchar] (10) NULL ,
[VNCProxyType] [varchar] (20) NULL ,
[VNCProxyIP] [varchar] (128) NULL ,
[VNCProxyPort] [int] NULL ,
[VNCProxyUsername] [varchar] (512) NULL ,
[VNCProxyPassword] [varchar] (1024) NULL ,
[VNCColors] [varchar] (10) NULL ,
[VNCSmartSizeMode] [varchar] (20) NULL ,
[VNCViewOnly] [bit] NOT NULL ,
[RDGatewayUsageMethod] [varchar] (32) NOT NULL ,
[RDGatewayHostname] [varchar] (512) NULL ,
[RDGatewayUseConnectionCredentials] [varchar] (32) NOT NULL ,
[RDGatewayUsername] [varchar] (512) NULL ,
[RDGatewayPassword] [varchar] (1024) NULL ,
[RDGatewayDomain] [varchar] (512) NULL ,
[InheritCacheBitmaps] [bit] NOT NULL ,
[InheritColors] [bit] NOT NULL ,
[InheritDescription] [bit] NOT NULL ,
[InheritDisplayThemes] [bit] NOT NULL ,
[InheritDisplayWallpaper] [bit] NOT NULL ,
[InheritEnableFontSmoothing] [bit] NOT NULL ,
[InheritEnableDesktopComposition] [bit] NOT NULL ,
[InheritDomain] [bit] NOT NULL ,
[InheritIcon] [bit] NOT NULL ,
[InheritPanel] [bit] NOT NULL ,
[InheritPassword] [bit] NOT NULL ,
[InheritPort] [bit] NOT NULL ,
[InheritProtocol] [bit] NOT NULL ,
[InheritPuttySession] [bit] NOT NULL ,
[InheritRedirectDiskDrives] [bit] NOT NULL ,
[InheritRedirectKeys] [bit] NOT NULL ,
[InheritRedirectPorts] [bit] NOT NULL ,
[InheritRedirectPrinters] [bit] NOT NULL ,
[InheritRedirectSmartCards] [bit] NOT NULL ,
[InheritRedirectSound] [bit] NOT NULL ,
[InheritSoundQuality] [bit] NOT NULL,
[InheritRedirectAudioCapture] [bit] NOT NULL,
[InheritResolution] [bit] NOT NULL ,
[InheritUseConsoleSession] [bit] NOT NULL ,
[InheritUseCredSsp] [bit] NOT NULL ,
[InheritRenderingEngine] [bit] NOT NULL ,
[InheritICAEncryptionStrength] [bit] NOT NULL ,
[InheritRDPAuthenticationLevel] [bit] NOT NULL ,
[InheritRDPMinutesToIdleTimeout] [bit] NOT NULL,
[InheritRDPAlertIdleTimeout] [bit] NOT NULL,
[InheritUsername] [bit] NOT NULL ,
[InheritPreExtApp] [bit] NOT NULL ,
[InheritPostExtApp] [bit] NOT NULL ,
[InheritMacAddress] [bit] NOT NULL ,
[InheritUserField] [bit] NOT NULL ,
[InheritExtApp] [bit] NOT NULL ,
[InheritVNCCompression] [bit] NOT NULL,
[InheritVNCEncoding] [bit] NOT NULL ,
[InheritVNCAuthMode] [bit] NOT NULL ,
[InheritVNCProxyType] [bit] NOT NULL ,
[InheritVNCProxyIP] [bit] NOT NULL ,
[InheritVNCProxyPort] [bit] NOT NULL ,
[InheritVNCProxyUsername] [bit] NOT NULL ,
[InheritVNCProxyPassword] [bit] NOT NULL ,
[InheritVNCColors] [bit] NOT NULL ,
[InheritVNCSmartSizeMode] [bit] NOT NULL ,
[InheritVNCViewOnly] [bit] NOT NULL ,
[InheritRDGatewayUsageMethod] [bit] NOT NULL ,
[InheritRDGatewayHostname] [bit] NOT NULL ,
[InheritRDGatewayUseConnectionCredentials] [bit] NOT NULL ,
[InheritRDGatewayUsername] [bit] NOT NULL ,
[InheritRDGatewayPassword] [bit] NOT NULL ,
[InheritRDGatewayDomain] [bit] NOT NULL ,
[LoadBalanceInfo] [varchar] (1024) NULL ,
[AutomaticResize] [bit] NOT NULL DEFAULT 1 ,
[InheritLoadBalanceInfo] [bit] NOT NULL DEFAULT 0 ,
[InheritAutomaticResize] [bit] NOT NULL DEFAULT 0 ,
[RedirectClipboard] [bit] NOT NULL DEFAULT 0 ,
[InheritRedirectClipboard] [bit] NOT NULL DEFAULT 0,
[RedirectAudioCapture] [bit] NOT NULL DEFAULT 0,
[InheritRedirectAudioCapture] [bit] NOT NULL DEFAULT 0
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblRoot] (
[Name] [varchar] (2048) NOT NULL ,
[Export] [bit] NOT NULL ,
[Protected] [varchar] (4048) NOT NULL ,
[ConfVersion] [float] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblUpdate] (
[LastUpdate] [datetime] NULL
) ON [PRIMARY]
GO

View File

@@ -0,0 +1,184 @@
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `tblCons`
--
DROP TABLE IF EXISTS `tblCons`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tblCons` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ConstantID` varchar(128) DEFAULT NULL,
`PositionID` int(11) NOT NULL,
`ParentID` varchar(128) DEFAULT NULL,
`LastChange` datetime NOT NULL,
`Name` varchar(128) NOT NULL,
`Type` varchar(32) NOT NULL,
`Expanded` tinyint(1) NOT NULL,
`Description` varchar(1024) DEFAULT NULL,
`Icon` varchar(128) NOT NULL,
`Panel` varchar(128) NOT NULL,
`Username` varchar(512) DEFAULT NULL,
`DomainName` varchar(512) DEFAULT NULL,
`Password` varchar(1024) DEFAULT NULL,
`Hostname` varchar(512) DEFAULT NULL,
`Protocol` varchar(32) NOT NULL,
`PuttySession` varchar(128) DEFAULT NULL,
`Port` int(11) NOT NULL,
`ConnectToConsole` tinyint(1) NOT NULL,
`UseCredSsp` tinyint(1) NOT NULL,
`RenderingEngine` varchar(10) DEFAULT NULL,
`ICAEncryptionStrength` varchar(32) NOT NULL,
`RDPAuthenticationLevel` varchar(32) NOT NULL,
`RDPMinutesToIdleTimeout` int(11) NOT NULL,
`RDPAlertIdleTimeout` tinyint(1) NOT NULL,
`Colors` varchar(32) NOT NULL,
`Resolution` varchar(32) NOT NULL,
`DisplayWallpaper` tinyint(1) NOT NULL,
`DisplayThemes` tinyint(1) NOT NULL,
`EnableFontSmoothing` tinyint(1) NOT NULL,
`EnableDesktopComposition` tinyint(1) NOT NULL,
`CacheBitmaps` tinyint(1) NOT NULL,
`RedirectDiskDrives` tinyint(1) NOT NULL,
`RedirectPorts` tinyint(1) NOT NULL,
`RedirectPrinters` tinyint(1) NOT NULL,
`RedirectSmartCards` tinyint(1) NOT NULL,
`RedirectSound` varchar(64) NOT NULL,
`SoundQuality` varchar(20) NOT NULL,
`RedirectAudioCapture` tinyint(1) NOT NULL,
`RedirectKeys` tinyint(1) NOT NULL,
`Connected` tinyint(1) NOT NULL,
`PreExtApp` varchar(256) DEFAULT NULL,
`PostExtApp` varchar(256) DEFAULT NULL,
`MacAddress` varchar(32) DEFAULT NULL,
`UserField` varchar(256) DEFAULT NULL,
`ExtApp` varchar(256) DEFAULT NULL,
`VNCCompression` varchar(10) DEFAULT NULL,
`VNCEncoding` varchar(20) DEFAULT NULL,
`VNCAuthMode` varchar(10) DEFAULT NULL,
`VNCProxyType` varchar(20) DEFAULT NULL,
`VNCProxyIP` varchar(128) DEFAULT NULL,
`VNCProxyPort` int(11) DEFAULT NULL,
`VNCProxyUsername` varchar(512) DEFAULT NULL,
`VNCProxyPassword` varchar(1024) DEFAULT NULL,
`VNCColors` varchar(10) DEFAULT NULL,
`VNCSmartSizeMode` varchar(20) DEFAULT NULL,
`VNCViewOnly` tinyint(1) NOT NULL,
`RDGatewayUsageMethod` varchar(32) NOT NULL,
`RDGatewayHostname` varchar(512) DEFAULT NULL,
`RDGatewayUseConnectionCredentials` varchar(32) NOT NULL,
`RDGatewayUsername` varchar(512) DEFAULT NULL,
`RDGatewayPassword` varchar(1024) DEFAULT NULL,
`RDGatewayDomain` varchar(512) DEFAULT NULL,
`InheritCacheBitmaps` tinyint(1) NOT NULL,
`InheritColors` tinyint(1) NOT NULL,
`InheritDescription` tinyint(1) NOT NULL,
`InheritDisplayThemes` tinyint(1) NOT NULL,
`InheritDisplayWallpaper` tinyint(1) NOT NULL,
`InheritEnableFontSmoothing` tinyint(1) NOT NULL,
`InheritEnableDesktopComposition` tinyint(1) NOT NULL,
`InheritDomain` tinyint(1) NOT NULL,
`InheritIcon` tinyint(1) NOT NULL,
`InheritPanel` tinyint(1) NOT NULL,
`InheritPassword` tinyint(1) NOT NULL,
`InheritPort` tinyint(1) NOT NULL,
`InheritProtocol` tinyint(1) NOT NULL,
`InheritPuttySession` tinyint(1) NOT NULL,
`InheritRedirectDiskDrives` tinyint(1) NOT NULL,
`InheritRedirectKeys` tinyint(1) NOT NULL,
`InheritRedirectPorts` tinyint(1) NOT NULL,
`InheritRedirectPrinters` tinyint(1) NOT NULL,
`InheritRedirectSmartCards` tinyint(1) NOT NULL,
`InheritRedirectSound` tinyint(1) NOT NULL,
`InheritSoundQuality` tinyint(1) NOT NULL,
`InheritRedirectAudioCapture` tinyint(1) NOT NULL,
`InheritResolution` tinyint(1) NOT NULL,
`InheritUseConsoleSession` tinyint(1) NOT NULL,
`InheritUseCredSsp` tinyint(1) NOT NULL,
`InheritRenderingEngine` tinyint(1) NOT NULL,
`InheritICAEncryptionStrength` tinyint(1) NOT NULL,
`InheritRDPAuthenticationLevel` tinyint(1) NOT NULL,
`InheritRDPMinutesToIdleTimeout` tinyint(1) NOT NULL,
`InheritRDPAlertIdleTimeout` tinyint(1) NOT NULL,
`InheritUsername` tinyint(1) NOT NULL,
`InheritPreExtApp` tinyint(1) NOT NULL,
`InheritPostExtApp` tinyint(1) NOT NULL,
`InheritMacAddress` tinyint(1) NOT NULL,
`InheritUserField` tinyint(1) NOT NULL,
`InheritExtApp` tinyint(1) NOT NULL,
`InheritVNCCompression` tinyint(1) NOT NULL,
`InheritVNCEncoding` tinyint(1) NOT NULL,
`InheritVNCAuthMode` tinyint(1) NOT NULL,
`InheritVNCProxyType` tinyint(1) NOT NULL,
`InheritVNCProxyIP` tinyint(1) NOT NULL,
`InheritVNCProxyPort` tinyint(1) NOT NULL,
`InheritVNCProxyUsername` tinyint(1) NOT NULL,
`InheritVNCProxyPassword` tinyint(1) NOT NULL,
`InheritVNCColors` tinyint(1) NOT NULL,
`InheritVNCSmartSizeMode` tinyint(1) NOT NULL,
`InheritVNCViewOnly` tinyint(1) NOT NULL,
`InheritRDGatewayUsageMethod` tinyint(1) NOT NULL,
`InheritRDGatewayHostname` tinyint(1) NOT NULL,
`InheritRDGatewayUseConnectionCredentials` tinyint(1) NOT NULL,
`InheritRDGatewayUsername` tinyint(1) NOT NULL,
`InheritRDGatewayPassword` tinyint(1) NOT NULL,
`InheritRDGatewayDomain` tinyint(1) NOT NULL,
`LoadBalanceInfo` varchar(1024) DEFAULT NULL,
`AutomaticResize` tinyint(1) NOT NULL DEFAULT 1,
`InheritLoadBalanceInfo` tinyint(1) NOT NULL DEFAULT 0,
`InheritAutomaticResize` tinyint(1) NOT NULL DEFAULT 0,
`RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0,
`InheritRedirectClipboard` tinyint(1) NOT NULL DEFAULT 0,
`RedirectAudioCapture` bit NOT NULL DEFAULT 0,
`InheritRedirectAudioCapture` bit NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3324 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `tblRoot`
--
DROP TABLE IF EXISTS `tblRoot`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tblRoot` (
`Name` varchar(2048) NOT NULL,
`Export` tinyint(1) NOT NULL,
`Protected` varchar(4048) NOT NULL,
`ConfVersion` double NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `tblUpdate`
--
DROP TABLE IF EXISTS `tblUpdate`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tblUpdate` (
`LastUpdate` datetime(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

View File

@@ -6,7 +6,7 @@ SQL Configuration
.. warning::
The SQL feature is in an early beta stage and not intended for use in an productive environment! I recommend you to do a full backup of your connections and settings before switching to SQL Server.
The SQL feature is in an early beta stage and not intended for use in a production environment! I recommend you to do a full backup of your connections and settings before switching to SQL Server.
Supported Databases
===================
@@ -39,343 +39,12 @@ SQL Table creation Scripts
MSSQL
-----
.. code-block:: sql
.. include:: mssql_db_setup.sql
:code: sql
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblCons]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblCons]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblRoot]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblUpdate]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblUpdate]
GO
CREATE TABLE [dbo].[tblCons] (
[ID] [int] IDENTITY (1001, 1) NOT NULL ,
[ConstantID] [varchar] (128) NULL ,
[PositionID] [int] NOT NULL ,
[ParentID] [varchar] (128) NULL ,
[LastChange] [datetime] NOT NULL ,
[Name] [varchar] (128) NOT NULL ,
[Type] [varchar] (32) NOT NULL ,
[Expanded] [bit] NOT NULL ,
[Description] [varchar] (1024) NULL ,
[Icon] [varchar] (128) NOT NULL ,
[Panel] [varchar] (128) NOT NULL ,
[Username] [varchar] (512) NULL ,
[DomainName] [varchar] (512) NULL ,
[Password] [varchar] (1024) NULL ,
[Hostname] [varchar] (512) NULL ,
[Protocol] [varchar] (32) NOT NULL ,
[PuttySession] [varchar] (128) NULL ,
[Port] [int] NOT NULL ,
[ConnectToConsole] [bit] NOT NULL ,
[UseCredSsp] [bit] NOT NULL ,
[RenderingEngine] [varchar] (10) NULL ,
[ICAEncryptionStrength] [varchar] (32) NOT NULL ,
[RDPAuthenticationLevel] [varchar] (32) NOT NULL ,
[RDPMinutesToIdleTimeout] [int] NOT NULL,
[RDPAlertIdleTimeout] [bit] NOT NULL,
[Colors] [varchar] (32) NOT NULL ,
[Resolution] [varchar] (32) NOT NULL ,
[DisplayWallpaper] [bit] NOT NULL ,
[DisplayThemes] [bit] NOT NULL ,
[EnableFontSmoothing] [bit] NOT NULL ,
[EnableDesktopComposition] [bit] NOT NULL ,
[CacheBitmaps] [bit] NOT NULL ,
[RedirectDiskDrives] [bit] NOT NULL ,
[RedirectPorts] [bit] NOT NULL ,
[RedirectPrinters] [bit] NOT NULL ,
[RedirectSmartCards] [bit] NOT NULL ,
[RedirectSound] [varchar] (64) NOT NULL ,
[SoundQuality] [varchar] (20) NOT NULL,
[RedirectAudioCapture] [bit] NOT NULL,
[RedirectKeys] [bit] NOT NULL ,
[Connected] [bit] NOT NULL ,
[PreExtApp] [varchar] (256) NULL ,
[PostExtApp] [varchar] (256) NULL ,
[MacAddress] [varchar] (32) NULL ,
[UserField] [varchar] (256) NULL ,
[ExtApp] [varchar] (256) NULL ,
[VNCCompression] [varchar] (10) NULL ,
[VNCEncoding] [varchar] (20) NULL ,
[VNCAuthMode] [varchar] (10) NULL ,
[VNCProxyType] [varchar] (20) NULL ,
[VNCProxyIP] [varchar] (128) NULL ,
[VNCProxyPort] [int] NULL ,
[VNCProxyUsername] [varchar] (512) NULL ,
[VNCProxyPassword] [varchar] (1024) NULL ,
[VNCColors] [varchar] (10) NULL ,
[VNCSmartSizeMode] [varchar] (20) NULL ,
[VNCViewOnly] [bit] NOT NULL ,
[RDGatewayUsageMethod] [varchar] (32) NOT NULL ,
[RDGatewayHostname] [varchar] (512) NULL ,
[RDGatewayUseConnectionCredentials] [varchar] (32) NOT NULL ,
[RDGatewayUsername] [varchar] (512) NULL ,
[RDGatewayPassword] [varchar] (1024) NULL ,
[RDGatewayDomain] [varchar] (512) NULL ,
[InheritCacheBitmaps] [bit] NOT NULL ,
[InheritColors] [bit] NOT NULL ,
[InheritDescription] [bit] NOT NULL ,
[InheritDisplayThemes] [bit] NOT NULL ,
[InheritDisplayWallpaper] [bit] NOT NULL ,
[InheritEnableFontSmoothing] [bit] NOT NULL ,
[InheritEnableDesktopComposition] [bit] NOT NULL ,
[InheritDomain] [bit] NOT NULL ,
[InheritIcon] [bit] NOT NULL ,
[InheritPanel] [bit] NOT NULL ,
[InheritPassword] [bit] NOT NULL ,
[InheritPort] [bit] NOT NULL ,
[InheritProtocol] [bit] NOT NULL ,
[InheritPuttySession] [bit] NOT NULL ,
[InheritRedirectDiskDrives] [bit] NOT NULL ,
[InheritRedirectKeys] [bit] NOT NULL ,
[InheritRedirectPorts] [bit] NOT NULL ,
[InheritRedirectPrinters] [bit] NOT NULL ,
[InheritRedirectSmartCards] [bit] NOT NULL ,
[InheritRedirectSound] [bit] NOT NULL ,
[InheritSoundQuality] [bit] NOT NULL,
[InheritRedirectAudioCapture] [bit] NOT NULL,
[InheritResolution] [bit] NOT NULL ,
[InheritUseConsoleSession] [bit] NOT NULL ,
[InheritUseCredSsp] [bit] NOT NULL ,
[InheritRenderingEngine] [bit] NOT NULL ,
[InheritICAEncryptionStrength] [bit] NOT NULL ,
[InheritRDPAuthenticationLevel] [bit] NOT NULL ,
[InheritRDPMinutesToIdleTimeout] [bit] NOT NULL,
[InheritRDPAlertIdleTimeout] [bit] NOT NULL,
[InheritUsername] [bit] NOT NULL ,
[InheritPreExtApp] [bit] NOT NULL ,
[InheritPostExtApp] [bit] NOT NULL ,
[InheritMacAddress] [bit] NOT NULL ,
[InheritUserField] [bit] NOT NULL ,
[InheritExtApp] [bit] NOT NULL ,
[InheritVNCCompression] [bit] NOT NULL,
[InheritVNCEncoding] [bit] NOT NULL ,
[InheritVNCAuthMode] [bit] NOT NULL ,
[InheritVNCProxyType] [bit] NOT NULL ,
[InheritVNCProxyIP] [bit] NOT NULL ,
[InheritVNCProxyPort] [bit] NOT NULL ,
[InheritVNCProxyUsername] [bit] NOT NULL ,
[InheritVNCProxyPassword] [bit] NOT NULL ,
[InheritVNCColors] [bit] NOT NULL ,
[InheritVNCSmartSizeMode] [bit] NOT NULL ,
[InheritVNCViewOnly] [bit] NOT NULL ,
[InheritRDGatewayUsageMethod] [bit] NOT NULL ,
[InheritRDGatewayHostname] [bit] NOT NULL ,
[InheritRDGatewayUseConnectionCredentials] [bit] NOT NULL ,
[InheritRDGatewayUsername] [bit] NOT NULL ,
[InheritRDGatewayPassword] [bit] NOT NULL ,
[InheritRDGatewayDomain] [bit] NOT NULL ,
[LoadBalanceInfo] [varchar] (1024) NULL ,
[AutomaticResize] [bit] NOT NULL DEFAULT 1 ,
[InheritLoadBalanceInfo] [bit] NOT NULL DEFAULT 0 ,
[InheritAutomaticResize] [bit] NOT NULL DEFAULT 0 ,
[RedirectClipboard] [bit] NOT NULL DEFAULT 0 ,
[InheritRedirectClipboard] [bit] NOT NULL DEFAULT 0
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblRoot] (
[Name] [varchar] (2048) NOT NULL ,
[Export] [bit] NOT NULL ,
[Protected] [varchar] (4048) NOT NULL ,
[ConfVersion] [float] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblUpdate] (
[LastUpdate] [datetime] NULL
) ON [PRIMARY]
GO
MYSQL
-----
.. code-block:: sql
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `tblCons`
--
DROP TABLE IF EXISTS `tblCons`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tblCons` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ConstantID` varchar(128) DEFAULT NULL,
`PositionID` int(11) NOT NULL,
`ParentID` varchar(128) DEFAULT NULL,
`LastChange` datetime NOT NULL,
`Name` varchar(128) NOT NULL,
`Type` varchar(32) NOT NULL,
`Expanded` tinyint(1) NOT NULL,
`Description` varchar(1024) DEFAULT NULL,
`Icon` varchar(128) NOT NULL,
`Panel` varchar(128) NOT NULL,
`Username` varchar(512) DEFAULT NULL,
`DomainName` varchar(512) DEFAULT NULL,
`Password` varchar(1024) DEFAULT NULL,
`Hostname` varchar(512) DEFAULT NULL,
`Protocol` varchar(32) NOT NULL,
`PuttySession` varchar(128) DEFAULT NULL,
`Port` int(11) NOT NULL,
`ConnectToConsole` tinyint(1) NOT NULL,
`UseCredSsp` tinyint(1) NOT NULL,
`RenderingEngine` varchar(10) DEFAULT NULL,
`ICAEncryptionStrength` varchar(32) NOT NULL,
`RDPAuthenticationLevel` varchar(32) NOT NULL,
`RDPMinutesToIdleTimeout` int(11) NOT NULL,
`RDPAlertIdleTimeout` tinyint(1) NOT NULL,
`Colors` varchar(32) NOT NULL,
`Resolution` varchar(32) NOT NULL,
`DisplayWallpaper` tinyint(1) NOT NULL,
`DisplayThemes` tinyint(1) NOT NULL,
`EnableFontSmoothing` tinyint(1) NOT NULL,
`EnableDesktopComposition` tinyint(1) NOT NULL,
`CacheBitmaps` tinyint(1) NOT NULL,
`RedirectDiskDrives` tinyint(1) NOT NULL,
`RedirectPorts` tinyint(1) NOT NULL,
`RedirectPrinters` tinyint(1) NOT NULL,
`RedirectSmartCards` tinyint(1) NOT NULL,
`RedirectSound` varchar(64) NOT NULL,
`SoundQuality` varchar(20) NOT NULL,
`RedirectAudioCapture` tinyint(1) NOT NULL,
`RedirectKeys` tinyint(1) NOT NULL,
`Connected` tinyint(1) NOT NULL,
`PreExtApp` varchar(256) DEFAULT NULL,
`PostExtApp` varchar(256) DEFAULT NULL,
`MacAddress` varchar(32) DEFAULT NULL,
`UserField` varchar(256) DEFAULT NULL,
`ExtApp` varchar(256) DEFAULT NULL,
`VNCCompression` varchar(10) DEFAULT NULL,
`VNCEncoding` varchar(20) DEFAULT NULL,
`VNCAuthMode` varchar(10) DEFAULT NULL,
`VNCProxyType` varchar(20) DEFAULT NULL,
`VNCProxyIP` varchar(128) DEFAULT NULL,
`VNCProxyPort` int(11) DEFAULT NULL,
`VNCProxyUsername` varchar(512) DEFAULT NULL,
`VNCProxyPassword` varchar(1024) DEFAULT NULL,
`VNCColors` varchar(10) DEFAULT NULL,
`VNCSmartSizeMode` varchar(20) DEFAULT NULL,
`VNCViewOnly` tinyint(1) NOT NULL,
`RDGatewayUsageMethod` varchar(32) NOT NULL,
`RDGatewayHostname` varchar(512) DEFAULT NULL,
`RDGatewayUseConnectionCredentials` varchar(32) NOT NULL,
`RDGatewayUsername` varchar(512) DEFAULT NULL,
`RDGatewayPassword` varchar(1024) DEFAULT NULL,
`RDGatewayDomain` varchar(512) DEFAULT NULL,
`InheritCacheBitmaps` tinyint(1) NOT NULL,
`InheritColors` tinyint(1) NOT NULL,
`InheritDescription` tinyint(1) NOT NULL,
`InheritDisplayThemes` tinyint(1) NOT NULL,
`InheritDisplayWallpaper` tinyint(1) NOT NULL,
`InheritEnableFontSmoothing` tinyint(1) NOT NULL,
`InheritEnableDesktopComposition` tinyint(1) NOT NULL,
`InheritDomain` tinyint(1) NOT NULL,
`InheritIcon` tinyint(1) NOT NULL,
`InheritPanel` tinyint(1) NOT NULL,
`InheritPassword` tinyint(1) NOT NULL,
`InheritPort` tinyint(1) NOT NULL,
`InheritProtocol` tinyint(1) NOT NULL,
`InheritPuttySession` tinyint(1) NOT NULL,
`InheritRedirectDiskDrives` tinyint(1) NOT NULL,
`InheritRedirectKeys` tinyint(1) NOT NULL,
`InheritRedirectPorts` tinyint(1) NOT NULL,
`InheritRedirectPrinters` tinyint(1) NOT NULL,
`InheritRedirectSmartCards` tinyint(1) NOT NULL,
`InheritRedirectSound` tinyint(1) NOT NULL,
`InheritSoundQuality` tinyint(1) NOT NULL,
`InheritRedirectAudioCapture` tinyint(1) NOT NULL,
`InheritResolution` tinyint(1) NOT NULL,
`InheritUseConsoleSession` tinyint(1) NOT NULL,
`InheritUseCredSsp` tinyint(1) NOT NULL,
`InheritRenderingEngine` tinyint(1) NOT NULL,
`InheritICAEncryptionStrength` tinyint(1) NOT NULL,
`InheritRDPAuthenticationLevel` tinyint(1) NOT NULL,
`InheritRDPMinutesToIdleTimeout` tinyint(1) NOT NULL,
`InheritRDPAlertIdleTimeout` tinyint(1) NOT NULL,
`InheritUsername` tinyint(1) NOT NULL,
`InheritPreExtApp` tinyint(1) NOT NULL,
`InheritPostExtApp` tinyint(1) NOT NULL,
`InheritMacAddress` tinyint(1) NOT NULL,
`InheritUserField` tinyint(1) NOT NULL,
`InheritExtApp` tinyint(1) NOT NULL,
`InheritVNCCompression` tinyint(1) NOT NULL,
`InheritVNCEncoding` tinyint(1) NOT NULL,
`InheritVNCAuthMode` tinyint(1) NOT NULL,
`InheritVNCProxyType` tinyint(1) NOT NULL,
`InheritVNCProxyIP` tinyint(1) NOT NULL,
`InheritVNCProxyPort` tinyint(1) NOT NULL,
`InheritVNCProxyUsername` tinyint(1) NOT NULL,
`InheritVNCProxyPassword` tinyint(1) NOT NULL,
`InheritVNCColors` tinyint(1) NOT NULL,
`InheritVNCSmartSizeMode` tinyint(1) NOT NULL,
`InheritVNCViewOnly` tinyint(1) NOT NULL,
`InheritRDGatewayUsageMethod` tinyint(1) NOT NULL,
`InheritRDGatewayHostname` tinyint(1) NOT NULL,
`InheritRDGatewayUseConnectionCredentials` tinyint(1) NOT NULL,
`InheritRDGatewayUsername` tinyint(1) NOT NULL,
`InheritRDGatewayPassword` tinyint(1) NOT NULL,
`InheritRDGatewayDomain` tinyint(1) NOT NULL,
`LoadBalanceInfo` varchar(1024) DEFAULT NULL,
`AutomaticResize` tinyint(1) NOT NULL DEFAULT 1,
`InheritLoadBalanceInfo` tinyint(1) NOT NULL DEFAULT 0,
`InheritAutomaticResize` tinyint(1) NOT NULL DEFAULT 0,
`RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0,
`InheritRedirectClipboard` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3324 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `tblRoot`
--
DROP TABLE IF EXISTS `tblRoot`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tblRoot` (
`Name` varchar(2048) NOT NULL,
`Export` tinyint(1) NOT NULL,
`Protected` varchar(4048) NOT NULL,
`ConfVersion` double NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `tblUpdate`
--
DROP TABLE IF EXISTS `tblUpdate`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tblUpdate` (
`LastUpdate` datetime(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
.. include:: mysql_db_setup.sql
:code: sql

View File

@@ -23,7 +23,11 @@ New Connection
.. tip::
You can also duplicate an already created connection if you want to follow some sort of template of a connection. Just right click on folder or connection to duplicate the item. The information is then carried over for editing. This can save a lot of time when the connection list is large.
You can also duplicate an existing connection. Just right click on folder or connection to duplicate the item. The information is then carried over for editing. This can save a lot of time when the connection list is large.
.. tip::
When inside an SSH session you can open the PuTTY menu by holding down the CTRL key while right-clicking into the session window.
Creates a new connection item in the connections dialog after where cursor is present.

View File

@@ -12,7 +12,7 @@ namespace mRemoteNG {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -2295,7 +2295,7 @@ namespace mRemoteNG {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1000")]
[global::System.Configuration.DefaultSettingValueAttribute("10000")]
public int EncryptionKeyDerivationIterations {
get {
return ((int)(this["EncryptionKeyDerivationIterations"]));

View File

@@ -148,8 +148,8 @@
</Setting>
<Setting Name="ConDefaultRedirectSound" Type="System.String" Scope="User">
<Value Profile="(Default)">DoNotPlay</Value>
</Setting>
<Setting Name="ConDefaultRedirectAudioCapture" Type="System.Boolean" Scope="User">
</Setting>
<Setting Name="ConDefaultRedirectAudioCapture" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MaxPuttyWaitTime" Type="System.Int32" Scope="User">
@@ -256,8 +256,8 @@
</Setting>
<Setting Name="InhDefaultRedirectSound" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="InhDefaultRedirectAudioCapture" Type="System.Boolean" Scope="User">
</Setting>
<Setting Name="InhDefaultRedirectAudioCapture" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="InhDefaultResolution" Type="System.Boolean" Scope="User">
@@ -570,7 +570,7 @@
<Value Profile="(Default)">GCM</Value>
</Setting>
<Setting Name="EncryptionKeyDerivationIterations" Type="System.Int32" Scope="User">
<Value Profile="(Default)">1000</Value>
<Value Profile="(Default)">10000</Value>
</Setting>
<Setting Name="ConDefaultSoundQuality" Type="System.String" Scope="User">
<Value Profile="(Default)">Dynamic</Value>

View File

@@ -19,7 +19,7 @@ namespace mRemoteNG {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Language {
@@ -212,6 +212,23 @@ namespace mRemoteNG {
return ResourceManager.GetString("Edit", resourceCulture);
}
}
/// Looks up a localized string similar to Encryption Test.
/// </summary>
internal static string EncryptionTest {
get {
return ResourceManager.GetString("EncryptionTest", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Encrypting {0} entries using {1}/{2} and {3} iterations took {4} seconds..
/// </summary>
internal static string EncryptionTestResultMessage {
get {
return ResourceManager.GetString("EncryptionTestResultMessage", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Environment.
@@ -8011,6 +8028,15 @@ namespace mRemoteNG {
}
}
/// <summary>
/// Looks up a localized string similar to Test Settings.
/// </summary>
internal static string TestSettings {
get {
return ResourceManager.GetString("TestSettings", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to An unhandled exception has occurred.
/// </summary>

View File

@@ -1334,7 +1334,7 @@ Arrancando con un nuevo archivo de conexiones.</value>
<value>Introduzca su nombre de usuario de autentificación en el proxy.</value>
</data>
<data name="strPropertyNameAddress" xml:space="preserve">
<value>Nombre dle host/IP</value>
<value>Nombre del host/IP</value>
</data>
<data name="strPropertyNameAll" xml:space="preserve">
<value>Todo</value>
@@ -2068,4 +2068,4 @@ mRemoteNG ahora se cerrará y comenzará la instalación.</value>
<data name="strYes" xml:space="preserve">
<value>Sí</value>
</data>
</root>
</root>

View File

@@ -2802,4 +2802,13 @@ Development Channel includes Alphas, Betas &amp; Release Candidates.</value>
<data name="Edit" xml:space="preserve">
<value>Edit</value>
</data>
<data name="EncryptionTestResultMessage" xml:space="preserve">
<value>Encrypting {0} entries using {1}/{2} and {3} iterations took {4} seconds.</value>
</data>
<data name="EncryptionTest" xml:space="preserve">
<value>Encryption Test</value>
</data>
<data name="TestSettings" xml:space="preserve">
<value>Test Settings</value>
</data>
</root>

View File

@@ -2446,7 +2446,7 @@ mRemoteNG сейчас прекратит работу и начнет проц
<value>Минуты в режим ожидания</value>
</data>
<data name="strAccept" xml:space="preserve">
<value>Приминить</value>
<value>Применить</value>
</data>
<data name="strAdd" xml:space="preserve">
<value>Добавить</value>

View File

@@ -2769,7 +2769,7 @@ mRemoteNG 将退出并安装更新。</value>
<value>Multi SSH</value>
</data>
<data name="strMultiSSHToolTip" xml:space="preserve">
<value>按 ENTER 发送。 Ctrl+C 立即发送。</value>
<value>按 ENTER 发送。Ctrl+C 立即发送。</value>
</data>
<data name="strPropertyDescriptionFavorite" xml:space="preserve">
<value>在收藏夹菜单中显示此连接。</value>
@@ -2792,4 +2792,13 @@ mRemoteNG 将退出并安装更新。</value>
<data name="Environment" xml:space="preserve">
<value>环境</value>
</data>
<data name="EncryptionTestResultMessage" xml:space="preserve">
<value>使用 {1}/{2} 和 {3} 迭代加密 {0} 条目花费了 {4} 秒。</value>
</data>
<data name="EncryptionTest" xml:space="preserve">
<value>加密测试</value>
</data>
<data name="TestSettings" xml:space="preserve">
<value>测试设置</value>
</data>
</root>

View File

@@ -221,7 +221,7 @@ namespace mRemoteNG.UI.Controls.ConnectionInfoPropertyGrid
strHide.Add(nameof(AbstractConnectionRecord.RDPAlertIdleTimeout));
}
if (SelectedConnectionInfo.RDGatewayUsageMethod == RdpProtocol.RDGatewayUsageMethod.Never)
if (SelectedConnectionInfo.RDGatewayUsageMethod == RDGatewayUsageMethod.Never)
{
strHide.Add(nameof(AbstractConnectionRecord.RDGatewayDomain));
strHide.Add(nameof(AbstractConnectionRecord.RDGatewayHostname));
@@ -230,20 +230,20 @@ namespace mRemoteNG.UI.Controls.ConnectionInfoPropertyGrid
strHide.Add(nameof(AbstractConnectionRecord.RDGatewayUsername));
}
else if (SelectedConnectionInfo.RDGatewayUseConnectionCredentials ==
RdpProtocol.RDGatewayUseConnectionCredentials.Yes)
RDGatewayUseConnectionCredentials.Yes)
{
strHide.Add(nameof(AbstractConnectionRecord.RDGatewayDomain));
strHide.Add(nameof(AbstractConnectionRecord.RDGatewayPassword));
strHide.Add(nameof(AbstractConnectionRecord.RDGatewayUsername));
}
if (!(SelectedConnectionInfo.Resolution == RdpProtocol.RDPResolutions.FitToWindow ||
SelectedConnectionInfo.Resolution == RdpProtocol.RDPResolutions.Fullscreen))
if (!(SelectedConnectionInfo.Resolution == RDPResolutions.FitToWindow ||
SelectedConnectionInfo.Resolution == RDPResolutions.Fullscreen))
{
strHide.Add(nameof(AbstractConnectionRecord.AutomaticResize));
}
if (SelectedConnectionInfo.RedirectSound != RdpProtocol.RDPSounds.BringToThisComputer)
if (SelectedConnectionInfo.RedirectSound != RDPSounds.BringToThisComputer)
{
strHide.Add(nameof(AbstractConnectionRecord.SoundQuality));
}

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Drawing;
using System.Windows.Forms;
using mRemoteNG.App;
@@ -20,6 +20,7 @@ namespace mRemoteNG.UI.Controls
_comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged;
_comboBox.DrawItem += ComboBox_DrawItem;
_comboBox.DrawMode = DrawMode.OwnerDrawFixed;
CausesValidation = false;
// This makes it so that _ignoreEnter works correctly before any items are added to the combo box
_comboBox.Items.Clear();

View File

@@ -34,12 +34,13 @@
this.labelBlockCipher = new mRemoteNG.UI.Controls.Base.NGLabel();
this.comboBoxBlockCipher = new mRemoteNG.UI.Controls.Base.NGComboBox();
this.groupAdvancedSecurityOptions = new mRemoteNG.UI.Controls.Base.NGGroupBox();
this.numberBoxKdfIterations = new mRemoteNG.UI.Controls.Base.NGNumericUpDown();
this.labelKdfIterations = new mRemoteNG.UI.Controls.Base.NGLabel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.btnTestSettings = new mRemoteNG.UI.Controls.Base.NGButton();
this.labelKdfIterations = new mRemoteNG.UI.Controls.Base.NGLabel();
this.numberBoxKdfIterations = new mRemoteNG.UI.Controls.Base.NGNumericUpDown();
this.groupAdvancedSecurityOptions.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numberBoxKdfIterations)).BeginInit();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numberBoxKdfIterations)).BeginInit();
this.SuspendLayout();
//
// chkEncryptCompleteFile
@@ -60,7 +61,7 @@
this.comboBoxEncryptionEngine.Dock = System.Windows.Forms.DockStyle.Fill;
this.comboBoxEncryptionEngine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxEncryptionEngine.FormattingEnabled = true;
this.comboBoxEncryptionEngine.Location = new System.Drawing.Point(223, 3);
this.comboBoxEncryptionEngine.Location = new System.Drawing.Point(190, 3);
this.comboBoxEncryptionEngine.Name = "comboBoxEncryptionEngine";
this.comboBoxEncryptionEngine.Size = new System.Drawing.Size(131, 21);
this.comboBoxEncryptionEngine.Sorted = true;
@@ -72,7 +73,7 @@
this.labelEncryptionEngine.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelEncryptionEngine.Location = new System.Drawing.Point(3, 0);
this.labelEncryptionEngine.Name = "labelEncryptionEngine";
this.labelEncryptionEngine.Size = new System.Drawing.Size(214, 26);
this.labelEncryptionEngine.Size = new System.Drawing.Size(181, 27);
this.labelEncryptionEngine.TabIndex = 0;
this.labelEncryptionEngine.Text = "Encryption Engine";
this.labelEncryptionEngine.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -81,9 +82,9 @@
//
this.labelBlockCipher.AutoSize = true;
this.labelBlockCipher.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelBlockCipher.Location = new System.Drawing.Point(3, 26);
this.labelBlockCipher.Location = new System.Drawing.Point(3, 27);
this.labelBlockCipher.Name = "labelBlockCipher";
this.labelBlockCipher.Size = new System.Drawing.Size(214, 26);
this.labelBlockCipher.Size = new System.Drawing.Size(181, 27);
this.labelBlockCipher.TabIndex = 2;
this.labelBlockCipher.Text = "Block Cipher Mode";
this.labelBlockCipher.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -94,21 +95,69 @@
this.comboBoxBlockCipher.Dock = System.Windows.Forms.DockStyle.Fill;
this.comboBoxBlockCipher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxBlockCipher.FormattingEnabled = true;
this.comboBoxBlockCipher.Location = new System.Drawing.Point(223, 29);
this.comboBoxBlockCipher.Location = new System.Drawing.Point(190, 30);
this.comboBoxBlockCipher.Name = "comboBoxBlockCipher";
this.comboBoxBlockCipher.Size = new System.Drawing.Size(131, 21);
this.comboBoxBlockCipher.TabIndex = 3;
this.comboBoxBlockCipher.TabIndex = 2;
//
// groupAdvancedSecurityOptions
//
this.groupAdvancedSecurityOptions.Controls.Add(this.tableLayoutPanel1);
this.groupAdvancedSecurityOptions.Location = new System.Drawing.Point(3, 30);
this.groupAdvancedSecurityOptions.Name = "groupAdvancedSecurityOptions";
this.groupAdvancedSecurityOptions.Size = new System.Drawing.Size(604, 112);
this.groupAdvancedSecurityOptions.Size = new System.Drawing.Size(604, 134);
this.groupAdvancedSecurityOptions.TabIndex = 1;
this.groupAdvancedSecurityOptions.TabStop = false;
this.groupAdvancedSecurityOptions.Text = "Advanced Security Options";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.AutoSize = true;
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.Controls.Add(this.labelKdfIterations, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.numberBoxKdfIterations, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.labelBlockCipher, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.comboBoxEncryptionEngine, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.labelEncryptionEngine, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.comboBoxBlockCipher, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.btnTestSettings, 1, 3);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Left;
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 18);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.Size = new System.Drawing.Size(324, 113);
this.tableLayoutPanel1.TabIndex = 2;
//
// btnTestSettings
//
this.btnTestSettings._mice = mRemoteNG.UI.Controls.Base.NGButton.MouseState.OUT;
this.btnTestSettings.AutoSize = true;
this.btnTestSettings.Dock = System.Windows.Forms.DockStyle.Right;
this.btnTestSettings.Location = new System.Drawing.Point(240, 85);
this.btnTestSettings.Name = "btnTestSettings";
this.btnTestSettings.Size = new System.Drawing.Size(81, 25);
this.btnTestSettings.TabIndex = 4;
this.btnTestSettings.Text = "Test Settings";
this.btnTestSettings.UseVisualStyleBackColor = true;
this.btnTestSettings.Click += new System.EventHandler(this.BtnTestSettings_Click);
//
// labelKdfIterations
//
this.labelKdfIterations.AutoSize = true;
this.labelKdfIterations.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelKdfIterations.Location = new System.Drawing.Point(3, 54);
this.labelKdfIterations.Name = "labelKdfIterations";
this.labelKdfIterations.Size = new System.Drawing.Size(181, 28);
this.labelKdfIterations.TabIndex = 4;
this.labelKdfIterations.Text = "Key Derivation Function Iterations";
this.labelKdfIterations.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// numberBoxKdfIterations
//
this.numberBoxKdfIterations.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -117,7 +166,7 @@
0,
0,
0});
this.numberBoxKdfIterations.Location = new System.Drawing.Point(223, 55);
this.numberBoxKdfIterations.Location = new System.Drawing.Point(190, 57);
this.numberBoxKdfIterations.Maximum = new decimal(new int[] {
50000,
0,
@@ -130,7 +179,7 @@
0});
this.numberBoxKdfIterations.Name = "numberBoxKdfIterations";
this.numberBoxKdfIterations.Size = new System.Drawing.Size(131, 22);
this.numberBoxKdfIterations.TabIndex = 5;
this.numberBoxKdfIterations.TabIndex = 3;
this.numberBoxKdfIterations.ThousandsSeparator = true;
this.numberBoxKdfIterations.Value = new decimal(new int[] {
1000,
@@ -138,38 +187,6 @@
0,
0});
//
// labelKdfIterations
//
this.labelKdfIterations.AutoSize = true;
this.labelKdfIterations.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelKdfIterations.Location = new System.Drawing.Point(3, 52);
this.labelKdfIterations.Name = "labelKdfIterations";
this.labelKdfIterations.Size = new System.Drawing.Size(214, 26);
this.labelKdfIterations.TabIndex = 4;
this.labelKdfIterations.Text = "Key Derivation Function Iterations";
this.labelKdfIterations.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 220F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.Controls.Add(this.labelKdfIterations, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.numberBoxKdfIterations, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.labelBlockCipher, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.comboBoxEncryptionEngine, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.labelEncryptionEngine, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.comboBoxBlockCipher, 1, 1);
this.tableLayoutPanel1.Location = new System.Drawing.Point(6, 21);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.Size = new System.Drawing.Size(357, 81);
this.tableLayoutPanel1.TabIndex = 2;
//
// SecurityPage
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -179,9 +196,10 @@
this.Name = "SecurityPage";
this.Size = new System.Drawing.Size(610, 490);
this.groupAdvancedSecurityOptions.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.numberBoxKdfIterations)).EndInit();
this.groupAdvancedSecurityOptions.PerformLayout();
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numberBoxKdfIterations)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -198,5 +216,6 @@
private Controls.Base.NGNumericUpDown numberBoxKdfIterations;
private Controls.Base.NGLabel labelKdfIterations;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private Controls.Base.NGButton btnTestSettings;
}
}

View File

@@ -1,6 +1,12 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Windows.Forms;
using mRemoteNG.App;
using mRemoteNG.Config.Serializers.Xml;
using mRemoteNG.Security;
using mRemoteNG.Security.Factories;
namespace mRemoteNG.UI.Forms.OptionsPages
{
@@ -30,6 +36,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
labelEncryptionEngine.Text = Language.strEncryptionEngine;
labelKdfIterations.Text = Language.strEncryptionKeyDerivationIterations;
groupAdvancedSecurityOptions.Text = Language.strAdvancedSecurityOptions;
btnTestSettings.Text = Language.TestSettings;
}
public override void LoadSettings()
@@ -62,5 +69,33 @@ namespace mRemoteNG.UI.Forms.OptionsPages
{
comboBoxBlockCipher.DataSource = Enum.GetValues(typeof(BlockCipherModes));
}
private void BtnTestSettings_Click(object sender, EventArgs e)
{
var connectionTree = Runtime.ConnectionsService.ConnectionTreeModel;
if (!connectionTree.RootNodes.Any())
return;
var engine = (BlockCipherEngines) comboBoxEncryptionEngine.SelectedItem;
var mode = (BlockCipherModes) comboBoxBlockCipher.SelectedItem;
var cryptographyProvider = new CryptoProviderFactory(engine, mode).Build();
cryptographyProvider.KeyDerivationIterations = (int) numberBoxKdfIterations.Value;
var serializerFactory = new XmlConnectionSerializerFactory();
var serializer = serializerFactory.Build(cryptographyProvider, connectionTree, useFullEncryption: chkEncryptCompleteFile.Checked);
var nodeCount = connectionTree.GetRecursiveChildList().Count;
var timer = Stopwatch.StartNew();
var rootNode = connectionTree.RootNodes.First();
serializer.Serialize(rootNode);
timer.Stop();
MessageBox.Show(this,
string.Format(Language.EncryptionTestResultMessage,
nodeCount, engine, mode, numberBoxKdfIterations.Value, timer.Elapsed.TotalSeconds),
Language.EncryptionTest,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
}

View File

@@ -49,7 +49,6 @@
this.olvConnections.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.olvConnections.HideSelection = false;
this.olvConnections.IsSimpleDragSource = true;
this.olvConnections.IsSimpleDropSink = true;
this.olvConnections.LabelEdit = true;
this.olvConnections.Location = new System.Drawing.Point(0, 24);
this.olvConnections.MultiSelect = false;

View File

@@ -607,7 +607,7 @@
<value>GCM</value>
</setting>
<setting name="EncryptionKeyDerivationIterations" serializeAs="String">
<value>1000</value>
<value>10000</value>
</setting>
<setting name="ConDefaultSoundQuality" serializeAs="String">
<value>Dynamic</value>

View File

@@ -172,6 +172,7 @@
<Compile Include="Config\Serializers\ConnectionSerializers\MsSql\LocalConnectionPropertiesModel.cs" />
<Compile Include="Config\Serializers\ConnectionSerializers\MsSql\LocalConnectionPropertiesXmlSerializer.cs" />
<Compile Include="Config\Serializers\ConnectionSerializers\MsSql\SqlConnectionListMetaData.cs" />
<Compile Include="Config\Serializers\ConnectionSerializers\Xml\XmlConnectionSerializerFactory.cs" />
<Compile Include="Config\Serializers\ConnectionSerializers\Xml\XmlExtensions.cs" />
<Compile Include="Config\Serializers\CredentialProviderSerializer\CredentialRepositoryListDeserializer.cs" />
<Compile Include="Config\CredentialRepositoryListLoader.cs" />
@@ -251,12 +252,20 @@
<Compile Include="Connection\IHasParent.cs" />
<Compile Include="Connection\Protocol\Http\Connection.Protocol.HTTPS.CertEvent.cs" />
<Compile Include="Connection\Protocol\ProtocolFactory.cs" />
<Compile Include="Connection\Protocol\RDP\AuthenticationLevel.cs" />
<Compile Include="Connection\Protocol\RDP\AzureLoadBalanceInfoEncoder.cs" />
<Compile Include="Connection\Protocol\ISupportsViewOnly.cs" />
<Compile Include="Connection\Protocol\RDP\RDGatewayUsageMethod.cs" />
<Compile Include="Connection\Protocol\RDP\RDGatewayUseConnectionCredentials.cs" />
<Compile Include="Connection\Protocol\RDP\RdpClientWrap.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Connection\Protocol\RDP\RDPColors.cs" />
<Compile Include="Connection\Protocol\RDP\RdpErrorCodes.cs" />
<Compile Include="Connection\Protocol\RDP\RDPPerformanceFlags.cs" />
<Compile Include="Connection\Protocol\RDP\RDPResolutions.cs" />
<Compile Include="Connection\Protocol\RDP\RDPSoundQuality.cs" />
<Compile Include="Connection\Protocol\RDP\RDPSounds.cs" />
<Compile Include="Connection\Protocol\VNC\VNCEnum.cs" />
<Compile Include="Connection\WebHelper.cs" />
<Compile Include="Credential\PlaceholderCredentialRecord.cs" />
@@ -1167,6 +1176,8 @@
</None>
<None Include="Documentation\images\connections_status.png" />
<None Include="Documentation\images\putty.png" />
<Content Include="Documentation\mssql_db_setup.sql" />
<Content Include="Documentation\mysql_db_setup.sql" />
<Content Include="Firefox\AccessibleMarshal.dll" />
<Content Include="Firefox\breakpadinjector.dll" />
<Content Include="Firefox\d3dcompiler_47.dll" />