merged develop into hyperv

This commit is contained in:
Faryan Rezagholi
2019-06-21 13:58:51 +02:00
59 changed files with 2382 additions and 1529 deletions

View File

@@ -17,7 +17,7 @@ You'll find all information on our GitHub workflow in our [Wiki](https://github.
- [Branches](https://github.com/mRemoteNG/mRemoteNG/wiki/Branches)
- [Bug Repots](https://github.com/mRemoteNG/mRemoteNG/wiki/Bug-Reports)
- [Feauture Requests](https://github.com/mRemoteNG/mRemoteNG/wiki/Feature-Requests)
- [Feature Requests](https://github.com/mRemoteNG/mRemoteNG/wiki/Feature-Requests)
- [Pull Requests](https://github.com/mRemoteNG/mRemoteNG/wiki/Pull-Requests)
Want to help but don't know where to start? Check out the issues that we've labeled with [`Help Wanted`](https://github.com/mRemoteNG/mRemoteNG/issues?q=is%3Aissue+is%3Aopen+label%3A%22Help+Wanted%22) or [`ready`](https://github.com/mRemoteNG/mRemoteNG/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3A%22ready%22). These will vary in difficulty, but should be possible for new contributors.

View File

@@ -19,6 +19,7 @@
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Updated translation
## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->

View File

@@ -6,7 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased]
### Added
### 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
- #1428: Fixed a rare error when checking for FIPS
- #1426: Tabbing is reversed in config window
- #1425: Connections didn't always respect the Panel property

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

@@ -100,9 +100,9 @@ namespace mRemoteNGTests.Config.Serializers.ConnectionSerializers.Csv
UseVmId = false,
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,
@@ -113,7 +113,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,
@@ -124,8 +124,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

@@ -222,10 +222,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.UseVmId = false;

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

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
@@ -11,10 +11,10 @@ namespace mRemoteNG.App.Info
{
public static class GeneralAppInfo
{
public const string UrlHome = "https://www.mremoteng.org/";
public const string UrlDonate = "https://mremoteng.org/contribute/";
public const string UrlForum = "https://www.reddit.com/r/mRemoteNG/";
public const string UrlBugs = "https://bugs.mremoteng.org/";
public const string UrlHome = "https://www.mremoteng.org";
public const string UrlDonate = "https://mremoteng.org/contribute";
public const string UrlForum = "https://www.reddit.com/r/mRemoteNG";
public const string UrlBugs = "https://bugs.mremoteng.org";
public static string ApplicationVersion = Application.ProductVersion;
public static readonly string ProductName = Application.ProductName;

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

@@ -180,21 +180,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;
}
@@ -278,7 +278,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;
}
@@ -355,14 +355,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

@@ -102,15 +102,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"];
@@ -124,8 +124,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"];
@@ -154,15 +154,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

@@ -199,8 +199,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;
@@ -227,21 +227,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
@@ -258,15 +258,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;
}
@@ -325,15 +325,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

@@ -32,7 +32,7 @@ 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;
@@ -40,16 +40,16 @@ namespace mRemoteNG.Connection
private bool _useCredSsp;
private bool _useVmId;
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;
@@ -62,8 +62,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;
@@ -256,7 +256,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");
@@ -341,7 +341,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");
@@ -362,7 +362,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");
@@ -408,7 +408,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");
@@ -430,7 +430,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");
@@ -567,7 +567,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");
@@ -578,7 +578,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

@@ -297,11 +297,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;
@@ -313,11 +313,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;
@@ -325,11 +325,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;
@@ -345,9 +344,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

@@ -5,6 +5,7 @@ using mRemoteNG.App;
using mRemoteNG.Connection.Protocol;
using mRemoteNG.Container;
using mRemoteNG.Messages;
using mRemoteNG.Tools;
using mRemoteNG.UI.Forms;
using mRemoteNG.UI.Panels;
using mRemoteNG.UI.Tabs;
@@ -21,35 +22,6 @@ namespace mRemoteNG.Connection
public IEnumerable<string> ActiveConnections => _activeConnections;
public void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force = ConnectionInfo.Force.None)
{
OpenConnection(containerInfo, force, null);
}
public void OpenConnection(ConnectionInfo connectionInfo)
{
try
{
OpenConnection(connectionInfo, ConnectionInfo.Force.None);
}
catch (Exception ex)
{
Runtime.MessageCollector.AddExceptionStackTrace(Language.strConnectionOpenFailed, ex);
}
}
public void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force)
{
try
{
OpenConnection(connectionInfo, force, null);
}
catch (Exception ex)
{
Runtime.MessageCollector.AddExceptionStackTrace(Language.strConnectionOpenFailed, ex);
}
}
public bool SwitchToOpenConnection(ConnectionInfo connectionInfo)
{
var interfaceControl = FindConnectionContainer(connectionInfo);
@@ -61,13 +33,15 @@ namespace mRemoteNG.Connection
return true;
}
#region Private
private void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force, ConnectionWindow conForm)
public void OpenConnection(
ContainerInfo containerInfo,
ConnectionInfo.Force force = ConnectionInfo.Force.None,
ConnectionWindow conForm = null)
{
var children = containerInfo.Children;
if (children.Count == 0) return;
foreach (var child in children)
if (containerInfo == null || containerInfo.Children.Count == 0)
return;
foreach (var child in containerInfo.Children)
{
if (child is ContainerInfo childAsContainer)
OpenConnection(childAsContainer, force, conForm);
@@ -76,8 +50,14 @@ namespace mRemoteNG.Connection
}
}
private void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force, ConnectionWindow conForm)
public void OpenConnection(
ConnectionInfo connectionInfo,
ConnectionInfo.Force force = ConnectionInfo.Force.None,
ConnectionWindow conForm = null)
{
if (connectionInfo == null)
return;
try
{
if (connectionInfo.Hostname == "" && connectionInfo.Protocol != ProtocolType.IntApp)
@@ -130,6 +110,7 @@ namespace mRemoteNG.Connection
}
}
#region Private
private static void StartPreConnectionExternalApp(ConnectionInfo connectionInfo)
{
if (connectionInfo.PreExtApp == "") return;

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Collections.Generic;
using mRemoteNG.Container;
using mRemoteNG.UI.Window;
namespace mRemoteNG.Connection
{
@@ -7,11 +8,15 @@ namespace mRemoteNG.Connection
{
IEnumerable<string> ActiveConnections { get; }
void OpenConnection(ConnectionInfo connectionInfo);
void OpenConnection(
ContainerInfo containerInfo,
ConnectionInfo.Force force = ConnectionInfo.Force.None,
ConnectionWindow conForm = null);
void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force = ConnectionInfo.Force.None);
void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force);
void OpenConnection(
ConnectionInfo connectionInfo,
ConnectionInfo.Force force = ConnectionInfo.Force.None,
ConnectionWindow conForm = null);
bool SwitchToOpenConnection(ConnectionInfo connectionInfo);
}

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
@@ -828,131 +827,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

@@ -2307,7 +2307,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

@@ -573,7 +573,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

@@ -186,6 +186,24 @@ namespace mRemoteNG {
}
}
/// <summary>
/// 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.
/// </summary>
@@ -8020,6 +8038,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>

File diff suppressed because it is too large Load Diff

View File

@@ -2793,6 +2793,15 @@ Development Channel includes Alphas, Betas &amp; Release Candidates.</value>
<data name="Environment" xml:space="preserve">
<value>Environment</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>
<data name="strPropertyDescriptionUseVmId" xml:space="preserve">
<value>Use VM ID to connect to VM running on Hyper-V.</value>
</data>

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

@@ -244,7 +244,8 @@
<value>测试代理</value>
</data>
<data name="strCannotImportNormalSessionFile" xml:space="preserve">
<value>您不能导入正常连接文件。请使用文件/加载连接文件以导入正常连接文件!</value>
<value>您不能导入正常连接文件。
请使用文件/加载连接文件以导入正常连接文件!</value>
</data>
<data name="strCannotStartPortScan" xml:space="preserve">
<value>无法启动端口扫描IP 格式不正确!</value>
@@ -308,7 +309,7 @@ mRemoteNG提供此组件但是如果没有使用 mRemoteNG 安装程序,不
</data>
<data name="strCcICAFailed" xml:space="preserve">
<value>启用 ICA 需要提前安装 XenDesktop Online 插件,并正确注册 wfica.ocx 库文件。您可以在此下载此插件http://www.citrix.com/download/
如果您已安装 XenDesktop Online 插件,但人就检测失败,请手动注册 wfica.ocx
如果您已安装 XenDesktop Online 插件,但仍旧检测失败,请手动注册 wfica.ocx。
请打开运行对话框(开始菜单/运行并输入如下内容“regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" ”c:\Program Files\Citrix\ICA Client\ 是您安装 XenDesktop Online 插件的路径)。
如果仍然无法通过此检查或在 mRemoteNG 中使用 ICA请咨询 {0}。</value>
</data>
@@ -335,7 +336,8 @@ Citrix ICA 客户端空间版本:{0}</value>
远程桌面版本 {0}</value>
</data>
<data name="strCcVNCFailed" xml:space="preserve">
<value>使用 VNC 前,请确认 VncSharp.dll 在您安装 mRemoteNG 的目录中(一般为 C:\Program Files\mRemoteNG\
<value>VNC 要求 VncSharp.dll 位于 mRemoteNG 应用程序文件夹中
请确认 VncSharp.dll 在您安装 mRemoteNG 的目录中(一般为 C:\Program Files\mRemoteNG\)。
如果仍然无法通过此检查或在 mRemoteNG 中使用 VNC请咨询 {0}。</value>
</data>
<data name="strCcVNCOK" xml:space="preserve">
@@ -460,7 +462,8 @@ VncSharp 版本 {0}</value>
<value>无法加载配置界面。</value>
</data>
<data name="strConfirmCloseConnectionMainInstruction" xml:space="preserve">
<value>确定要关闭连接“{0}”?</value>
<value>确定要关闭连接
“{0}”?</value>
</data>
<data name="strConfirmCloseConnectionPanelMainInstruction" xml:space="preserve">
<value>确实要关闭面板“{0}”?此面板所包含的所有连接将会断开。</value>
@@ -499,7 +502,7 @@ VncSharp 版本 {0}</value>
<value>协议事件:已连接</value>
</data>
<data name="strConnectionEventConnectedDetail" xml:space="preserve">
<value>通过{1}到主机{0}的连接,已被用户{2}打开(说明:“{3}”,自定义信息:“{4}”)</value>
<value>通过{1}到主机{0}的连接,已被用户{2}打开(说明:“{3}”,自定义信息:“{4}”)</value>
</data>
<data name="strConnectionEventConnectionFailed" xml:space="preserve">
<value>连接失败!</value>
@@ -522,7 +525,7 @@ VncSharp 版本 {0}</value>
<value>连接</value>
</data>
<data name="strConnectionSetDefaultPortFailed" xml:space="preserve">
<value>无法设置默认端口 </value>
<value>无法设置默认端口!</value>
</data>
<data name="strConnectionsFileBackupFailed" xml:space="preserve">
<value>无法创建连接配置文件备份!</value>
@@ -653,7 +656,9 @@ VncSharp 版本 {0}</value>
</data>
<data name="strErrorFipsPolicyIncompatible" xml:space="preserve">
<value>Windows 安全设置中已启用"系统加密:使用 FIPS 兼容算法进行加密、散列和签名操作"。
请参阅 Microsoft 支持文章中的详细信息http://support.microsoft.com/kb/811833
{0} 不完全符合FIPS标准。单击“确定”继续自己的决定或单击“取消”退出。</value>
</data>
<data name="strErrors" xml:space="preserve">
@@ -707,6 +712,9 @@ VncSharp 版本 {0}</value>
<data name="strFAMFAMFAMAttribution" xml:space="preserve">
<value>内置图标由[FAMFAMFAM]制作</value>
</data>
<data name="strFAMFAMFAMAttributionURL" xml:space="preserve">
<value>http://www.famfamfam.com/</value>
</data>
<data name="strFileFormatLabel" xml:space="preserve">
<value>文件格式(&amp;F):</value>
</data>
@@ -773,6 +781,9 @@ VncSharp 版本 {0}</value>
<data name="strHost" xml:space="preserve">
<value>主机</value>
</data>
<data name="strHttp" xml:space="preserve">
<value>HTTP</value>
</data>
<data name="strHttpConnectFailed" xml:space="preserve">
<value>HTTP 连接失败!</value>
</data>
@@ -782,9 +793,21 @@ VncSharp 版本 {0}</value>
<data name="strHttpDocumentTileChangeFailed" xml:space="preserve">
<value>更改HTTP文档标题失败</value>
</data>
<data name="strHttpGecko" xml:space="preserve">
<value>Gecko (Firefox)</value>
</data>
<data name="strHttpInternetExplorer" xml:space="preserve">
<value>Internet Explorer</value>
</data>
<data name="strHttps" xml:space="preserve">
<value>HTTPS</value>
</data>
<data name="strHttpSetPropsFailed" xml:space="preserve">
<value>设置 HTTP 属性失败!</value>
</data>
<data name="strICA" xml:space="preserve">
<value>ICA</value>
</data>
<data name="strIcaConnectionFailed" xml:space="preserve">
<value>无法创建新 ICA 连接!</value>
</data>
@@ -878,6 +901,12 @@ VncSharp 版本 {0}</value>
<data name="strIntAppTitle" xml:space="preserve">
<value>内部程序标题:{0}</value>
</data>
<data name="strKeysCtrlAltDel" xml:space="preserve">
<value>CTRL-ALT-DEL</value>
</data>
<data name="strKeysCtrlEsc" xml:space="preserve">
<value>CTRL-ESC</value>
</data>
<data name="strLabelAddress" xml:space="preserve">
<value>地址:</value>
</data>
@@ -986,6 +1015,9 @@ VncSharp 版本 {0}</value>
<data name="strMagicLibraryAttribution" xml:space="preserve">
<value>使用[Crownwood Software]开发的 Magic 库</value>
</data>
<data name="strMagicLibraryAttributionURL" xml:space="preserve">
<value>http://www.dotnetmagic.com/</value>
</data>
<data name="strMenuAbout" xml:space="preserve">
<value>关于</value>
</data>
@@ -1188,7 +1220,7 @@ VncSharp 版本 {0}</value>
<value>查看(&amp;V)</value>
</data>
<data name="strMenuViewOnly" xml:space="preserve">
<value>查看模式(VNC)</value>
<value>查看</value>
</data>
<data name="strMenuWebsite" xml:space="preserve">
<value>网站</value>
@@ -1202,6 +1234,12 @@ VncSharp 版本 {0}</value>
<data name="strMoveUp" xml:space="preserve">
<value>上移</value>
</data>
<data name="strMremoteNgCsv" xml:space="preserve">
<value>mRemoteNG CSV</value>
</data>
<data name="strMremoteNgXml" xml:space="preserve">
<value>mRemoteNG XML</value>
</data>
<data name="strMyCurrentWindowsCreds" xml:space="preserve">
<value>当前凭据(Windows登录信息)</value>
</data>
@@ -1248,7 +1286,8 @@ VncSharp 版本 {0}</value>
<value>无可用更新</value>
</data>
<data name="strOldConffile" xml:space="preserve">
<value>您正在试图加载旧版mRemote连接配置文件可能会导致出现运行时错误。如果您遇到此类错误,请创建新的连接配置文件!</value>
<value>您正在试图加载旧版mRemote连接配置文件可能会导致出现运行时错误。
如果您遇到此类错误,请创建新的连接配置文件!</value>
</data>
<data name="strOpenNewTabRight" xml:space="preserve">
<value>新建标签于当前标签右侧</value>
@@ -1442,6 +1481,9 @@ VncSharp 版本 {0}</value>
<data name="strPropertyDescriptionRedirectSounds" xml:space="preserve">
<value>请选择远程主机声音的处理方式。</value>
</data>
<data name="strPropertyDescriptionRedirectAudioCapture" xml:space="preserve">
<value>选择是否应将远程计算机上的默认音频输入设备重定向到此计算机。</value>
</data>
<data name="strPropertyDescriptionRenderingEngine" xml:space="preserve">
<value>请选择一个有效的渲染显示HTML的引擎。</value>
</data>
@@ -1604,6 +1646,9 @@ VncSharp 版本 {0}</value>
<data name="strPropertyNameRedirectSounds" xml:space="preserve">
<value>声音</value>
</data>
<data name="strPropertyNameRedirectAudioCapture" xml:space="preserve">
<value>音频捕获</value>
</data>
<data name="strPropertyNameRenderingEngine" xml:space="preserve">
<value>渲染引擎</value>
</data>
@@ -1728,6 +1773,12 @@ VncSharp 版本 {0}</value>
<data name="strRadioCloseWarnNever" xml:space="preserve">
<value>关闭连接时不需确认</value>
</data>
<data name="strRAW" xml:space="preserve">
<value>RAW</value>
</data>
<data name="strRDP" xml:space="preserve">
<value>RDP</value>
</data>
<data name="strRDP16777216Colors" xml:space="preserve">
<value>24位色</value>
</data>
@@ -1816,7 +1867,7 @@ VncSharp 版本 {0}</value>
<value>Winsock 初始化错误。</value>
</data>
<data name="strRdpFileCouldNotBeImported" xml:space="preserve">
<value>无法导入 rdp 文件 </value>
<value>无法导入 rdp 文件!</value>
</data>
<data name="strRDPFitToPanel" xml:space="preserve">
<value>适合面板</value>
@@ -1905,6 +1956,9 @@ VncSharp 版本 {0}</value>
<data name="strRename" xml:space="preserve">
<value>重命名</value>
</data>
<data name="strRlogin" xml:space="preserve">
<value>Rlogin</value>
</data>
<data name="strSave" xml:space="preserve">
<value>保存</value>
</data>
@@ -1918,7 +1972,7 @@ VncSharp 版本 {0}</value>
<value>退出时保存连接配置文件</value>
</data>
<data name="strSaveImageFilter" xml:space="preserve">
<value>GIF(.gif)|*.gif|JPEG(.jpeg)|*.jpeg|JPEG(.jpg)|*.jpg|PNG(.png)|*.png</value>
<value>图形交换格式文件 (.gif)|*.gif|联合图像专家组文件 (.jpeg)|*.jpeg|联合图像专家组文件 (.jpg)|*.jpg|便携式网络图形文件 (.png)|*.png</value>
</data>
<data name="strScreen" xml:space="preserve">
<value>屏幕</value>
@@ -1977,6 +2031,9 @@ VncSharp 版本 {0}</value>
<data name="strSmartSizeModeNone" xml:space="preserve">
<value>禁用窗口自适应</value>
</data>
<data name="strSocks5" xml:space="preserve">
<value>Socks 5</value>
</data>
<data name="strSort" xml:space="preserve">
<value>排序</value>
</data>
@@ -2043,6 +2100,9 @@ VncSharp 版本 {0}</value>
<data name="strTabUpdates" xml:space="preserve">
<value>升级</value>
</data>
<data name="strTelnet" xml:space="preserve">
<value>Telnet</value>
</data>
<data name="strTheFollowing" xml:space="preserve">
<value>以下:</value>
</data>
@@ -2190,6 +2250,9 @@ VncSharp 版本 {0}</value>
<data name="strType" xml:space="preserve">
<value>类型</value>
</data>
<data name="strUltraVncRepeater" xml:space="preserve">
<value>Ultra VNC Repeater</value>
</data>
<data name="strUltraVNCSCListeningPort" xml:space="preserve">
<value>UltraVNC SingleClick 端口:</value>
</data>
@@ -2260,6 +2323,9 @@ mRemoteNG 将退出并安装更新。</value>
<data name="strVersion" xml:space="preserve">
<value>版本</value>
</data>
<data name="strVnc" xml:space="preserve">
<value>VNC</value>
</data>
<data name="strVncConnectionDisconnectFailed" xml:space="preserve">
<value>VNC 连接断开失败!</value>
</data>
@@ -2293,6 +2359,9 @@ mRemoteNG 将退出并安装更新。</value>
<data name="strWeifenLuoAttribution" xml:space="preserve">
<value>使用DockPanel Suite[Weifen Luo]</value>
</data>
<data name="strWeifenLuoAttributionURL" xml:space="preserve">
<value>http://sourceforge.net/projects/dockpanelsuite/</value>
</data>
<data name="strXULrunnerPath" xml:space="preserve">
<value>XULrunner 路径:</value>
</data>
@@ -2368,6 +2437,9 @@ mRemoteNG 将退出并安装更新。</value>
<data name="strCredentialManager" xml:space="preserve">
<value>凭证管理器</value>
</data>
<data name="strID" xml:space="preserve">
<value>ID</value>
</data>
<data name="strRemove" xml:space="preserve">
<value>移除</value>
</data>
@@ -2628,6 +2700,9 @@ mRemoteNG 将退出并安装更新。</value>
<data name="strReconnectAllConnections" xml:space="preserve">
<value>重新连接所有连接</value>
</data>
<data name="strUltraVNCSingleClick" xml:space="preserve">
<value>UltraVNC SingleClick</value>
</data>
<data name="strMenuDisconnectOthersRight" xml:space="preserve">
<value>断开右侧标签的连接</value>
</data>
@@ -2694,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>
@@ -2705,4 +2780,25 @@ mRemoteNG 将退出并安装更新。</value>
<data name="Favorites" xml:space="preserve">
<value>收藏夹</value>
</data>
</root>
<data name="ClearSearchString" xml:space="preserve">
<value>清除搜索字符串</value>
</data>
<data name="ConnectInViewOnlyMode" xml:space="preserve">
<value>以仅查看模式连接</value>
</data>
<data name="DoNotTrimUsername" xml:space="preserve">
<value>不要修剪用户名中的空格</value>
</data>
<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

@@ -1,17 +1,18 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace mRemoteNG.UI.Controls.Base
{
public class NGSearchBox : NGTextBox
{
private PictureBox pbClear = new PictureBox();
private ToolTip btClearToolTip = new ToolTip();
private bool _showDefaultText = true;
private bool _settingDefaultText = true;
private readonly PictureBox _pbClear = new PictureBox();
private readonly ToolTip _btClearToolTip = new ToolTip();
public NGSearchBox()
{
InitializeComponent();
TextChanged += NGSearchBox_TextChanged;
LostFocus += FocusLost;
GotFocus += FocusGot;
AddClearButton();
@@ -20,46 +21,47 @@ namespace mRemoteNG.UI.Controls.Base
private void ApplyLanguage()
{
btClearToolTip.SetToolTip(pbClear, Language.ClearSearchString);
_btClearToolTip.SetToolTip(_pbClear, Language.ClearSearchString);
}
private void AddClearButton()
{
pbClear.Image = Resources.Delete;
pbClear.Width = 20;
pbClear.Dock = DockStyle.Right;
pbClear.Cursor = Cursors.Default;
pbClear.Click += PbClear_Click;
pbClear.LostFocus += FocusLost;
Controls.Add(pbClear);
_pbClear.Image = Resources.Delete;
_pbClear.Width = 20;
_pbClear.Dock = DockStyle.Right;
_pbClear.Cursor = Cursors.Default;
_pbClear.Click += PbClear_Click;
_pbClear.LostFocus += FocusLost;
Controls.Add(_pbClear);
}
private void FocusLost(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Text))
{
Text = Language.strSearchPrompt;
pbClear.Visible = false;
}
if (!_showDefaultText)
return;
_settingDefaultText = true;
Text = Language.strSearchPrompt;
_pbClear.Visible = false;
}
private void FocusGot(object sender, EventArgs e) => Text = "";
private void InitializeComponent()
private void FocusGot(object sender, EventArgs e)
{
this.SuspendLayout();
//
// NGSearchBox
//
this.TextChanged += new System.EventHandler(this.NGSearchBox_TextChanged);
this.ResumeLayout(false);
if (_showDefaultText)
Text = "";
}
private void PbClear_Click(object sender, EventArgs e) => Text = string.Empty;
private void NGSearchBox_TextChanged(object sender, EventArgs e)
{
pbClear.Visible = Text == Language.strSearchPrompt ? false : TextLength > 0;
if (!_settingDefaultText)
{
_showDefaultText = string.IsNullOrEmpty(Text);
}
_pbClear.Visible = !_showDefaultText && TextLength > 0;
_settingDefaultText = false;
}
}
}

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

@@ -693,15 +693,9 @@ namespace mRemoteNG.UI.Forms
pnlDock.DockTopPortion = pnlDock.Height * 0.25;
pnlDock.DockBottomPortion = pnlDock.Height * 0.25;
Windows.TreeForm.DockAreas = DockAreas.DockBottom | DockAreas.DockLeft | DockAreas.DockRight |
DockAreas.DockTop | DockAreas.Float;
Windows.TreeForm.Show(pnlDock, DockState.DockLeft);
Windows.ConfigForm.DockAreas = DockAreas.DockBottom | DockAreas.DockLeft | DockAreas.DockRight |
DockAreas.DockTop | DockAreas.Float;
Windows.ConfigForm.Show(pnlDock);
Windows.ConfigForm.DockTo(Windows.TreeForm.Pane, DockStyle.Bottom, -1);
Windows.ErrorsForm.DockAreas = DockAreas.DockBottom | DockAreas.DockLeft | DockAreas.DockRight |
DockAreas.DockTop | DockAreas.Float;
Windows.ErrorsForm.Show(pnlDock, DockState.DockBottomAutoHide);
Windows.ScreenshotForm.Hide();

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

@@ -338,8 +338,8 @@ namespace mRemoteNG.UI.Window
try
{
if (!char.IsLetterOrDigit(e.KeyChar)) return;
txtSearch.Text = e.KeyChar.ToString();
txtSearch.Focus();
txtSearch.Text = e.KeyChar.ToString();
txtSearch.SelectionStart = txtSearch.TextLength;
}
catch (Exception ex)
@@ -355,6 +355,8 @@ namespace mRemoteNG.UI.Window
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
if (SelectedNode == null)
return;
_connectionInitiator.OpenConnection(SelectedNode);
}
else if (e.Control && e.KeyCode == Keys.F)

View File

@@ -610,7 +610,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

@@ -174,6 +174,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" />
@@ -253,12 +254,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" />
@@ -1170,6 +1179,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" />