diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT
index c15c16a6..7c7b1ecd 100644
--- a/CHANGELOG.TXT
+++ b/CHANGELOG.TXT
@@ -3,6 +3,22 @@
Features/Enhancements:
----------------------
Added more logging/notifications options
+#429: Added Czech translation
+
+
+
+
+1.75 hotfix 1 (2017-03-06):
+
+General Changes:
+----------------
+#437: Modify version numbering scheme
+
+Fixes:
+------
+#422: Uncaught exception when clicking in connection tree whitespace
+#312: Resolved KeePass auto-type issue
+#427: Export does not respect filtering user/password/domain
diff --git a/CREDITS.TXT b/CREDITS.TXT
index 2b5922af..7ea45417 100644
--- a/CREDITS.TXT
+++ b/CREDITS.TXT
@@ -44,6 +44,7 @@ Robert Siwiec
Hayato Iriumi
Sebastien Thieury (github.com/SebThieu)
Riza Emet
+Lukas Plachy
Included Source Code
@@ -118,3 +119,8 @@ VncSharp 1.1
Copyright 2004-2009 David Humphrey
GNU General Public License (GPL) Version 2
https://github.com/humphd/VncSharp
+
+ObjectListView 2.9
+Copyright 2006-2015 Phillip Piper
+GNU General Public License (GPL) Version 3
+https://sourceforge.net/projects/objectlistview/
\ No newline at end of file
diff --git a/InstallerProjects/Installer/Installer.wixproj b/InstallerProjects/Installer/Installer.wixproj
index f5f28af7..33ffb222 100644
--- a/InstallerProjects/Installer/Installer.wixproj
+++ b/InstallerProjects/Installer/Installer.wixproj
@@ -114,22 +114,6 @@
HarvestPath=$(SolutionDir)mRemoteV1\bin\Release Portable;HelpFilesHarvestPath=$(SolutionDir)mRemoteV1\Resources\Help
-
- set /p buildenv=<buildenv.tmp
-
-REM Sign MSI
-IF EXIST C:\mRemoteNG_code_signing_cert.pfx (
- IF %25buildenv: Portable=%25==Release (
- powershell "&""$(SolutionDir)Tools\signfiles.ps1""" %27%25cd%25%27
- )
-)
-
-REM Rename MSI to include version number
-powershell -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\rename_installer_with_version.ps1" $(SolutionDir)
-
-REM Copy MSI to Release folder
-IF %25buildenv: Portable=%25==Release (powershell -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\copy_release_installer.ps1" $(TargetDir) $(SolutionDir)Release)
-
REM Clean the TargetDir
rmdir /S /Q "$(TargetDir)"
@@ -142,4 +126,20 @@ call "$(WIX)bin\heat.exe" dir "$(SolutionDir)mRemoteV1\bin\$(Configuration)" -ag
REM Convert the license file "COPYING.TXT" to "License.rtf" to be shown in the installer GUI
call "$(ProjectDir)Resources\Pandoc\pandoc.exe" -s -t rtf -o "$(ProjectDir)\Resources\License.rtf" "$(SolutionDir)COPYING.TXT"
+
+ set /p buildenv=<buildenv.tmp
+
+REM Sign MSI
+IF EXIST C:\mRemoteNG_code_signing_cert.pfx (
+ IF %25buildenv: Portable=%25==Release (
+ powershell -File "$(SolutionDir)Tools\signfiles.ps1" -PathToSignableFiles %25cd%25
+ )
+)
+
+REM Rename MSI to include version number
+powershell -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\rename_installer_with_version.ps1" $(SolutionDir)
+
+REM Copy MSI to Release folder
+IF %25buildenv: Portable=%25==Release (powershell -ExecutionPolicy Bypass -File "$(SolutionDir)Tools\copy_release_installer.ps1" $(TargetDir) $(SolutionDir)Release)
+
\ No newline at end of file
diff --git a/README.MD b/README.MD
index 539b9861..36b95dd6 100644
--- a/README.MD
+++ b/README.MD
@@ -10,8 +10,8 @@
| Update Channel | Build Status | Downloads |
| ---------------|--------------|-----------|
-| Stable | [](https://jenkins.mremoteng.org/job/mRemoteNG/job/mRemoteNG/job/master/) | [](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.74) |
-| Beta | [](https://jenkins.mremoteng.org/job/mRemoteNG/job/mRemoteNG/job/beta_channel/) | [](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.75Beta3) |
+| Stable | [](https://jenkins.mremoteng.org/job/mRemoteNG/job/mRemoteNG/job/master/) | [](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.75Hotfix1) |
+| Beta | [](https://jenkins.mremoteng.org/job/mRemoteNG/job/mRemoteNG/job/beta_channel/) | [](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.75Hotfix1) |
| Development | [](https://jenkins.mremoteng.org/job/mRemoteNG/job/mRemoteNG/job/develop/) | - |
diff --git a/Tools/signfiles.ps1 b/Tools/signfiles.ps1
index 49c60c72..5b59cd1e 100644
--- a/Tools/signfiles.ps1
+++ b/Tools/signfiles.ps1
@@ -1,13 +1,31 @@
-$timeserver = "http://timestamp.verisign.com/scripts/timstamp.dll"
-$certPath = "C:\mRemoteNG_code_signing_cert.pfx"
-$certPassword = (Get-Credential -Message "Enter the password for the certificate" -UserName "USERNAME NOT NEEDED").Password
-$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certPath, $certPassword)
-$targetPath = $args[0]
+param(
+ [string]
+ [Parameter(Mandatory=$true)]
+ # Folder path that contains the files you would like to sign. Recursive.
+ $PathToSignableFiles,
+
+ [string]
+ # The code signing certificate to use when signing the files.
+ $CertificatePath = "C:\mRemoteNG_code_signing_cert.pfx",
+
+ [SecureString]
+ # Password to unlock the code signing certificate.
+ $CertificatePassword = (Get-Credential -Message "Enter password for the mRemoteNG code signing certificate" -UserName "USERNAME NOT NEEDED").Password,
+
+ [string[]]
+ # File names to exclude from signing
+ $Exclude
+)
-Write-Output "Getting files from path: $targetPath"
-$signableFiles = Get-ChildItem -Path $targetPath -Recurse | ?{$_.Extension -match "dll|exe|msi"}
+$timeserver = "http://timestamp.verisign.com/scripts/timstamp.dll"
+$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertificatePath, $CertificatePassword)
+
+
+Write-Output "Getting files from path: $PathToSignableFiles"
+$signableFiles = Get-ChildItem -Path $PathToSignableFiles -Recurse | ?{$_.Extension -match "dll|exe|msi"} | ?{$Exclude -notcontains $_.Name}
Write-Output "Signable files count: $($signableFiles.Count)"
+
foreach ($file in $signableFiles) {
Set-AuthenticodeSignature -Certificate $cert -TimestampServer $timeserver -IncludeChain all -FilePath $file.FullName
}
\ No newline at end of file
diff --git a/mRemoteNGTests/Config/CredentialHarvesterTests.cs b/mRemoteNGTests/Config/CredentialHarvesterTests.cs
index 8f11fb74..97d54e47 100644
--- a/mRemoteNGTests/Config/CredentialHarvesterTests.cs
+++ b/mRemoteNGTests/Config/CredentialHarvesterTests.cs
@@ -120,7 +120,7 @@ namespace mRemoteNGTests.Config
{
var rootNode = new RootNodeInfo(RootNodeType.Connection) {PasswordString = _key.ConvertToUnsecureString()};
rootNode.AddChild(connectionInfo);
- var nodeSerializer = new XmlConnectionNodeSerializer26(_cryptographyProvider, _key);
+ var nodeSerializer = new XmlConnectionNodeSerializer26(_cryptographyProvider, _key, new SaveFilter());
var serializer = new XmlConnectionsSerializer(_cryptographyProvider, nodeSerializer);
var serializedData = serializer.Serialize(rootNode);
return XDocument.Parse(serializedData);
diff --git a/mRemoteNGTests/Config/Serializers/CsvConnectionsSerializerMremotengFormatTests.cs b/mRemoteNGTests/Config/Serializers/CsvConnectionsSerializerMremotengFormatTests.cs
new file mode 100644
index 00000000..1bdd88d2
--- /dev/null
+++ b/mRemoteNGTests/Config/Serializers/CsvConnectionsSerializerMremotengFormatTests.cs
@@ -0,0 +1,87 @@
+using System;
+using mRemoteNG.Config.Serializers;
+using mRemoteNG.Connection;
+using mRemoteNG.Credential;
+using mRemoteNG.Security;
+using mRemoteNG.Tree;
+using NSubstitute;
+using NUnit.Framework;
+
+namespace mRemoteNGTests.Config.Serializers
+{
+ public class CsvConnectionsSerializerMremotengFormatTests
+ {
+ private const string ConnectionName = "myconnection";
+ private const string Username = "myuser";
+ private const string Domain = "mydomain";
+ private const string Password = "mypass123";
+
+ [TestCase(Username)]
+ [TestCase(Domain)]
+ [TestCase(Password)]
+ [TestCase("InheritColors")]
+ public void CreatesCsv(string valueThatShouldExist)
+ {
+ var serializer = new CsvConnectionsSerializerMremotengFormat(new SaveFilter());
+ var connectionInfo = BuildConnectionInfo();
+ var csv = serializer.Serialize(connectionInfo);
+ Assert.That(csv, Does.Match(valueThatShouldExist));
+ }
+
+ [TestCase(Username)]
+ [TestCase(Domain)]
+ [TestCase(Password)]
+ [TestCase("InheritColors")]
+ public void SerializerRespectsSaveFilterSettings(string valueThatShouldntExist)
+ {
+ var saveFilter = new SaveFilter(true);
+ var serializer = new CsvConnectionsSerializerMremotengFormat(saveFilter);
+ var connectionInfo = BuildConnectionInfo();
+ var csv = serializer.Serialize(connectionInfo);
+ Assert.That(csv, Does.Not.Match(valueThatShouldntExist));
+ }
+
+ [Test]
+ public void CanSerializeEmptyConnectionInfo()
+ {
+ var serializer = new CsvConnectionsSerializerMremotengFormat(new SaveFilter());
+ var connectionInfo = new ConnectionInfo();
+ var csv = serializer.Serialize(connectionInfo);
+ Assert.That(csv, Is.Not.Empty);
+ }
+
+ [Test]
+ public void CantPassNullToConstructor()
+ {
+ Assert.Throws(() => new CsvConnectionsSerializerMremotengFormat(null));
+ }
+
+ [Test]
+ public void CantPassNullToSerializeConnectionInfo()
+ {
+ var serializer = new CsvConnectionsSerializerMremotengFormat(new SaveFilter());
+ Assert.Throws(() => serializer.Serialize((ConnectionInfo)null));
+ }
+
+ [Test]
+ public void CantPassNullToSerializeConnectionTreeModel()
+ {
+ var serializer = new CsvConnectionsSerializerMremotengFormat(new SaveFilter());
+ Assert.Throws(() => serializer.Serialize((ConnectionTreeModel)null));
+ }
+
+ private ConnectionInfo BuildConnectionInfo()
+ {
+ var credRecord = Substitute.For();
+ credRecord.Username.Returns(Username);
+ credRecord.Domain.Returns(Domain);
+ credRecord.Password.Returns(Password.ConvertToSecureString());
+ return new ConnectionInfo
+ {
+ Name = ConnectionName,
+ CredentialRecord = credRecord,
+ Inheritance = {Colors = true}
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/mRemoteNGTests/Config/Serializers/XmlConnectionNodeSerializer27Tests.cs b/mRemoteNGTests/Config/Serializers/XmlConnectionNodeSerializer27Tests.cs
index 332816f3..2bd6f3a2 100644
--- a/mRemoteNGTests/Config/Serializers/XmlConnectionNodeSerializer27Tests.cs
+++ b/mRemoteNGTests/Config/Serializers/XmlConnectionNodeSerializer27Tests.cs
@@ -3,7 +3,9 @@ using System.Xml.Linq;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Connection;
using mRemoteNG.Container;
+using mRemoteNG.Credential;
using mRemoteNG.Security;
+using NSubstitute;
using NUnit.Framework;
@@ -12,13 +14,14 @@ namespace mRemoteNGTests.Config.Serializers
public class XmlConnectionNodeSerializer27Tests
{
private XmlConnectionNodeSerializer27 _connectionNodeSerializer;
+ private ICryptographyProvider _cryptographyProvider;
[SetUp]
public void Setup()
{
- var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(
+ _cryptographyProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(
BlockCipherEngines.AES, BlockCipherModes.GCM);
- _connectionNodeSerializer = new XmlConnectionNodeSerializer27(cryptoProvider, "myPassword1".ConvertToSecureString());
+ _connectionNodeSerializer = new XmlConnectionNodeSerializer27(_cryptographyProvider, "myPassword1".ConvertToSecureString(), new SaveFilter());
}
[Test]
@@ -75,6 +78,7 @@ namespace mRemoteNGTests.Config.Serializers
Username = "myuser",
Domain = "superdomain",
Password = "pass",
+ CredentialRecord = Substitute.For(),
Hostname = "somehost",
ExtApp = "myextapp",
PreExtApp = "preext1",
@@ -107,6 +111,7 @@ namespace mRemoteNGTests.Config.Serializers
yield return new TestCaseData("RDGatewayPassword", ConnectionInfo);
yield return new TestCaseData("VNCProxyUsername", ConnectionInfo);
yield return new TestCaseData("VNCProxyPassword", ConnectionInfo);
+ yield return new TestCaseData("CredentialId", ConnectionInfo);
}
}
diff --git a/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentCompilerTests.cs b/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentCompilerTests.cs
index b863deea..4e5aaec4 100644
--- a/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentCompilerTests.cs
+++ b/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentCompilerTests.cs
@@ -30,7 +30,10 @@ namespace mRemoteNGTests.Config.Serializers
{
_connectionTreeModel = SetupConnectionTreeModel();
_cryptographyProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM);
- var connectionNodeSerializer = new XmlConnectionNodeSerializer27(_cryptographyProvider, _connectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString());
+ var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
+ _cryptographyProvider,
+ _connectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString(),
+ new SaveFilter());
_documentCompiler = new XmlConnectionsDocumentCompiler(_cryptographyProvider, connectionNodeSerializer);
}
diff --git a/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentEncryptorTests.cs b/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentEncryptorTests.cs
index 5f485bed..2fc3d9a8 100644
--- a/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentEncryptorTests.cs
+++ b/mRemoteNGTests/Config/Serializers/XmlConnectionsDocumentEncryptorTests.cs
@@ -21,7 +21,10 @@ namespace mRemoteNGTests.Config.Serializers
{
var connectionTreeModel = SetupConnectionTreeModel();
var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM);
- var connectionNodeSerializer = new XmlConnectionNodeSerializer27(cryptoProvider, connectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString());
+ var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
+ cryptoProvider,
+ connectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString(),
+ new SaveFilter());
_originalDocument = new XmlConnectionsDocumentCompiler(cryptoProvider, connectionNodeSerializer).CompileDocument(connectionTreeModel, false);
_documentEncryptor = new XmlConnectionsDocumentEncryptor(cryptoProvider);
}
diff --git a/mRemoteNGTests/Config/Serializers/XmlConnectionsSerializerTests.cs b/mRemoteNGTests/Config/Serializers/XmlConnectionsSerializerTests.cs
index 94f6e733..86a5ea48 100644
--- a/mRemoteNGTests/Config/Serializers/XmlConnectionsSerializerTests.cs
+++ b/mRemoteNGTests/Config/Serializers/XmlConnectionsSerializerTests.cs
@@ -1,5 +1,6 @@
using System.Linq;
using System.Xml;
+using System.Xml.Linq;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Connection;
using mRemoteNG.Container;
@@ -16,15 +17,19 @@ namespace mRemoteNGTests.Config.Serializers
{
private XmlConnectionsSerializer _serializer;
private ConnectionTreeModel _connectionTreeModel;
+ private ICryptographyProvider _cryptographyProvider;
[SetUp]
public void Setup()
{
_connectionTreeModel = SetupConnectionTreeModel();
- var encryptor = new AeadCryptographyProvider();
- var connectionNodeSerializer = new XmlConnectionNodeSerializer27(encryptor, _connectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString());
- _serializer = new XmlConnectionsSerializer(encryptor, connectionNodeSerializer);
+ _cryptographyProvider = new AeadCryptographyProvider();
+ var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
+ _cryptographyProvider,
+ _connectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString(),
+ new SaveFilter());
+ _serializer = new XmlConnectionsSerializer(_cryptographyProvider, connectionNodeSerializer);
}
[Test]
@@ -48,6 +53,26 @@ namespace mRemoteNGTests.Config.Serializers
Assert.That(connectionNode, Is.Not.Null);
}
+ [TestCase("CredentialId", "")]
+ [TestCase("InheritAutomaticResize", "False")]
+ public void SerializerRespectsSaveFilterSettings(string attributeName, string expectedValue)
+ {
+ var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
+ _cryptographyProvider,
+ _connectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString(),
+ new SaveFilter(true));
+ var serializer = new XmlConnectionsSerializer(_cryptographyProvider, connectionNodeSerializer);
+ var connectionInfo = new ConnectionInfo
+ {
+ Name = "myConnection",
+ Inheritance = {AutomaticResize = true}
+ };
+ var serializedConnections = serializer.Serialize(connectionInfo);
+ var xdoc = XDocument.Parse(serializedConnections);
+ var attributeValue = xdoc.Root?.Element("Node")?.Attribute(attributeName)?.Value;
+ Assert.That(attributeValue, Is.EqualTo(expectedValue));
+ }
+
private ConnectionTreeModel SetupConnectionTreeModel()
{
/*
diff --git a/mRemoteNGTests/IntegrationTests/XmlSerializationLifeCycleTests.cs b/mRemoteNGTests/IntegrationTests/XmlSerializationLifeCycleTests.cs
index 645f6710..5ff13fe0 100644
--- a/mRemoteNGTests/IntegrationTests/XmlSerializationLifeCycleTests.cs
+++ b/mRemoteNGTests/IntegrationTests/XmlSerializationLifeCycleTests.cs
@@ -22,7 +22,10 @@ namespace mRemoteNGTests.IntegrationTests
{
_originalModel = SetupConnectionTreeModel();
var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM);
- var nodeSerializer = new XmlConnectionNodeSerializer27(cryptoProvider, _originalModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString());
+ var nodeSerializer = new XmlConnectionNodeSerializer27(
+ cryptoProvider,
+ _originalModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString(),
+ new SaveFilter());
_serializer = new XmlConnectionsSerializer(cryptoProvider, nodeSerializer);
}
@@ -73,7 +76,10 @@ namespace mRemoteNGTests.IntegrationTests
{
var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM);
cryptoProvider.KeyDerivationIterations = 5000;
- var nodeSerializer = new XmlConnectionNodeSerializer27(cryptoProvider, _originalModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString());
+ var nodeSerializer = new XmlConnectionNodeSerializer27(
+ cryptoProvider,
+ _originalModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString(),
+ new SaveFilter());
_serializer = new XmlConnectionsSerializer(cryptoProvider, nodeSerializer);
var serializedContent = _serializer.Serialize(_originalModel);
_deserializer = new XmlConnectionsDeserializer(serializedContent, new ICredentialRecord[0]);
diff --git a/mRemoteNGTests/UI/Controls/SecureTextBoxTests.cs b/mRemoteNGTests/UI/Controls/SecureTextBoxTests.cs
index 4ae5a32d..b3d5da7d 100644
--- a/mRemoteNGTests/UI/Controls/SecureTextBoxTests.cs
+++ b/mRemoteNGTests/UI/Controls/SecureTextBoxTests.cs
@@ -29,7 +29,7 @@ namespace mRemoteNGTests.UI.Controls
var textBox = new SecureTextBoxTester(_testForm.secureTextBox1.Name);
const string textToSend = "abc123";
textBox.Properties.Text = textToSend;
- Assert.That(textBox.Properties.SecureString.ConvertToUnsecureString(), Is.EqualTo(textToSend));
+ Assert.That(textBox.Properties.SecString.ConvertToUnsecureString(), Is.EqualTo(textToSend));
}
}
}
\ No newline at end of file
diff --git a/mRemoteNGTests/UI/WindowListTests.cs b/mRemoteNGTests/UI/WindowListTests.cs
index 4554966d..398e7f27 100644
--- a/mRemoteNGTests/UI/WindowListTests.cs
+++ b/mRemoteNGTests/UI/WindowListTests.cs
@@ -1,4 +1,5 @@
using System;
+using mRemoteNG.UI;
using NUnit.Framework;
using mRemoteNG.UI.Window;
diff --git a/mRemoteNGTests/mRemoteNGTests.csproj b/mRemoteNGTests/mRemoteNGTests.csproj
index fcea36a8..69533b39 100644
--- a/mRemoteNGTests/mRemoteNGTests.csproj
+++ b/mRemoteNGTests/mRemoteNGTests.csproj
@@ -62,12 +62,12 @@
False
..\mRemoteV1\References\log4net.dll
-
- ..\packages\NSubstitute.1.10.0.0\lib\net45\NSubstitute.dll
+
+ ..\packages\NSubstitute.2.0.2\lib\net45\NSubstitute.dll
True
-
- ..\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll
+
+ ..\packages\NUnit.3.6.1\lib\net45\nunit.framework.dll
True
@@ -113,6 +113,7 @@
+
diff --git a/mRemoteNGTests/packages.config b/mRemoteNGTests/packages.config
index dae9c3c8..49336542 100644
--- a/mRemoteNGTests/packages.config
+++ b/mRemoteNGTests/packages.config
@@ -1,9 +1,10 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1.sln b/mRemoteV1.sln
index 5ebe3242..7b2713ae 100644
--- a/mRemoteV1.sln
+++ b/mRemoteV1.sln
@@ -1,8 +1,8 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25123.0
-MinimumVisualStudioVersion = 10.0.40219.1
+# Visual Studio 15
+VisualStudioVersion = 15.0.26228.4
+MinimumVisualStudioVersion = 14.0.25420.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteV1", "mRemoteV1\mRemoteV1.csproj", "{4934A491-40BC-4E5B-9166-EA1169A220F6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteNGTests", "mRemoteNGTests\mRemoteNGTests.csproj", "{1453B37F-8621-499E-B0B2-6091F76DC0BB}"
diff --git a/mRemoteV1/App/Export.cs b/mRemoteV1/App/Export.cs
index 10e2df27..f7392265 100644
--- a/mRemoteV1/App/Export.cs
+++ b/mRemoteV1/App/Export.cs
@@ -20,7 +20,7 @@ namespace mRemoteNG.App
{
try
{
- var saveSecurity = new SaveFilter();
+ var saveFilter = new SaveFilter();
using (var exportForm = new ExportForm())
{
@@ -50,18 +50,19 @@ namespace mRemoteNG.App
break;
}
- saveSecurity.SaveUsername = exportForm.IncludeUsername;
- saveSecurity.SavePassword = exportForm.IncludePassword;
- saveSecurity.SaveDomain = exportForm.IncludeDomain;
- saveSecurity.SaveInheritance = exportForm.IncludeInheritance;
+ saveFilter.SaveUsername = exportForm.IncludeUsername;
+ saveFilter.SavePassword = exportForm.IncludePassword;
+ saveFilter.SaveDomain = exportForm.IncludeDomain;
+ saveFilter.SaveInheritance = exportForm.IncludeInheritance;
+ saveFilter.SaveCredentialId = exportForm.IncludeAssignedCredential;
- SaveExportFile(exportForm.FileName, exportForm.SaveFormat, saveSecurity, exportTarget);
+ SaveExportFile(exportForm.FileName, exportForm.SaveFormat, saveFilter, exportTarget);
}
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("App.Export.ExportToFile() failed.", ex, logOnly: true);
+ Runtime.MessageCollector.AddExceptionMessage("App.Export.ExportToFile() failed.", ex);
}
}
@@ -77,17 +78,14 @@ namespace mRemoteNG.App
var cryptographyProvider = factory.CreateAeadCryptographyProvider(Settings.Default.EncryptionEngine, Settings.Default.EncryptionBlockCipherMode);
cryptographyProvider.KeyDerivationIterations = Settings.Default.EncryptionKeyDerivationIterations;
var rootNode = exportTarget.GetRootParent() as RootNodeInfo;
- var connectionNodeSerializer = new XmlConnectionNodeSerializer27(cryptographyProvider, rootNode?.PasswordString.ConvertToSecureString() ?? new RootNodeInfo(RootNodeType.Connection).PasswordString.ConvertToSecureString());
- serializer = new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer)
- {
- SaveFilter = saveFilter
- };
+ var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
+ cryptographyProvider,
+ rootNode?.PasswordString.ConvertToSecureString() ?? new RootNodeInfo(RootNodeType.Connection).PasswordString.ConvertToSecureString(),
+ saveFilter);
+ serializer = new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer);
break;
case ConnectionsSaver.Format.mRCSV:
- serializer = new CsvConnectionsSerializerMremotengFormat
- {
- SaveFilter = saveFilter
- };
+ serializer = new CsvConnectionsSerializerMremotengFormat(saveFilter);
break;
default:
throw new ArgumentOutOfRangeException(nameof(saveFormat), saveFormat, null);
diff --git a/mRemoteV1/App/Import.cs b/mRemoteV1/App/Import.cs
index c565bc14..41b259e5 100644
--- a/mRemoteV1/App/Import.cs
+++ b/mRemoteV1/App/Import.cs
@@ -75,7 +75,7 @@ namespace mRemoteNG.App
{
MessageBox.Show(string.Format(Language.strImportFileFailedContent, fileName), Language.strImportFileFailedMainInstruction,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
- Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromFile() failed:1", ex, logOnly: true);
+ Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromFile() failed:1", ex);
}
}
@@ -84,7 +84,7 @@ namespace mRemoteNG.App
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromFile() failed:2", ex, logOnly: true);
+ Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromFile() failed:2", ex);
}
}
@@ -97,7 +97,7 @@ namespace mRemoteNG.App
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromActiveDirectory() failed.", ex, logOnly: true);
+ Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromActiveDirectory() failed.", ex);
}
}
@@ -111,8 +111,7 @@ namespace mRemoteNG.App
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromPortScan() failed.", ex,
- logOnly: true);
+ Runtime.MessageCollector.AddExceptionMessage("App.Import.ImportFromPortScan() failed.", ex);
}
}
#endregion
diff --git a/mRemoteV1/App/Logger.cs b/mRemoteV1/App/Logger.cs
index 697c5f59..3413ddd5 100644
--- a/mRemoteV1/App/Logger.cs
+++ b/mRemoteV1/App/Logger.cs
@@ -54,6 +54,7 @@ namespace mRemoteNG.App
var logFilePath = Application.StartupPath;
#endif
var logFileName = Path.ChangeExtension(Application.ProductName, ".log");
+ if (logFileName == null) return "mRemoteNG.log";
var logFile = Path.Combine(logFilePath, logFileName);
return logFile;
}
diff --git a/mRemoteV1/App/NativeMethods.cs b/mRemoteV1/App/NativeMethods.cs
index f5425fa8..264cde74 100644
--- a/mRemoteV1/App/NativeMethods.cs
+++ b/mRemoteV1/App/NativeMethods.cs
@@ -47,10 +47,10 @@ namespace mRemoteNG.App
internal static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
- public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, string lParam);
+ internal static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, string lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
- public static extern IntPtr SendMessage([In] IntPtr hWnd, [In] uint msg, [Out] StringBuilder wParam, [In] IntPtr lParam);
+ internal static extern IntPtr SendMessage([In] IntPtr hWnd, [In] uint msg, [Out] StringBuilder wParam, [In] IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
diff --git a/mRemoteV1/App/Runtime.cs b/mRemoteV1/App/Runtime.cs
index 7a2e4f96..6f941e90 100644
--- a/mRemoteV1/App/Runtime.cs
+++ b/mRemoteV1/App/Runtime.cs
@@ -22,6 +22,7 @@ using mRemoteNG.Credential;
using mRemoteNG.Messages.MessageWriters;
using mRemoteNG.Security;
using mRemoteNG.Security.SymmetricEncryption;
+using mRemoteNG.UI;
using mRemoteNG.UI.Forms;
using mRemoteNG.UI.Forms.Input;
using mRemoteNG.UI.TaskDialog;
diff --git a/mRemoteV1/App/Update/AppUpdater.cs b/mRemoteV1/App/Update/AppUpdater.cs
index 94462bce..38515ad8 100644
--- a/mRemoteV1/App/Update/AppUpdater.cs
+++ b/mRemoteV1/App/Update/AppUpdater.cs
@@ -272,7 +272,7 @@ namespace mRemoteNG.App.Update
throw updateAuthenticode.Exception;
}
- throw new Exception(updateAuthenticode.StatusMessage);
+ throw new Exception(updateAuthenticode.GetStatusMessage());
}
#endif
diff --git a/mRemoteV1/App/Windows.cs b/mRemoteV1/App/Windows.cs
index 0fdc9c75..1a9804ee 100644
--- a/mRemoteV1/App/Windows.cs
+++ b/mRemoteV1/App/Windows.cs
@@ -16,77 +16,87 @@ namespace mRemoteNG.App
private static UltraVNCWindow _ultravncscForm;
private static ComponentsCheckWindow _componentscheckForm;
- public static ConnectionTreeWindow TreeForm { get; set; } = new ConnectionTreeWindow();
- public static ConfigWindow ConfigForm { get; set; } = new ConfigWindow();
- public static ErrorAndInfoWindow ErrorsForm { get; set; } = new ErrorAndInfoWindow();
- public static ScreenshotManagerWindow ScreenshotForm { get; set; } = new ScreenshotManagerWindow();
- public static UpdateWindow UpdateForm { get; set; } = new UpdateWindow();
- public static SSHTransferWindow SshtransferForm { get; set; }
-
-
+ internal static ConnectionTreeWindow TreeForm { get; set; } = new ConnectionTreeWindow();
+ internal static ConfigWindow ConfigForm { get; set; } = new ConfigWindow();
+ internal static ErrorAndInfoWindow ErrorsForm { get; set; } = new ErrorAndInfoWindow();
+ internal static ScreenshotManagerWindow ScreenshotForm { get; set; } = new ScreenshotManagerWindow();
+ private static UpdateWindow UpdateForm { get; set; } = new UpdateWindow();
+ internal static SSHTransferWindow SshtransferForm { get; private set; } = new SSHTransferWindow();
+
+
+
public static void Show(WindowType windowType)
{
try
{
- if (windowType.Equals(WindowType.About))
+ // ReSharper disable once SwitchStatementMissingSomeCases
+ switch (windowType)
{
- if (_aboutForm == null || _aboutForm.IsDisposed)
- _aboutForm = new AboutWindow();
- _aboutForm.Show(FrmMain.Default.pnlDock);
- }
- else if (windowType.Equals(WindowType.ActiveDirectoryImport))
- {
- if (_adimportForm == null || _adimportForm.IsDisposed)
- _adimportForm = new ActiveDirectoryImportWindow();
- _adimportForm.Show(FrmMain.Default.pnlDock);
- }
- else if (windowType.Equals(WindowType.Options))
- {
- using (var optionsForm = new frmOptions())
- {
- optionsForm.ShowDialog(FrmMain.Default.pnlDock);
- }
- }
- else if (windowType.Equals(WindowType.SSHTransfer))
- {
- SshtransferForm = new SSHTransferWindow();
- SshtransferForm.Show(FrmMain.Default.pnlDock);
- }
- else if (windowType.Equals(WindowType.Update))
- {
- if (UpdateForm == null || UpdateForm.IsDisposed)
- UpdateForm = new UpdateWindow();
- UpdateForm.Show(FrmMain.Default.pnlDock);
- }
- else if (windowType.Equals(WindowType.Help))
- {
- if (_helpForm == null || _helpForm.IsDisposed)
- _helpForm = new HelpWindow();
- _helpForm.Show(FrmMain.Default.pnlDock);
- }
- else if (windowType.Equals(WindowType.ExternalApps))
- {
- if (_externalappsForm == null || _externalappsForm.IsDisposed)
- _externalappsForm = new ExternalToolsWindow();
- _externalappsForm.Show(FrmMain.Default.pnlDock);
- }
- else if (windowType.Equals(WindowType.PortScan))
- {
- _portscanForm = new PortScanWindow();
- _portscanForm.Show(FrmMain.Default.pnlDock);
- }
- else if (windowType.Equals(WindowType.UltraVNCSC))
- {
- if (_ultravncscForm == null || _ultravncscForm.IsDisposed)
- _ultravncscForm = new UltraVNCWindow();
- _ultravncscForm.Show(FrmMain.Default.pnlDock);
- }
- else if (windowType.Equals(WindowType.ComponentsCheck))
- {
- Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Showing ComponentsCheck window", true);
- if (_componentscheckForm == null || _componentscheckForm.IsDisposed)
- _componentscheckForm = new ComponentsCheckWindow();
- _componentscheckForm.Show(FrmMain.Default.pnlDock);
+ case WindowType.About:
+ if (_aboutForm == null || _aboutForm.IsDisposed)
+ _aboutForm = new AboutWindow();
+ _aboutForm.Show(FrmMain.Default.pnlDock);
+ break;
+ case WindowType.ActiveDirectoryImport:
+ if (_adimportForm == null || _adimportForm.IsDisposed)
+ _adimportForm = new ActiveDirectoryImportWindow();
+ _adimportForm.Show(FrmMain.Default.pnlDock);
+ break;
+ case WindowType.Options:
+ using (var optionsForm = new frmOptions())
+ {
+ optionsForm.ShowDialog(FrmMain.Default.pnlDock);
+ }
+ break;
+ case WindowType.SSHTransfer:
+ if (SshtransferForm == null || SshtransferForm.IsDisposed)
+ SshtransferForm = new SSHTransferWindow();
+ SshtransferForm.Show(FrmMain.Default.pnlDock);
+ break;
+ case WindowType.Update:
+ if (UpdateForm == null || UpdateForm.IsDisposed)
+ UpdateForm = new UpdateWindow();
+ UpdateForm.Show(FrmMain.Default.pnlDock);
+ break;
+ case WindowType.Help:
+ if (_helpForm == null || _helpForm.IsDisposed)
+ _helpForm = new HelpWindow();
+ _helpForm.Show(FrmMain.Default.pnlDock);
+ break;
+ case WindowType.ExternalApps:
+ if (_externalappsForm == null || _externalappsForm.IsDisposed)
+ _externalappsForm = new ExternalToolsWindow();
+ _externalappsForm.Show(FrmMain.Default.pnlDock);
+ break;
+ case WindowType.PortScan:
+ _portscanForm = new PortScanWindow();
+ _portscanForm.Show(FrmMain.Default.pnlDock);
+ break;
+ case WindowType.UltraVNCSC:
+ if (_ultravncscForm == null || _ultravncscForm.IsDisposed)
+ _ultravncscForm = new UltraVNCWindow();
+ _ultravncscForm.Show(FrmMain.Default.pnlDock);
+ break;
+ case WindowType.ComponentsCheck:
+ Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Showing ComponentsCheck window", true);
+ if (_componentscheckForm == null || _componentscheckForm.IsDisposed)
+ _componentscheckForm = new ComponentsCheckWindow();
+ _componentscheckForm.Show(FrmMain.Default.pnlDock);
+ break;
+ /*
+ case WindowType.Tree:
+ break;
+ case WindowType.Connection:
+ break;
+ case WindowType.Config:
+ break;
+ case WindowType.ErrorsAndInfos:
+ break;
+ case WindowType.ScreenshotManager:
+ break;
+ default:
+ throw new ArgumentOutOfRangeException(nameof(windowType), windowType, null);
+ */
}
}
catch (Exception ex)
diff --git a/mRemoteV1/Config/Connections/ConnectionsSaver.cs b/mRemoteV1/Config/Connections/ConnectionsSaver.cs
index cdcf7e19..4904166a 100644
--- a/mRemoteV1/Config/Connections/ConnectionsSaver.cs
+++ b/mRemoteV1/Config/Connections/ConnectionsSaver.cs
@@ -243,10 +243,12 @@ namespace mRemoteNG.Config.Connections
var factory = new CryptographyProviderFactory();
var cryptographyProvider = factory.CreateAeadCryptographyProvider(mRemoteNG.Settings.Default.EncryptionEngine, mRemoteNG.Settings.Default.EncryptionBlockCipherMode);
cryptographyProvider.KeyDerivationIterations = mRemoteNG.Settings.Default.EncryptionKeyDerivationIterations;
- var connectionNodeSerializer = new XmlConnectionNodeSerializer27(cryptographyProvider, ConnectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString());
+ var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
+ cryptographyProvider,
+ ConnectionTreeModel.RootNodes.OfType().First().PasswordString.ConvertToSecureString(),
+ SaveFilter);
var xmlConnectionsSerializer = new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer)
{
- SaveFilter = SaveFilter,
UseFullEncryption = mRemoteNG.Settings.Default.EncryptCompleteConnectionsFile
};
var xml = xmlConnectionsSerializer.Serialize(ConnectionTreeModel);
@@ -262,7 +264,7 @@ namespace mRemoteNG.Config.Connections
private void SaveToMremotengFormattedCsv()
{
- var csvConnectionsSerializer = new CsvConnectionsSerializerMremotengFormat { SaveFilter = SaveFilter };
+ var csvConnectionsSerializer = new CsvConnectionsSerializerMremotengFormat(SaveFilter);
var dataProvider = new FileDataProvider(ConnectionFileName);
var csvContent = csvConnectionsSerializer.Serialize(ConnectionTreeModel);
dataProvider.Save(csvContent);
diff --git a/mRemoteV1/Config/Import/ActiveDirectoryImporter.cs b/mRemoteV1/Config/Import/ActiveDirectoryImporter.cs
index fb79d1df..ad4cd0fa 100644
--- a/mRemoteV1/Config/Import/ActiveDirectoryImporter.cs
+++ b/mRemoteV1/Config/Import/ActiveDirectoryImporter.cs
@@ -29,7 +29,7 @@ namespace mRemoteNG.Config.Import
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("Config.Import.ActiveDirectory.Import() failed.", ex, logOnly: true);
+ Runtime.MessageCollector.AddExceptionMessage("Config.Import.ActiveDirectory.Import() failed.", ex);
}
}
}
diff --git a/mRemoteV1/Config/Putty/PuttySessionsRegistryProvider.cs b/mRemoteV1/Config/Putty/PuttySessionsRegistryProvider.cs
index a365e916..3d04ef90 100644
--- a/mRemoteV1/Config/Putty/PuttySessionsRegistryProvider.cs
+++ b/mRemoteV1/Config/Putty/PuttySessionsRegistryProvider.cs
@@ -101,7 +101,7 @@ namespace mRemoteNG.Config.Putty
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("PuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg, true);
+ Runtime.MessageCollector.AddExceptionMessage("PuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg);
}
}
diff --git a/mRemoteV1/Config/Putty/PuttySessionsXmingProvider.cs b/mRemoteV1/Config/Putty/PuttySessionsXmingProvider.cs
index b969ef48..87cb5d2f 100644
--- a/mRemoteV1/Config/Putty/PuttySessionsXmingProvider.cs
+++ b/mRemoteV1/Config/Putty/PuttySessionsXmingProvider.cs
@@ -147,7 +147,7 @@ namespace mRemoteNG.Config.Putty
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("XmingPortablePuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg, true);
+ Runtime.MessageCollector.AddExceptionMessage("XmingPortablePuttySessions.Watcher.StartWatching() failed.", ex, MessageClass.WarningMsg);
}
}
@@ -267,7 +267,7 @@ namespace mRemoteNG.Config.Putty
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("PuttyConfFileReader.LoadConfiguration() failed.", ex, MessageClass.ErrorMsg, true);
+ Runtime.MessageCollector.AddExceptionMessage("PuttyConfFileReader.LoadConfiguration() failed.", ex);
}
}
@@ -322,7 +322,7 @@ namespace mRemoteNG.Config.Putty
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("SessionFileReader.LoadSessionInfo() failed.", ex, MessageClass.ErrorMsg, true);
+ Runtime.MessageCollector.AddExceptionMessage("SessionFileReader.LoadSessionInfo() failed.", ex);
}
}
diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionNodeSerializer26.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionNodeSerializer26.cs
index 7fc8972d..2c693800 100644
--- a/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionNodeSerializer26.cs
+++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionNodeSerializer26.cs
@@ -14,16 +14,17 @@ namespace mRemoteNG.Config.Serializers
{
private readonly ICryptographyProvider _cryptographyProvider;
private readonly SecureString _encryptionKey;
- private readonly SaveFilter _saveFilter = new SaveFilter();
-
- public XmlConnectionNodeSerializer26(ICryptographyProvider cryptographyProvider, SecureString encryptionKey)
- {
- _cryptographyProvider = cryptographyProvider;
- _encryptionKey = encryptionKey;
- }
+ private readonly SaveFilter _saveFilter;
public XmlConnectionNodeSerializer26(ICryptographyProvider cryptographyProvider, SecureString encryptionKey, SaveFilter saveFilter)
{
+ if (cryptographyProvider == null)
+ throw new ArgumentNullException(nameof(cryptographyProvider));
+ if (encryptionKey == null)
+ throw new ArgumentNullException(nameof(encryptionKey));
+ if (saveFilter == null)
+ throw new ArgumentNullException(nameof(saveFilter));
+
_cryptographyProvider = cryptographyProvider;
_encryptionKey = encryptionKey;
_saveFilter = saveFilter;
diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionNodeSerializer27.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionNodeSerializer27.cs
index 0d1b850c..142cc96e 100644
--- a/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionNodeSerializer27.cs
+++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionNodeSerializer27.cs
@@ -11,13 +11,8 @@ namespace mRemoteNG.Config.Serializers
{
private readonly ICryptographyProvider _cryptographyProvider;
private readonly SecureString _encryptionKey;
- private readonly SaveFilter _saveFilter = new SaveFilter();
+ private readonly SaveFilter _saveFilter;
- public XmlConnectionNodeSerializer27(ICryptographyProvider cryptographyProvider, SecureString encryptionKey)
- {
- _cryptographyProvider = cryptographyProvider;
- _encryptionKey = encryptionKey;
- }
public XmlConnectionNodeSerializer27(ICryptographyProvider cryptographyProvider, SecureString encryptionKey, SaveFilter saveFilter)
{
@@ -46,7 +41,9 @@ namespace mRemoteNG.Config.Serializers
element.Add(new XAttribute("Panel", connectionInfo.Panel));
element.Add(new XAttribute("Id", connectionInfo.ConstantID));
- element.Add(new XAttribute("CredentialId", connectionInfo.CredentialRecord?.Id.ToString() ?? ""));
+ element.Add(_saveFilter.SaveCredentialId
+ ? new XAttribute("CredentialId", connectionInfo.CredentialRecord?.Id.ToString() ?? "")
+ : new XAttribute("CredentialId", ""));
element.Add(new XAttribute("Hostname", connectionInfo.Hostname));
element.Add(new XAttribute("Protocol", connectionInfo.Protocol));
diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionsDocumentCompiler.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionsDocumentCompiler.cs
index 7a942fa1..d640d49d 100644
--- a/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionsDocumentCompiler.cs
+++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionsDocumentCompiler.cs
@@ -1,4 +1,5 @@
-using System.Linq;
+using System;
+using System.Linq;
using System.Security;
using System.Xml.Linq;
using mRemoteNG.Connection;
@@ -18,6 +19,11 @@ namespace mRemoteNG.Config.Serializers
public XmlConnectionsDocumentCompiler(ICryptographyProvider cryptographyProvider, ISerializer connectionNodeSerializer)
{
+ if (cryptographyProvider == null)
+ throw new ArgumentNullException(nameof(cryptographyProvider));
+ if (connectionNodeSerializer == null)
+ throw new ArgumentNullException(nameof(connectionNodeSerializer));
+
_cryptographyProvider = cryptographyProvider;
_connectionNodeSerializer = connectionNodeSerializer;
}
diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionsSerializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionsSerializer.cs
index 32cc7cf5..80298edc 100644
--- a/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionsSerializer.cs
+++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/XmlConnectionsSerializer.cs
@@ -17,7 +17,6 @@ namespace mRemoteNG.Config.Serializers
private readonly ICryptographyProvider _cryptographyProvider;
private readonly ISerializer _connectionNodeSerializer;
- public SaveFilter SaveFilter { get; set; } = new SaveFilter();
public bool UseFullEncryption { get; set; }
public XmlConnectionsSerializer(ICryptographyProvider cryptographyProvider, ISerializer connectionNodeSerializer)
diff --git a/mRemoteV1/Config/Serializers/MiscSerializers/ActiveDirectoryDeserializer.cs b/mRemoteV1/Config/Serializers/MiscSerializers/ActiveDirectoryDeserializer.cs
index f34b93bd..986eb02b 100644
--- a/mRemoteV1/Config/Serializers/MiscSerializers/ActiveDirectoryDeserializer.cs
+++ b/mRemoteV1/Config/Serializers/MiscSerializers/ActiveDirectoryDeserializer.cs
@@ -77,7 +77,7 @@ namespace mRemoteNG.Config.Serializers
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("Config.Import.ActiveDirectory.ImportComputers() failed.", ex, logOnly: true);
+ Runtime.MessageCollector.AddExceptionMessage("Config.Import.ActiveDirectory.ImportComputers() failed.", ex);
}
}
diff --git a/mRemoteV1/Config/Serializers/MiscSerializers/CsvConnectionsSerializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/MiscSerializers/CsvConnectionsSerializerMremotengFormat.cs
index efd7207b..b9f070dd 100644
--- a/mRemoteV1/Config/Serializers/MiscSerializers/CsvConnectionsSerializerMremotengFormat.cs
+++ b/mRemoteV1/Config/Serializers/MiscSerializers/CsvConnectionsSerializerMremotengFormat.cs
@@ -12,17 +12,30 @@ namespace mRemoteNG.Config.Serializers
{
private string _csv = "";
private ConnectionInfo _serializationTarget;
+ private readonly SaveFilter _saveFilter;
- public SaveFilter SaveFilter { get; set; }
+
+ public CsvConnectionsSerializerMremotengFormat(SaveFilter saveFilter)
+ {
+ if (saveFilter == null)
+ throw new ArgumentNullException(nameof(saveFilter));
+ _saveFilter = saveFilter;
+ }
public string Serialize(ConnectionTreeModel connectionTreeModel)
{
+ if (connectionTreeModel == null)
+ throw new ArgumentNullException(nameof(connectionTreeModel));
+
var rootNode = connectionTreeModel.RootNodes.First(node => node is RootNodeInfo);
return Serialize(rootNode);
}
public string Serialize(ConnectionInfo serializationTarget)
{
+ if (serializationTarget == null)
+ throw new ArgumentNullException(nameof(serializationTarget));
+
_csv = "";
_serializationTarget = serializationTarget;
WriteCsvHeader();
@@ -34,14 +47,14 @@ namespace mRemoteNG.Config.Serializers
{
var csvHeader = string.Empty;
csvHeader += "Name;Folder;Description;Icon;Panel;";
- if (SaveFilter.SaveUsername)
+ if (_saveFilter.SaveUsername)
csvHeader += "Username;";
- if (SaveFilter.SavePassword)
+ if (_saveFilter.SavePassword)
csvHeader += "Password;";
- if (SaveFilter.SaveDomain)
+ if (_saveFilter.SaveDomain)
csvHeader += "Domain;";
csvHeader += "Hostname;Protocol;PuttySession;Port;ConnectToConsole;UseCredSsp;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectSmartCards;RedirectSound;RedirectKeys;PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;RDGatewayUseConnectionCredentials;RDGatewayUsername;RDGatewayPassword;RDGatewayDomain;";
- if (SaveFilter.SaveInheritance)
+ if (_saveFilter.SaveInheritance)
csvHeader += "InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;InheritProtocol;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;InheritUseConsoleSession;InheritUseCredSsp;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;InheritRDPAuthenticationLevel;InheritLoadBalanceInfo;InheritPreExtApp;InheritPostExtApp;InheritMacAddress;InheritUserField;InheritExtApp;InheritVNCCompression;InheritVNCEncoding;InheritVNCAuthMode;InheritVNCProxyType;InheritVNCProxyIP;InheritVNCProxyPort;InheritVNCProxyUsername;InheritVNCProxyPassword;InheritVNCColors;InheritVNCSmartSizeMode;InheritVNCViewOnly;InheritRDGatewayUsageMethod;InheritRDGatewayHostname;InheritRDGatewayUseConnectionCredentials;InheritRDGatewayUsername;InheritRDGatewayPassword;InheritRDGatewayDomain";
_csv += csvHeader;
}
@@ -70,18 +83,64 @@ namespace mRemoteNG.Config.Serializers
csvLine += con.Name + ";" + GetNodePath(con) + ";" + con.Description + ";" + con.Icon + ";" + con.Panel + ";";
- if (SaveFilter.SaveUsername)
- csvLine += con.Username + ";";
+ if (_saveFilter.SaveUsername)
+ csvLine += con.CredentialRecord?.Username + ";";
- if (SaveFilter.SavePassword)
- csvLine += con.Password + ";";
+ if (_saveFilter.SavePassword)
+ csvLine += con.CredentialRecord?.Password.ConvertToUnsecureString() + ";";
- if (SaveFilter.SaveDomain)
- csvLine += con.Domain + ";";
+ if (_saveFilter.SaveDomain)
+ csvLine += con.CredentialRecord?.Domain + ";";
- csvLine += con.Hostname + ";" + con.Protocol + ";" + con.PuttySession + ";" + Convert.ToString(con.Port) + ";" + Convert.ToString(con.UseConsoleSession) + ";" + Convert.ToString(con.UseCredSsp) + ";" + con.RenderingEngine + ";" + con.ICAEncryptionStrength + ";" + con.RDPAuthenticationLevel + ";" + con.LoadBalanceInfo + ";" + con.Colors + ";" + con.Resolution + ";" + Convert.ToString(con.AutomaticResize) + ";" + Convert.ToString(con.DisplayWallpaper) + ";" + Convert.ToString(con.DisplayThemes) + ";" + Convert.ToString(con.EnableFontSmoothing) + ";" + Convert.ToString(con.EnableDesktopComposition) + ";" + Convert.ToString(con.CacheBitmaps) + ";" + Convert.ToString(con.RedirectDiskDrives) + ";" + Convert.ToString(con.RedirectPorts) + ";" + Convert.ToString(con.RedirectPrinters) + ";" + Convert.ToString(con.RedirectSmartCards) + ";" + con.RedirectSound + ";" + Convert.ToString(con.RedirectKeys) + ";" + con.PreExtApp + ";" + con.PostExtApp + ";" + con.MacAddress + ";" + con.UserField + ";" + con.ExtApp + ";" + con.VNCCompression + ";" + con.VNCEncoding + ";" + con.VNCAuthMode + ";" + con.VNCProxyType + ";" + con.VNCProxyIP + ";" + Convert.ToString(con.VNCProxyPort) + ";" + con.VNCProxyUsername + ";" + con.VNCProxyPassword + ";" + con.VNCColors + ";" + con.VNCSmartSizeMode + ";" + Convert.ToString(con.VNCViewOnly) + ";";
+ csvLine += con.Hostname + ";" +
+ con.Protocol + ";" +
+ con.PuttySession + ";" +
+ Convert.ToString(con.Port) + ";" +
+ Convert.ToString(con.UseConsoleSession) + ";" +
+ Convert.ToString(con.UseCredSsp) + ";" +
+ con.RenderingEngine + ";" +
+ con.ICAEncryptionStrength + ";" +
+ con.RDPAuthenticationLevel + ";" +
+ con.LoadBalanceInfo + ";" +
+ con.Colors + ";" +
+ con.Resolution + ";" +
+ Convert.ToString(con.AutomaticResize) + ";" +
+ Convert.ToString(con.DisplayWallpaper) + ";" +
+ Convert.ToString(con.DisplayThemes) + ";" +
+ Convert.ToString(con.EnableFontSmoothing) + ";" +
+ Convert.ToString(con.EnableDesktopComposition) + ";" +
+ Convert.ToString(con.CacheBitmaps) + ";" +
+ Convert.ToString(con.RedirectDiskDrives) + ";" +
+ Convert.ToString(con.RedirectPorts) + ";" +
+ Convert.ToString(con.RedirectPrinters) + ";" +
+ Convert.ToString(con.RedirectSmartCards) + ";" +
+ con.RedirectSound + ";" +
+ Convert.ToString(con.RedirectKeys) + ";" +
+ con.PreExtApp + ";" +
+ con.PostExtApp + ";" +
+ con.MacAddress + ";" +
+ con.UserField + ";" +
+ con.ExtApp + ";" +
+ con.VNCCompression + ";" +
+ con.VNCEncoding + ";" +
+ con.VNCAuthMode + ";" +
+ con.VNCProxyType + ";" +
+ con.VNCProxyIP + ";" +
+ Convert.ToString(con.VNCProxyPort) + ";" +
+ con.VNCProxyUsername + ";" +
+ con.VNCProxyPassword + ";" +
+ con.VNCColors + ";" +
+ con.VNCSmartSizeMode + ";" +
+ Convert.ToString(con.VNCViewOnly) + ";" +
+ con.RDGatewayUsageMethod + ";" +
+ con.RDGatewayHostname + ";" +
+ con.RDGatewayUseConnectionCredentials + ";" +
+ con.RDGatewayUsername + ";" +
+ con.RDGatewayPassword + ";" +
+ con.RDGatewayDomain + ";";
- if (SaveFilter.SaveInheritance)
+
+ if (_saveFilter.SaveInheritance)
{
csvLine += con.Inheritance.CacheBitmaps + ";" +
con.Inheritance.Colors + ";" +
@@ -127,7 +186,13 @@ namespace mRemoteNG.Config.Serializers
con.Inheritance.VNCProxyPassword + ";" +
con.Inheritance.VNCColors + ";" +
con.Inheritance.VNCSmartSizeMode + ";" +
- con.Inheritance.VNCViewOnly;
+ con.Inheritance.VNCViewOnly +
+ con.Inheritance.RDGatewayUsageMethod + ";" +
+ con.Inheritance.RDGatewayHostname + ";" +
+ con.Inheritance.RDGatewayUseConnectionCredentials + ";" +
+ con.Inheritance.RDGatewayUsername + ";" +
+ con.Inheritance.RDGatewayPassword + ";" +
+ con.Inheritance.RDGatewayDomain + ";";
}
_csv += csvLine;
@@ -137,6 +202,7 @@ namespace mRemoteNG.Config.Serializers
{
var nodePath = "";
var container = connectionInfo.Parent;
+ if (container == null) return nodePath;
while (container != _serializationTarget)
{
container = container.Parent;
diff --git a/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTP.cs b/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTP.cs
index 5c87f26e..cbdaca2f 100644
--- a/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTP.cs
+++ b/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTP.cs
@@ -5,15 +5,9 @@ namespace mRemoteNG.Connection.Protocol.Http
public ProtocolHTTP(RenderingEngine RenderingEngine) : base(RenderingEngine)
{
- }
-
- public override void NewExtended()
- {
- base.NewExtended();
-
- httpOrS = "http";
- defaultPort = (int)Defaults.Port;
- }
+ httpOrS = "http";
+ defaultPort = (int)Defaults.Port;
+ }
public enum Defaults
{
diff --git a/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs b/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs
index 78362d5a..75206bac 100644
--- a/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs
+++ b/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs
@@ -5,21 +5,20 @@ using mRemoteNG.Tools;
using mRemoteNG.App;
using TabPage = Crownwood.Magic.Controls.TabPage;
-//using SHDocVw;
-
namespace mRemoteNG.Connection.Protocol.Http
{
public class HTTPBase : ProtocolBase
{
#region Private Properties
private Control wBrowser;
- public string httpOrS;
- public int defaultPort;
+ protected string httpOrS;
+ protected int defaultPort;
private string tabTitle;
#endregion
#region Public Methods
- public HTTPBase(RenderingEngine RenderingEngine)
+
+ protected HTTPBase(RenderingEngine RenderingEngine)
{
try
{
@@ -34,18 +33,12 @@ namespace mRemoteNG.Connection.Protocol.Http
{
Control = new WebBrowser();
}
-
- NewExtended();
}
catch (Exception ex)
{
Runtime.MessageCollector.AddExceptionStackTrace(Language.strHttpConnectionFailed, ex);
}
}
-
- public virtual void NewExtended()
- {
- }
public override bool Initialize()
{
@@ -71,13 +64,16 @@ namespace mRemoteNG.Connection.Protocol.Http
if (GeckoBrowser != null)
{
GeckoBrowser.DocumentTitleChanged += geckoBrowser_DocumentTitleChanged;
- //GeckoBrowser.Tab.LastTabRemoved += wBrowser_LastTabRemoved;
+ GeckoBrowser.NSSError += CertEvent.GeckoBrowser_NSSError;
+ }
+ else
+ {
+ throw new Exception("Failed to initialize Gecko Rendering Engine.");
}
}
else
{
var objWebBrowser = (WebBrowser)wBrowser;
- //SHDocVw.WebBrowserClass objAxWebBrowser = (SHDocVw.WebBrowserClass)objWebBrowser.ActiveXInstance;
objWebBrowser.ScrollBarsEnabled = true;
// http://stackoverflow.com/questions/4655662/how-to-ignore-script-errors-in-webbrowser
@@ -85,8 +81,6 @@ namespace mRemoteNG.Connection.Protocol.Http
objWebBrowser.Navigated += wBrowser_Navigated;
objWebBrowser.DocumentTitleChanged += wBrowser_DocumentTitleChanged;
- //objWebBrowser.NewWindow3 += wBrowser_NewWindow3;
- //objAxWebBrowser.NewWindow3 += wBrowser_NewWindow3;
}
return true;
@@ -178,24 +172,6 @@ namespace mRemoteNG.Connection.Protocol.Http
objWebBrowser.Navigated -= wBrowser_Navigated;
}
-#if false
- private void wBrowser_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)
- {
- if ((dwFlags & (long)NWMF.NWMF_OVERRIDEKEY) > 0)
- {
- Cancel = false;
- }
- else
- {
- Cancel = true;
- }
- }
-
- private void wBrowser_LastTabRemoved(object sender)
- {
- Close();
- }
-#endif
private void wBrowser_DocumentTitleChanged(object sender, EventArgs e)
{
try
@@ -301,27 +277,6 @@ namespace mRemoteNG.Connection.Protocol.Http
Gecko = 2
}
-#if false
- private enum NWMF
- {
- // ReSharper disable InconsistentNaming
- NWMF_UNLOADING = 0x1,
- NWMF_USERINITED = 0x2,
- NWMF_FIRST = 0x4,
- NWMF_OVERRIDEKEY = 0x8,
- NWMF_SHOWHELP = 0x10,
- NWMF_HTMLDIALOG = 0x20,
- NWMF_FROMDIALOGCHILD = 0x40,
- NWMF_USERREQUESTED = 0x80,
- NWMF_USERALLOWED = 0x100,
- NWMF_FORCEWINDOW = 0x10000,
- NWMF_FORCETAB = 0x20000,
- NWMF_SUGGESTWINDOW = 0x40000,
- NWMF_SUGGESTTAB = 0x80000,
- NWMF_INACTIVETAB = 0x100000
- // ReSharper restore InconsistentNaming
- }
-#endif
#endregion
}
}
diff --git a/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPS.CertEvent.cs b/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPS.CertEvent.cs
new file mode 100644
index 00000000..086d8b49
--- /dev/null
+++ b/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPS.CertEvent.cs
@@ -0,0 +1,74 @@
+using Gecko;
+using Gecko.Events;
+using mRemoteNG.App;
+using mRemoteNG.App.Info;
+using mRemoteNG.Messages;
+using mRemoteNG.UI.TaskDialog;
+// ReSharper disable RedundantAssignment
+
+namespace mRemoteNG.Connection.Protocol.Http
+{
+ internal abstract class CertEvent
+ {
+ //Refernce: https://bitbucket.org/geckofx/geckofx-33.0/issues/90/invalid-security-certificate-error-on
+ internal static void GeckoBrowser_NSSError(object sender, GeckoNSSErrorEventArgs e)
+ {
+ /* some messages say "Certificate", some say "certificate"
+ * I'm guessing that this is going to be a localization issue...
+ * Log a message so we can try to find a better solution if problems are reported in the future...
+ */
+ if (!e.Message.ToLower().Contains("certificate"))
+ {
+ Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, $"Unhandled NSSError: {e.Message}");
+ e.Handled = false;
+ return;
+ }
+
+ string[] commandButtons =
+ {
+ Language.strHttpsInsecureAllowOnce, // 0
+ Language.strHttpsInsecureAllowAlways, // 1
+ Language.strHttpsInsecureDontAllow // 2
+ };
+
+ CTaskDialog.ShowTaskDialogBox(null, GeneralAppInfo.ProductName, Language.strHttpsInsecurePromptTitle,
+ string.Format(Language.strHttpsInsecurePrompt, e.Uri.AbsoluteUri), "", "", "", "",
+ string.Join(" | ", commandButtons), ETaskDialogButtons.None, ESysIcons.Question, ESysIcons.Question);
+
+ var allow = false;
+ var temporary = true;
+ // ReSharper disable once SwitchStatementMissingSomeCases
+ switch (CTaskDialog.CommandButtonResult)
+ {
+ case 0:
+ allow = true;
+ temporary = true;
+ break;
+ case 1:
+ allow = true;
+ temporary = false;
+ break;
+ case 2:
+ allow = false;
+ temporary = true; // just to be safe
+ break;
+ }
+
+ if (!allow)
+ {
+ Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, $"User did not allow navigation to {e.Uri.AbsoluteUri} with an insecure certificate: {e.Message}");
+ return;
+ }
+
+ /* "temporary == false" (aka always) might not work:
+ * https://bitbucket.org/geckofx/geckofx-45.0/issues/152/remembervalidityoverride-doesnt-save-in
+ * However, my testing was successful in Gecko 45.0.22
+ */
+ CertOverrideService.GetService().RememberValidityOverride(e.Uri, e.Certificate,
+ CertOverride.Mismatch | CertOverride.Time | CertOverride.Untrusted, temporary);
+
+ e.Handled = true;
+ ((GeckoWebBrowser)sender).Navigate(e.Uri.AbsoluteUri);
+ }
+ }
+}
diff --git a/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPS.cs b/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPS.cs
index a8cff0f1..08f28a92 100644
--- a/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPS.cs
+++ b/mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPS.cs
@@ -5,14 +5,9 @@ namespace mRemoteNG.Connection.Protocol.Http
public ProtocolHTTPS(RenderingEngine RenderingEngine) : base(RenderingEngine)
{
- }
-
- public override void NewExtended()
- {
- base.NewExtended();
- httpOrS = "https";
- defaultPort = (int)Defaults.Port;
- }
+ httpOrS = "https";
+ defaultPort = (int)Defaults.Port;
+ }
public enum Defaults
{
diff --git a/mRemoteV1/Messages/Message.cs b/mRemoteV1/Messages/Message.cs
index 66d1caff..d70a8f34 100644
--- a/mRemoteV1/Messages/Message.cs
+++ b/mRemoteV1/Messages/Message.cs
@@ -12,7 +12,7 @@ namespace mRemoteNG.Messages
public Message()
- : this(MessageClass.InformationMsg, "", false)
+ : this(MessageClass.InformationMsg, "")
{
}
diff --git a/mRemoteV1/Properties/AssemblyInfo.cs b/mRemoteV1/Properties/AssemblyInfo.cs
index f5dfcd13..e149ed4c 100644
--- a/mRemoteV1/Properties/AssemblyInfo.cs
+++ b/mRemoteV1/Properties/AssemblyInfo.cs
@@ -33,6 +33,5 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
//
-[assembly: AssemblyVersion("1.76.*")]
-
+[assembly: AssemblyVersion("1.76.0.*")]
[assembly: NeutralResourcesLanguage("en")]
\ No newline at end of file
diff --git a/mRemoteV1/Properties/Settings.Designer.cs b/mRemoteV1/Properties/Settings.Designer.cs
index c2e8ee05..108bd919 100644
--- a/mRemoteV1/Properties/Settings.Designer.cs
+++ b/mRemoteV1/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace mRemoteNG {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.0.1.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -1811,16 +1811,6 @@ namespace mRemoteNG {
}
}
- [global::System.Configuration.ApplicationScopedSettingAttribute()]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("de,el,en,en-US,es-AR,es,fr,hu,it,ja-JP,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-" +
- "TW")]
- public string SupportedUICultures {
- get {
- return ((string)(this["SupportedUICultures"]));
- }
- }
-
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
@@ -2530,5 +2520,15 @@ namespace mRemoteNG {
this["LogToApplicationDirectory"] = value;
}
}
+
+ [global::System.Configuration.ApplicationScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("cs-CZ,de,el,en,en-US,es-AR,es,fr,hu,it,ja-JP,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-" +
+ "CN,zh-TW")]
+ public string SupportedUICultures {
+ get {
+ return ((string)(this["SupportedUICultures"]));
+ }
+ }
}
}
diff --git a/mRemoteV1/Properties/Settings.settings b/mRemoteV1/Properties/Settings.settings
index 12db6739..b7ee277d 100644
--- a/mRemoteV1/Properties/Settings.settings
+++ b/mRemoteV1/Properties/Settings.settings
@@ -449,9 +449,6 @@
-
- de,el,en,en-US,es-AR,es,fr,hu,it,ja-JP,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-TW
-
@@ -629,5 +626,8 @@
True
+
+ cs-CZ,de,el,en,en-US,es-AR,es,fr,hu,it,ja-JP,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-TW
+
\ No newline at end of file
diff --git a/mRemoteV1/References/log4net.dll b/mRemoteV1/References/log4net.dll
deleted file mode 100644
index 9a653d6c..00000000
Binary files a/mRemoteV1/References/log4net.dll and /dev/null differ
diff --git a/mRemoteV1/Resources/Language/Language.Designer.cs b/mRemoteV1/Resources/Language/Language.Designer.cs
index aef88f01..2b6403ae 100644
--- a/mRemoteV1/Resources/Language/Language.Designer.cs
+++ b/mRemoteV1/Resources/Language/Language.Designer.cs
@@ -258,6 +258,15 @@ namespace mRemoteNG {
}
}
+ ///
+ /// Looks up a localized string similar to Assigned Credential.
+ ///
+ internal static string strAssignedCredential {
+ get {
+ return ResourceManager.GetString("strAssignedCredential", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Automatically get session information.
///
@@ -2190,6 +2199,51 @@ namespace mRemoteNG {
}
}
+ ///
+ /// Looks up a localized string similar to Allow Always.
+ ///
+ internal static string strHttpsInsecureAllowAlways {
+ get {
+ return ResourceManager.GetString("strHttpsInsecureAllowAlways", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Allow Once.
+ ///
+ internal static string strHttpsInsecureAllowOnce {
+ get {
+ return ResourceManager.GetString("strHttpsInsecureAllowOnce", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Don't Allow.
+ ///
+ internal static string strHttpsInsecureDontAllow {
+ get {
+ return ResourceManager.GetString("strHttpsInsecureDontAllow", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Allow Insecure Certificate for URL: {0}?.
+ ///
+ internal static string strHttpsInsecurePrompt {
+ get {
+ return ResourceManager.GetString("strHttpsInsecurePrompt", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Allow Insecure Certificate?.
+ ///
+ internal static string strHttpsInsecurePromptTitle {
+ get {
+ return ResourceManager.GetString("strHttpsInsecurePromptTitle", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to ICA.
///
diff --git a/mRemoteV1/Resources/Language/Language.cs-CZ.resx b/mRemoteV1/Resources/Language/Language.cs-CZ.resx
new file mode 100644
index 00000000..2fa5236a
--- /dev/null
+++ b/mRemoteV1/Resources/Language/Language.cs-CZ.resx
@@ -0,0 +1,2523 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ O Aplikaci
+
+
+ Aktuální
+
+
+ Aktuální složka
+
+
+ Aktivita
+
+
+ Nové připojení
+
+
+ Nová složka
+
+
+ Operace přidání uzlu (AddNodeFromXML) selhala!
+
+
+ Operace přidání uzlu (AddNodesFromSQL) selhala!
+
+
+ Umožnit spuštění jen jedné instance aplikace (bude potřeba restartovat mRemoteNG)
+
+
+ Vždy
+
+
+ Vždy připojit, i když autentizace selže
+
+
+ Při navázání spojení vždy nabídnout výběr panelu
+
+
+ Vždy zobrazovat záložky (taby) panelů
+
+
+ Vždy zobrazit notifikační ikonu
+
+
+ Zeptat se na nastavení později
+
+
+ Upravit nastavení teď
+
+
+ Použít doporučená nastavení
+
+
+ {0} může automaticky hledat aktualizace, které mohou obsahovat nové funkce a opravy chyb. Doporučuje se, abyste dovolili {0} hledat aktualizace každý týden.
+
+
+ Natavení automatických aktualizací
+
+
+ Poměr stran
+
+
+ Automaticky získat informace o sezení
+
+
+ Automaticky ukládat každých:
+
+
+ Minut(y) (0 = vypnuto)
+
+
+ Poslední verze
+
+
+ &Procházet...
+
+
+ &Storno
+
+
+ Změnit
+
+
+ &Zavřít
+
+
+ Výchozí převezetí z nadřízené
+
+
+ Výchozí vlastnosti
+
+
+ Odpojit
+
+
+ Ikona
+
+
+ &Importovat
+
+
+ Z nadřazené
+
+
+ &Spustit
+
+
+ Spustit PuTTY
+
+
+ &Nový
+
+
+ &OK
+
+
+ Vlastnosti
+
+
+ &Scanovat
+
+
+ &Stop
+
+
+ Test Proxy
+
+
+ Hlavní soubor s nastavenými spojeními nelze importovat. You cannot import a normal connection file.
+Prosím použijte Soubor - Otevřít seznam spojení... pro načtení souboru s nastavením spojení!
+
+
+ Nelze scanovat porty, IP adresa má nesprávný tvar!
+
+
+ Vzhled
+
+
+ Spojení
+
+
+ Autentizace
+
+
+ Zobrazení
+
+
+ Brána
+
+
+ Všeobecné
+
+
+ Různé
+
+
+ Protokol
+
+
+ Přesměrování
+
+
+ Vždy zobrazit tento dialog při startu
+
+
+ Obnovit
+
+
+ Kontrola selhala!
+
+
+ Kontrola úspěšná!
+
+
+ Funckionalita pro (RDP) sezení vyžaduje, abyste měli ve Vašem systému zaregistrovánu knihovnu eolwtscom.dll .
+mRemoteNG je sice s touto komponentou dodáváno, avšak pokud jej nenainstalujete s pomocí Instalátoru, není knihovna automaticky zaregistrována.
+Pro provedení registrace ručně spusťe následující příkaz v konzoli příkazového řádku (Start->Spustit->cmd) v administrátorském režimu(!) : regsvr32 "C:\Program Files\mRemoteNG\eolwtscom.dll" (kde C:\Program Files\mRemoteNG\ is je cesta ke složce Vaší kopie mRemoteNG ).
+Pokud tato kontrola stále selhává nebo nejste schopni používat funkcionalitu RDP v mRemoteNG, prosím obraťte se na diskuzní fórum mRemoteNG na adrese http://forum.mremoteng.org/.
+
+
+ Knihovna EOLWTSCOM byla nalezena a zdá se, že je správně zaregistrována.
+
+
+ Pro využití Gecko Rendering Engine musíte mít nainstalovaný XULrunner 1.8.1.x a nastavenou cestu k jeho instalační složce v Možnostech Nastavení.
+XULrunner 1.8.1.3 lze stáhnout zde: ftp://ftp.mozilla.org/pub/xulrunner/releases/1.8.1.3/contrib/win32/
+Až jej stáhnete, rozbalte balíček do libovolné složky. Pak zvolte v mRemoteNG menu Nástroje -> Možnosti -> Pokročilé a zadejte cestu do políčka "Cesta ke složce XULrunner".
+Pokud tato kontrola stále selhává nebo nejste schopni používat funkcionalitu Gecko rendering Engine v mRemoteNG, prosím obraťte se na diskuzní fórum mRemoteNG na adrese http://forum.mremoteng.org/.
+
+
+ GeckoFx byla nalezena a zdá se, že je správně nainstalována.
+
+
+ Funkcionalita ICA vyžaduje, aby byl nainstalován XenDesktop Online Plugin a knihovna wfica.ocx byla zaregistrována. Klienta můžete stáhnout zde: http://www.citrix.com/download/
+Pokud máte XenDesktop Online Plugin nainstalován a kontrola stále selhává, pokuste se zaregistrovat wfica.ocx ručně.
+K tomu otevřete dialog "Spustit" (Start->Spustit) a zadejte následující text: regsvr32 "c:\Program Files\Citrix\ICA Client\wfica.ocx" (kde c:\Program Files\Citrix\ICA Client\ je cesta ke složce s Vaší instalací XenDesktop Online Plugin).
+Pokud tato kontrola stále selhává nebo nejste schopni používat funkcionalitu ICA v mRemoteNG, prosím obraťte se na diskuzní fórum mRemoteNG na adrese http://forum.mremoteng.org/.
+
+
+ Všechny komponenty ICA byly nalezeny a zdají se být řádně zaregistrovány.
+Citrix ICA Client Control verze {0}
+
+
+ není správně instalováno
+
+
+ Protokoly SSH, Telnet, Rlogin and RAW potřebují ke své práci program PuTTY. PuTTY je součástí každého balíčku s mRemoteNG a je k nalezení ve složce, kde je mRemoteNG nainstalován.
+Prosím ujistěte se, že budťo máte soubor Putty.exe ve složce vašeho mRemoteNG (výchozí je: c:\Program Files\mRemoteNG\) nebo že jste zadali správnou cestu ke složce obsahující program PuTTY v Nástrojích (menu Nástroje -> Možnosti -> Pokročilé -> Vlastní cesta k PuTTY)
+
+
+ Program PuTTY byl nalezen a měl by být připraven k použití.
+
+
+ Aby RDP fungovalo, musíte mí nainstlaovanou poslední verzi Remote Desktop Connection (Terminal Services) Client 8.0. Můžete jej stáhnout zde : http://support.microsoft.com/kb/925876
+Pokud tato kontrola stále selhává nebo nejste schopni používat RDP v mRemoteNG, prosím prosím obraťte se na diskuzní fórum mRemoteNG na adrese http://forum.mremoteng.org/.
+
+
+ Všechny komponenty RDP byly nalezeny a zdají se být řádně zaregistrovány.
+Remote Desktop Connection Control verze {0}
+
+
+ Funkcionalita VNC vyžaduje knihovnu VncSharp.dll ve složce s vaší instalací mRemoteNG.
+Prosím ujistěte se, že máte v aplikační složce vaší instalace mRemoteNG soubor VncSharp.dll (zpravidla složka C:\Program Files\mRemoteNG\).
+Pokud tato kontrola stále selhává nebo nejste schopni používat VNC v mRemoteNG, prosím prosím obraťte se na diskuzní fórum mRemoteNG na adrese http://forum.mremoteng.org/.
+
+
+ Všechny VNC součásti byly nalezeny a zdají se být řádně zaregistrovány.
+VncSharp Control verze {0}
+
+
+ Automaticky obnovit připojení v případě přerušení spojení se serverem(pouze RDP && ICA)
+
+
+ Doména
+
+
+ Tuto zprávu příště nezobrazovat.
+
+
+ Dle nadřazené
+
+
+ Heslo
+
+
+ Tento proxy server vyžaduje autentizaci
+
+
+ Vlastní cesta k PuTTY:
+
+
+ Obnovit spojení jakmile je připraveno
+
+
+ Pro spojení použít proxy server
+
+
+ Login
+
+
+ Čekat na logout
+
+
+ Opakovat kontrolu
+
+
+ Zkontroluj aktualizace při spuštění
+
+
+ Zkontrolovat nyní
+
+
+ Zkontroluj komponenty při spuštění
+
+
+ Před připojením vybrat panel
+
+
+ Zavřené porty
+
+
+ Sbalit vše
+
+
+ Přepínače (parametry)
+
+
+ Zobrazené jméno
+
+
+ Jméno souboru
+
+
+ Host/IP
+
+
+ Zpráva
+
+
+ Login
+
+
+ Čekat na logout
+
+
+ E&xit {0}
+
+
+ Nemohl jsem zpracovat přepínače z příkazového řádku!
+
+
+ &Otevřít seznam spojení
+
+
+ &Zkusit znovu
+
+
+ {0} detekoval v systému běžící aplikaci Lenovo Auto Scroll Utility. Tato aplikace je známá jako zdroj problémů s {0}. Doporučujeme ji uzavřít nebo odinstalovat.
+
+
+ Detekován porblém s kompatibilitou
+
+
+ Kontrola komponent
+
+
+ Operace btnIcon_Click selhala!
+
+
+ Operace ShowHideGridItems selhala!
+
+
+ Operace IconMenu_Click selhala!
+
+
+ Operace vlastností (Property Grid object) selhala!
+
+
+ Operace SetHostStatus selhala!
+
+
+ Operace pGrid_PopertyValueChanged selhala!
+
+
+ Operace Config UI load selhala!
+
+
+ Přejete si uzavřít spojení:
+"{0}"?
+
+
+ Opravdu chcete zavřít panel "{0}"? Všechna spojení v něm obsažená budou také uzavřena.
+
+
+ Jste si jisti, že si přejete smazat externí nástroj "{0}"?
+
+
+ Jste si jisti, že si přejete smazat {0} vybraných externích nástorojů?
+
+
+ Jste si jisti, že si přejete smazat spojení "{0}"?
+
+
+ Jste si jisti, že si přejete smazat prázdnou složku "{0}"?
+
+
+ Jste si jisti, že si přejete smazat složku "{0}"? Všechny složky a spojení v ní obsažené budou smazány také!!!!
+
+
+ Přejte si zavřít všechna otevřená spojení?
+
+
+ Jste si jisti, že si přejete obnovit výchozí rozložení panelů?
+
+
+ Připojit
+
+
+ Připojit na celou obrazovku
+
+
+ Připojuji...
+
+
+ Protokol událostí připojen
+
+
+ Připojení k "{0}" přes "{1}" bylo provedeno uživatelem "{2}" (Popis: "{3}"; Login: "{4}")
+
+
+ Připojení selhalo!
+
+
+ Chyba protokolu (či horizontu?) událostí
+
+
+ Otevření spojení selhalo!
+
+
+ Nemohu navázat spojení: Nebyla specifikována adresa či jméno hostitele!
+
+
+ Chyba RDP!
+Kód chyby: {0}
+Popis: {1}
+
+
+ Spojení
+
+
+ nastavit výchozí port!
+
+
+ Nepovedlo se vytvořit zálohu souboru seznamu spojení!
+
+
+ Nepovedlo se naimportovat soubor se seznamem spojení!
+
+
+ Nepovedlo se načíst soubor seznamu spojení "{0}"!
+
+
+ Nepovedlo se načíst soubor seznamu spojení "{0}"!
+Otevírám nový prázdný soubor seznamu spojení.
+
+
+ Nepovedlo se uložit soubor seznamu spojení!
+
+
+ Nepovedlo se uložit soubor seznamu spojení "{0}"!
+
+
+ Připojit bez loginu
+
+
+ Připojit k otevřenému sezení konzole
+
+
+ Připojit (s možnostmi)
+
+
+ Připojení k {0} přes {1} uzavřeno uživatelem {2}.
+
+
+ Připojení k {0} přes {1} uzavřeno uživatelem {2}. (Popis: "{3}"; Uživatel: "{4}")
+
+
+ Událost uzavření spojení
+
+
+ Události uzavření spojení selhala!
+
+
+ Nepovedlo se vytvořit nový soubor seznamu připojení!
+
+
+ Nepovedlo se najít ovládací prvek ToolStrip control v objektu FilteredPropertyGrid.
+
+
+ Instalovaná verze
+
+
+ Výchozí vzhled
+
+
+ Detekovat
+
+
+ Nepovedlo se připojit do sezení konzole
+
+
+ Nepřipojovat pokud autentizace selže
+
+
+ Zavřít tab dvojklikem na něj
+
+
+ Stáhnout a nainstalovat
+
+
+ Duplikovat
+
+
+ Přejete si pokračovat bez hesla?
+
+
+ Pro prázdná políčka Login, Heslo nebo Doména použít:
+
+
+ 128-bit
+
+
+ 128-bit (jen pro logon)
+
+
+ 40-bit
+
+
+ 56-bit
+
+
+ Basic
+
+
+ Zakódovat celý soubor seznamu připojení
+
+
+ Koncová IP
+
+
+ Skončit portem
+
+
+ Metoda AddExternalToolsToToolBar (frmMain) selhala. {0}
+
+
+ Metoda AddFolder (UI.Window.ConnectionTreeWindow) selhala. {0}
+
+
+ Tato verze databáze {0} není kompatibilní s touto verzí {1}.
+
+
+ Metoda CloneNode (Tree.Node) selhala. {0}
+
+
+ Kód chyby {0}.
+
+
+ Seznam připojení nemohl být uložen.
+
+
+ Spuštění PuTTY se nezdařilo.
+
+
+ Dešifrování se nezdařilo. {0}
+
+
+ Začifrování se nezdařilo. {0}
+
+
+ V nastavení politik zabezepčení systému Windows je aktivována možnost "System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing" (Systémová kryptografie: Pro šifrování, hashe a podpisy využívat algoritmy odpovídají FIPS") Toto nastavení není kompatibilní s {0}.
+
+Pro další informace navštivte článek podpory fy. Microsoft na http://support.microsoft.com/kb/811833
+
+{0} se nyní ukončí.
+
+
+ Chyby
+
+
+ Výchozí soubor seznamu spojení se nepodařilo načíst.{0}{0}{2}{0}{3}{0}{0}Aby se zabránilo ztrátě dat, {1} se nyní ukončí.
+
+
+ Metoda VerifyDatabaseVersion (Config.Connections.Save) selhala. {0}
+
+
+ Rozbalit vše
+
+
+ Experimentální
+
+
+ Exportovat
+
+
+ Exportovat vše
+
+
+ Exportovat soubor
+
+
+ Exportovat položky
+
+
+ Exportovat mRemote/mRemoteNG XML
+
+
+ Exportovat vlastnosti
+
+
+ Exportuj vybrané spojení
+
+
+ Export vybranou složku
+
+
+ &Exportovat do souboru...
+
+
+ Ext. App
+
+
+ Nový Externí Nástroj
+
+
+ Obsahuje ikony od [FAMFAMFAM]
+
+
+ http://www.famfamfam.com/
+
+
+ &Formát souboru:
+
+
+ Všechny soubory (*.*)
+
+
+ Všechny importovatelné soubory
+
+
+ Soubory aplikací (*.exe)
+
+
+ Soubory mRemote CSV (*.csv)
+
+
+ Soubory mRemote XML (*.xml)
+
+
+ Soubory PuTTY Connection Manager
+
+
+ Soubory Remote Desktop Connection Manager (*.rdg)
+
+
+ Soubory RDP (*.rdp)
+
+
+ Soubory visionapp Remote Desktop 2008 CSV (*.csv)
+
+
+ Převzít {0}
+
+
+ Popis převzaté vlastnosti: {0}
+
+
+ Uvolnit
+
+
+ Celá obrazovka
+
+
+ Všeobecné
+
+
+ Získání informací o spojení z SQL selhalo (Get Connection Info From SQL)
+
+
+ Došlo k chybě při čtení tohoto nastavení připojení "{0}" z "{1}". {2}
+
+
+ Automaticky obnovit spojení
+
+
+ Spojení
+
+
+ Vlastnosti externích nástrojů
+
+
+ Soubory
+
+
+ Hostitel
+
+
+ HTTP
+
+
+ Spojení HTTP selhalo!
+
+
+ Nezdařilo se vytvoření noebého spojení HTTP!
+
+
+ Změna nadpisu dokumentu HTTP selhala!
+
+
+ Gecko (Firefox)
+
+
+ Internet Explorer
+
+
+ HTTPS
+
+
+ Nastavení vlast. HTTP selhalo!
+
+
+ ICA
+
+
+ Nepovedo se vytvořit nové spojení ICA!
+
+
+ Načtení pluginu ICA Plugin selhalo!
+
+
+ Metoda ICA SetCredentials selhala!
+
+
+ Metoda ICA Set Event Handlers selhala!
+
+
+ Metoda ICA (nastavení vlastností) Set Props selhala!
+
+
+ Metoda ICA Set Resolution (nastavení rozlišení) selhala!
+
+
+ Označ záložky rychlého připojení prefixem "Quick:"
+
+
+ Import z Active Directory
+
+
+ Import/Export
+
+
+ Při importování souboru "{0}" došlo k chybě.
+
+
+ Import selhal
+
+
+ Import ze &souboru...
+
+
+ V rámci kořenu{0}{1}|V rámci vybrané složky{0}{2}
+
+
+ Kam mají být umístěny importované položky?
+
+
+ Umístění importu
+
+
+ &Import
+
+
+ Importovat mRemote/mRemoteNG XML
+
+
+ Importovat ze scanu portů
+
+
+ Importovat z .RDP soburu/ů
+
+
+ Neaktivní
+
+
+ Informace
+
+
+ mRemoteNG je aktuální
+
+
+ Spojení selhalo!
+
+
+ Zrušení procesu Int App process selhalo!
+
+
+ Metoda Int App Focus selhala!
+
+
+ Int App Handle: {0}
+
+
+ Ukončení Int App Process selhalo!
+
+
+ Handler Panelu : {0}
+
+
+ Metoda Int App Resize selhala!
+
+
+ --- IntApp výstup ---
+
+
+ Int App Název: {0}
+
+
+ CTRL-ALT-DEL
+
+
+ CTRL-ESC
+
+
+ Adresa:
+
+
+ Parametry:
+
+
+ Change Log:
+
+
+ Když se ukončují spojení:
+
+
+ &Připojit:
+
+
+ Zobrazený název:
+
+
+ Doména:
+
+
+ Název souboru:
+
+
+ Hostitel:
+
+
+ Možnosti:
+
+
+ Heso:
+
+
+ Port:
+
+
+ Přenosná verze
+
+
+ Protokol:
+
+
+ Pro konfiguraci sezení PuTTY stiskněte toto tlačítko:
+
+
+ Maximální doba čekání na PuTTY a integrované externí nástroje:
+
+
+ Vydáno pod GNU General Public License (GPL)
+
+
+ sekund
+
+
+ Z níže uvedeného seznamu vyberte panel nebo stiskněte "Nový" pro přidání nového. Pro pokračování stiskněte "OK".
+
+
+ Stav Serveru:
+
+
+ Databáze:
+
+
+ Databáze:
+
+
+ Login:
+
+
+ Verifikuj:
+
+
+ Jazyk
+
+
+ (Automaticky)
+
+
+ Aby se projevila změna jazyka, musí být {0} restartován.
+
+
+ Načtení z SQL selhalo
+
+
+ Informace o spojení nemohly být načteny z SQL serveru.
+
+
+ Načtení z XML selhalo!
+
+
+ Lokální soubor
+
+
+ Lokální soubor neexistuje!
+
+
+ Logoff
+
+
+ Zápis do souboru reportu selhalo!
+
+
+ Nebylo možné uložit report do požadovaného umístění.
+
+
+ Využívá "Magic library" od [Crownwood Software]
+
+
+ http://www.dotnetmagic.com/
+
+
+ O aplikaci
+
+
+ Nový panel spojení
+
+
+ Vyhledat aktualizace
+
+
+ Nastavení
+
+
+ Připojit
+
+
+ Panely
+
+
+ Spojení
+
+
+ Nastavení spojení
+
+
+ Kopírovat
+
+
+ Ctrl-Alt-Del
+
+
+ Ctrl-Esc
+
+
+ Smazat...
+
+
+ Smazat spojení...
+
+
+ Smazat vnější nástroj...
+
+
+ Smazat složku...
+
+
+ Odpojit
+
+
+ Přispějte
+
+
+ Klonovat
+
+
+ Klonovat připojení
+
+
+ Klonovat složku
+
+
+ Klonovat záložku tabu
+
+
+ Exit
+
+
+ Externí nástroje
+
+
+ Nástrojová lišta externích nástrojů
+
+
+ &Soubor
+
+
+ Celá obrazovka
+
+
+ Celá obrazovka (RDP)
+
+
+ &Nápověda
+
+
+ Nápověda mRemoteNG
+
+
+ Jít na
+
+
+ Spustit externí nástroj
+
+
+ Nový soubor seznamu spojení
+
+
+ Nový externí nástroj
+
+
+ Varovné zprávy
+
+
+ Kopírovat vše
+
+
+ Smazat
+
+
+ Smazat vše
+
+
+ Otevřít soubor seznamu spojení...
+
+
+ Možnosti
+
+
+ Vložit
+
+
+ Scan portů
+
+
+ Nástrojová lišta rychlého připojení
+
+
+ Obnovit připojení
+
+
+ Obnovit obraz (VNC)
+
+
+ Přejmenovat
+
+
+ Přejmenovat spojení
+
+
+ Přejmenovat složku
+
+
+ Přejmonovat záložku tabu
+
+
+ Nahlásit chybu
+
+
+ Výchozí vzhled
+
+
+ Uložit seznam spojení
+
+
+ Uložit seznam spojení jako...
+
+
+ Snímek obrazovky
+
+
+ Správa snímků obrazovek
+
+
+ Poslat speciální stisk kláves (VNC)
+
+
+ Získat
+
+
+ Sezení
+
+
+ Sezení a snímky obrazovek
+
+
+ &Zobraz texty nápovedy
+
+
+ Zobraz text
+
+
+ Automatická velikost (RDP/VNC)
+
+
+ SSH přenos souborů
+
+
+ Spustit (VNC) chat
+
+
+ Diskuzní fórum podpory
+
+
+ &Nástroje
+
+
+ Přenos souboru (SSH)
+
+
+ &Zobrazení
+
+
+ Pouze prohlížet (VNC)
+
+
+ Webová stránka
+
+
+ Minimizovat do oznamovací oblasti
+
+
+ Přesunout dolů
+
+
+ Přesunout nahoru
+
+
+ mRemoteNG CSV
+
+
+ mRemoteNG XML
+
+
+ Aktivní přihl. údaje (z Windows logon)
+
+
+ Nikdy
+
+
+ Nové spojení
+
+
+ Nová složka
+
+
+ Nový panel
+
+
+ Nový kořen
+
+
+ Nový popisek
+
+
+ Ne
+
+
+ Bez komprimace
+
+
+ Nebyla specifikována ext. aplikace.
+
+
+ (žádné)
+
+
+ (žádné)
+
+
+ Normal
+
+
+ Ne automatickou velikost
+
+
+ Nejsou k dispozici žádné aktualizace
+
+
+ Pokoušíte se načíst soubor seznamu spojení, který byl vytvořen pomocí velmi ranné verze mRemote, což by mohlo vést k běhové chybě.
+Pokud k takové chybě dojde, prosím vytvořte nový soubor se seznamem spojení!
+
+
+ Otevřít novou záložku tabu vpravo od právě vybraného
+
+
+ Otevřené porty
+
+
+ &Smazat
+
+
+ &Nové
+
+
+ &Resetovat na výchozí
+
+
+ Resetovat &všechny na výchozí
+
+
+ Taby
+
+
+ Další tab
+
+
+ Předchozí tab
+
+
+ Uprav zkratku
+
+
+ Klévesové zkratky
+
+
+ Ověřuji...
+
+
+ Klávesnice
+
+
+ Vzhled
+
+
+ &Odstranit
+
+
+ &Nový
+
+
+ Název panelu
+
+
+ Chránit heslem
+
+
+ Obě hesla musejí být stejná.
+
+
+ helso musí být dlouhé alespoň 3 znaky.
+
+
+ Prosím vyplňte všechna vstupní pole
+
+
+ Scanování portů dokončeno.
+
+
+ Nezdařilo se otevřít panel PortScan!
+
+
+ (Tyto vlastnosti se uloží pouze tehdy, pokud vyberete formát výstupního souboru typu "mRemote" nebo "mRemoteNG XML"!)
+
+
+ zadejte název hostitele nebo jeho IP adresu ke které se chcete připojit.
+
+
+ Změnit všude převzetí z nadřazené.
+
+
+ Vyberte jakou úroveň autentizace má toto spojení použít.
+
+
+ Vyberte jak se chcete autentizovat VNC serveru.
+
+
+ Vyberte zda si přejete autoamticky změnit velikost virtuální obrazovky v rámci spojení když se změní velikost okna nebo je zapnut režim celé obrazovky. Toto vyžaduje RDC ve verzi 8.0 nebo vyšší.
+
+
+ Vyberte zda chcete využívat mezipamět bitmapových dat či nikoliv.
+
+
+ Vyberte barevnou hloubku.
+
+
+ Vyberete úroveň komprese.
+
+
+ Sem zadejte své poznámky nebo popis hostitele.
+
+
+ Zvolte "ano" pokud má být použit vzhled (téma) nastavený na vzdáleném hostiteli.
+
+
+ Zvolte "ano" pokud se má zobrazovat pozadí plochy dle nastavení na vzdáleném hosititeli.
+
+
+ Zadejte doménu pod kterou spadají uživatelské přihlašovací údaje (NETBIOSNAME před '\') .
+
+
+ Vyberte zda použít pokročilé prvky rozhraní (Aero etc.) nebo ne.
+
+
+ Vyberte zda použít vyhlazování písem.
+
+
+ Vyberte způsob kódování přenosu.
+
+
+ Vyberte požadovanou sílu šifrování vzdáleného hostitele.
+
+
+ Vyberte externí nástroj, který má být spuštěn.
+
+
+ Vyberte externí nástroj, který má být spuštěn po odpojení od vzdáleného hostitele.
+
+
+ Vyberte externí nástroj, který má být spuštěn před spojením se vzdáleným hostitelem.
+
+
+ Vyberte ikonu zobrazovanou pro toto spojení.
+
+
+ Specifikuje pomocné informace pro rozkladače zátěže (load balancery - NLB) pro výběr nejlepšího serveru.
+
+
+ Pokud se využívá v externím nástroji, zadejte sem MAC adresu vzdáleného hostitele.
+
+
+ Toto jméno bude zobrazeno ve stromě seznamu spojení a jejich složek.
+
+
+ Zadaný název určí panel, ve kterém se má spojení otevřít.
+
+
+ Sem zadejte Vaše heslo.
+
+
+ Zadejte port typu protokolu, na kterém poslouchá server/hostitel, ke kterému se připojujete.
+
+
+ Vyberte jakým způsobem (typem spojení) se má mRemoteNG spojit s tímto hostitelem.
+
+
+ Vyberte uložené sezení PuTTY, které se použije pro toto spojení.
+
+
+ Specifikuje doménové jměno, které uživatel předává při spojení s bránou vzdálené plochy (RD Gateway server).
+
+
+ Specifikuje název hostitele serveru brány vzdálené plochy (Remote Desktop Gateway server), přes kterého má být toto spojení zprostředkováno.
+
+
+ Specifikuje kdy má být použít server brány vzdálené plochy (Remote Desktop Gateway = RD Gateway).
+
+
+ Specifikuje, zda pro přihlášení k serveru brány vzdálené plochy použít stejné jméno a heslo jako je hlavní login pro toto spojení.
+
+
+ Specifikuje uživatelské jméno (login) odlišné od hlavního, které se použije pouze pro spojení se serverem brány vzdálené plochy (RD Gateway server).
+
+
+ Specifikuje, zda mají být lokální disky na tomto počítači připojeny ke vzdálenému hostiteli.
+
+
+ Vyberte, zda mají být složené stisky kláves (např. Alt-Tab) přesměrovány na vzdáleného hostitele, když je okno mRemote aktivní (má focus).
+
+
+ Specifikuje, zda mají být lokální hardwarové porty (COM, LPT - paralelní) z tohoto počítače připojeny ke vzdálenému hostiteli.
+
+
+ Specifikuje, zda mají být tiskárny lokálně připojené (nainstalované na tomto počítači) připojeny ke vzdálenému hostiteli.
+
+
+ Specifikuje, zda mají být čipové karty disponibilní na tomto počítači zprostředkovány také vzdálenému hostiteli.
+
+
+ Vyberte, jak mají být přesměrovány zvuky ze vzdáleného hostitele.
+
+
+ Vyberte který vykreslovací engine má zobrazovat webové stránky HTML.
+
+
+ Vyberte rozlišení nebo režim, ve kterém se toto spojení otevře.
+
+
+ Vyberte zda má být použita automatická změna velikosti (rozlišení).
+
+
+ Připojit se ke konzoli (příkazovému řádku) vzdáleného hostitele (pokud podporuje více variant).
+
+
+ V případě jeho dostupnosti, použít při autentizaci poskytovatele podpory bezpečných přihlašovacích údajů (Credential Security Support Provider - CredSSP).
+
+
+ Sem můžete zadat jakékoliv informace uznáte za vhodné.
+
+
+ Sem vložte své uživatelské (přihlašovací) jméno = login.
+
+
+ Pokud si přejete připojit se k hostiteli v režimu pouze prohlížení (bez ovládání), vyberte "ano".
+
+
+ Vložte adresu proxy serveru, přes který má spojení probíhat.
+
+
+ Zadejte heslo k proxy serveru, který má spojení zprostředkovat.
+
+
+ Zadejte port, na kterém proxy server naslouchá.
+
+
+ Pokud používáte proxy pro zprostřekování (tunelování) VNC psojení, zadejte jakým typem proxy tak činíte.
+
+
+ Vložte vaše uživatelské jméno pro autentizaci vůči proxy serveru.
+
+
+ Hostname/DN/IP
+
+
+ Vše
+
+
+ Po autentizaci
+
+
+ Režim autentizace
+
+
+ Automatické rozlišení
+
+
+ Mezipaměť bitmap
+
+
+ Bar. hloubka
+
+
+ Komprese
+
+
+ Popis
+
+
+ Použít téma vzhledu
+
+
+ Pozadí plochy
+
+
+ Doména
+
+
+ Pokroč. plocha (Aero)
+
+
+ Vyhlazování písem
+
+
+ Kódování
+
+
+ Síla šifrování
+
+
+ Externí nástroj
+
+
+ Externí nástroj po odp.
+
+
+ Externí nástroj před spoj.
+
+
+ Ikona
+
+
+ Load Balance Info
+
+
+ Adresa MAC
+
+
+ Jméno
+
+
+ Panel
+
+
+ Heslo
+
+
+ Port
+
+
+ Protokol
+
+
+ Konfigurace PuTTY
+
+
+ Doména (RD brána)
+
+
+ Host/DN/IP (RD brána)
+
+
+ Heslo (RD brána)
+
+
+ Použít RD bránu
+
+
+ Přihl. údaje brány
+
+
+ Login brány
+
+
+ Připojit lok. disky
+
+
+ Posílat kláv. zkr.
+
+
+ Připoj COM/LPT
+
+
+ Připoj tiskárny
+
+
+ Poskytuj karty
+
+
+ Zvuky
+
+
+ Vykreslovací engine
+
+
+ Rozlišení
+
+
+ Režim resize
+
+
+ Připoj k příkazové konzoli
+
+
+ Použít CredSSP
+
+
+ Poznámka
+
+
+ Login jméno
+
+
+ Jen sledovat
+
+
+ Adresa proxy
+
+
+ Heslo proxy
+
+
+ Port proxy
+
+
+ Typ proxy
+
+
+ Login k proxy
+
+
+ Událost prokolu Odpojeno.
+Zpráva:
+{0}
+
+
+ Událost protokolu "Odpojeno" selhala.
+{0}
+
+
+ Protocol k importu
+
+
+ Test proxy selhal!
+
+
+ Test proxy uspěl!
+
+
+ Spojení selhalo!
+
+
+ Odstranění procesu PuTTY selhalo!
+
+
+ Nemohu aktivovat okno (focus)!
+
+
+ Získání seznamu konfigurací sezení/spojení PuTTY selhalo!
+
+
+ PuTTY Handle: {0}
+
+
+ Ukončení procesu PuTTY selhalo!
+
+
+ Panel Handle: {0}
+
+
+ Změna rozlišení okna PuTTY selhala!
+
+
+ Uložená sezení/spojení PuTTY
+
+
+ Nastavení PuTTY sezení/spojení
+
+
+ Nastavení PuTTY
+
+
+ Příkaz na zobrazení dialogového okna PuTTY Nastavení selhal!
+
+
+ Spuštění PuTTY selhalo!
+
+
+ --- PuTTY výstup ---
+
+
+ PuTTY název okna: {0}
+
+
+ Quick: {0}
+
+
+ Rychlé spojení
+
+
+ Přidání rychlého spojení selhalo!
+
+
+ Vytvoření rychlého spojení selhalo
+
+
+ &Varuj mě, když zavírám spojení
+
+
+ Varuj mě jen, když u&končuji mRemoteNG
+
+
+ Varuj mě jen, když zavírám více&násobná spojení
+
+
+ Neva&ruj mě, když zavírám spojení
+
+
+ RAW
+
+
+ RDP
+
+
+ 16777216 barev (24-bit)
+
+
+ 256 barev (8-bit)
+
+
+ 32768 barev (15-bit)
+
+
+ 16777216 barev (32-bit)
+
+
+ 65536 barev (16-bit)
+
+
+ Metoda RDP Add Resolution selhala!
+
+
+ Metoda RDP Add Resolutions selhala!
+
+
+ Metoda Add Session selhala
+
+
+ Metoda Close RDP Connection selhala!
+
+
+ Navázání spojení selhalo!
+
+
+ Nebylo možné aktivovat ovládací prvek okna RDP, prosím zkontrolujte požadavky mRemoteNG na prerekvizity.
+
+
+ Vypnout blikání kurzoru
+
+
+ Vypnout stín kurzoru
+
+
+ Vypnout přetahování celého okna (Full Window)
+
+
+ Vypnout animace menu
+
+
+ Vypnout nastavení vzhledu
+
+
+ Vypnout pozadí plochy
+
+
+ RDP odpojeno!
+
+
+ Pokud o odpojední RDP selhal, zkouším uzavřít!
+
+
+ Interní chyba kód 1.
+
+
+ Interní chyba kód 2.
+
+
+ Interní chyba kód 3. Toto není validní stav.
+
+
+ Interní chyba kód 4.
+
+
+ Během připojování klienta došlo k nepominutelné chybě.
+
+
+ Metoda GetError selhala (FatalErrors)
+
+
+ Došlo k neznámé nepominutelné chybě RDP. Kód chyby {0}.
+
+
+ Došlo k chybě "nedostatek paměti".
+
+
+ Došlo k neznámé chybě.
+
+
+ Došlo k chybě při vytváření okna.
+
+
+ Chyba inicializace Winsock.
+
+
+ Nezdařil se import souboru rdb!
+
+
+ Přizpůsobit panelu
+
+
+ Aktivace RDP okna (focus) selhala!
+
+
+ Brána RD (RD Gateway) je podporována.
+
+
+ Brána RD (RD Gateway) NENÍ podporována!
+
+
+ Metoda GetSessions selhala!
+
+
+ Otevření spojení RDP selhalo!
+
+
+ Počet pokusů o znovunavázání spojení RDP:
+
+
+ Metoda RDP SetAuthenticationLevel selhala!
+
+
+ Metoda RDP SetUseConsoleSession selhala!
+
+
+ Nastavuji přepínací parametr konzole Setting RDC {0}.
+
+
+ Metoda RDP SetCredentials selhala!
+
+
+ Metoda RDP SetEventHandlers selhala!
+
+
+ Metoda RDP SetRDGateway selhala!
+
+
+ Metoda RDP SetPerformanceFlags selhala!
+
+
+ Metoda RDP SetPort selhala!
+
+
+ Metoda RDP SetProps selhala!
+
+
+ Metoda Rdp Set Redirection selhala!
+
+
+ Nastavení přesměrování klávesových zkratek (Rdp Set Redirect Keys) selhalo!
+
+
+ Metoda RDP SetResolution selhala!
+
+
+ Autom. velikost
+
+
+ Přehrávat v místním počítači
+
+
+ Vůbec nepřehrávat
+
+
+ Přehrávat na vzdáleném počítači
+
+
+ Metoda RDP ToggleFullscreen selhala!
+
+
+ Metoda RDP ToggleSmartSize selhala!
+
+
+ Znovu se připojit k předchozím otevřeným relacím při startu aplikace
+
+
+ Obnovit
+
+
+ Vzdálený soubor
+
+
+ Odstranit vše
+
+
+ Přejmenovat
+
+
+ Rlogin
+
+
+ Uložit
+
+
+ Uložit vše
+
+
+ Přejete si uložit stávající soubor seznamu připojení před načtením jiného?
+
+
+ Ukládat spojení při ukončení aplikace
+
+
+ Soubor Graphics Interchange Format (.gif)|*.gif|Soubor Joint Photographic Experts Group (.jpeg)|*.jpeg|Soubor Joint Photographic Experts Group (.jpg)|*.jpg|Soubor Portable Network Graphics (.png)|*.png
+
+
+ Obrazovka
+
+
+ Snímek obrazovky
+
+
+ Snímky obrazovek
+
+
+ Hledat
+
+
+ Odeslat..
+
+
+ Metoda Get Sessions Background selhala
+
+
+ Odstranění (Session Background) selhalo
+
+
+ Při konfiguraci spojení vyplnit DN hostitele podle zadaného názvu spojení
+
+
+ Nastavení textu hlavního formuláře selhalo
+
+
+ Nebylo možné uložti nastavení nebo zrušit ikonu v oznamovací oblasti!
+
+
+ Zobrazovat "popis" jako tooltip v seznamu spojení
+
+
+ V názvu okna zobrazovat úplnou cestu k souboru seznamu spojení
+
+
+ Zobrazovat v názvu záložek (tabech) informace o loginu
+
+
+ Zobrazovat v názvu záložek (tabech) protokol (typ spojení)
+
+
+ Otevírat spojením jedním klikem v seznamu
+
+
+ Kliknutím na již otevřené spojení v seznamu přepne na jeho tab záložku
+
+
+ Konst. poměr stran
+
+
+ Volné
+
+
+ Nepoužívat auto resize
+
+
+ Socks 5
+
+
+ Řazení
+
+
+ Vzestupně (A-Z)
+
+
+ Sestupně (Z-A)
+
+
+ Klávesové zkratky
+
+
+ Prosím navštivte nápovědu - Začínáme - Konfigurace SQL pro získání dalších informací!
+
+
+ SQL Server
+
+
+ Vyhledávání aktualizací SQL ukončeno a aktualizace jsou k dispozici. Budu aktualizovat seznam spojení.
+
+
+ SSH ver 1
+
+
+ SSH ver 2
+
+
+ Selhal přenos na pozadí přes SSH!
+
+
+ Přenos úspěšně dokončen!
+
+
+ Selhala metoda SSH Transfer End (UI.Window.SSHTransfer)!
+
+
+ Selhal přenos přes SSH.
+
+
+ Počáteční IP
+
+
+ Počáteční Port
+
+
+ Startup/Exit
+
+
+ Stav
+
+
+ Přepnout do notifikačního panelu při:
+
+
+ Pokročilé
+
+
+ Vzhled
+
+
+ Taby && Panely
+
+
+ Aktualizace
+
+
+ Telnet
+
+
+ Následující:
+
+
+ Konfigurační panel
+
+
+ Panel spojení
+
+
+ Všeobecné
+
+
+ Barva pozadí konfiguračního panelu.
+
+
+ Barva textu nadpisů kategorií v konfiguračním panelu.
+
+
+ Barva ohraničení tabulky v konfiguračním panelu
+
+
+ Barva pozadí nápovědy v konfiguračním panelu.
+
+
+ Barva textu nápovědy v konfiguračním panelu.
+
+
+ Barva textu v konfiguračním panelu.
+
+
+ Barva pozadí v panelu seznamu spojení.
+
+
+ Barva textu v panelu seznamu spojení.
+
+
+ Barva čar stromu seznamu v panelu spojení.
+
+
+ Barva pozadí v nabídkách (menu).
+
+
+ Barva textu v nabídkách (menu).
+
+
+ Barva pozadí v políčku pro vyhledávání.
+
+
+ Barva textu v políčku pro vyhledávání.
+
+
+ Barva vyskakujícího textu v políčku pro vyhledávání.
+
+
+ Barva pozadí nástrojových lišt (toolbar).
+
+
+ barva textu nástrojových lišt (toolbar).
+
+
+ Barva pozadí hlavního okna aplikace.
+
+
+ Barva pozadí konfiguračního panelu
+
+
+ Barva textu konfiguračního panelu
+
+
+ Barva ohraničení tabulek konfiguračního panelu
+
+
+ Barva pozadí nápovědy konfiguračního panelu
+
+
+ Barva textu nápovědy konfiguračního panelu
+
+
+ Barva textu konfiguračního panelu
+
+
+ Barva pozadí panelu seznamu připojení
+
+
+ Barva textu panelu seznamu připojení
+
+
+ Barva čar stromu seznamu připojení
+
+
+ Barva pozadí nabídek
+
+
+ Barva textu nabídek
+
+
+ Barva pozadí pole vyhledávání
+
+
+ Barva textu pole vyhledávání
+
+
+ Barva textu nabídky v poli vyhledávání
+
+
+ Barva pozadí nástrojové lišty
+
+
+ Barva textu nástrojové lišty
+
+
+ Barva pozadí okna
+
+
+ Chyba ({0})
+
+
+ Informace ({0})
+
+
+ Heslo
+
+
+ Heslo pro {0}
+
+
+ Vybrat panel
+
+
+ Varování ({0})
+
+
+ Přenést
+
+
+ Přenos selhal!
+
+
+ Zkouším integrovat
+
+
+ Typ
+
+
+ Ultra VNC Repeater
+
+
+ UltraVNC SingleClick port:
+
+
+ Nezaškrtávejte ty vlastnosti, které nechcete uložit!
+
+
+ Vzhled be názvu
+
+
+ mRemoteNG vyžaduje aktualizaci
+
+
+ mRemoteNG se může pravidelně připojovat k webu mRemoteNG aby zkontroloval aktualizace.
+
+
+ Informace o aktualizacích nemohly být staženy.
+
+
+ Vyhledání aktualizací selhalo!
+
+
+ Vyhledávám aktualizace...
+
+
+ mRemoteNG Portable Edition nyní nepodporuje automatické aktualizace.
+
+
+ Stahování ukončeno!
+mRemoteNG se nyní ukončí a zahájí instalaci.
+
+
+ Aktualizaci se nepodařilo stáhnout.
+
+
+ Stahování aktualizací se nepodařilo zahájit.
+
+
+ Každý(ch) {0} dnů
+
+
+ Denně
+
+
+ Měsíčně
+
+
+ Týdně
+
+
+ Seznam informací o změnách se nepodařilo stáhnout.
+
+
+ Použít jiné uživatelské jméno (login) a heslo
+
+
+ Uživatel
+
+
+ Použít stejné uživatelské jméno (login) a heslo
+
+
+ Použít čipovou kartu
+
+
+ Použít SQL Server ke stažení && uloženho seznamu spojení
+
+
+ Verze
+
+
+ VNC
+
+
+ Odpojení VNC selhalo!
+
+
+ Navázání spojení VNC selhalo!
+
+
+ Obnovení obrazovky VNC selhalo!
+
+
+ VNC zaslat klávesovou zkratku selhalo!
+
+
+ Selhala metoda VNC Set Event Handlers!
+
+
+ Nastavení VNC Set Props selhalo!
+
+
+ Volání VNC Start Chat selhalo!
+
+
+ Přepnutí VNC automatické velikosti (SmartSize) selhalo!
+
+
+ Přepnutí VNC do režimu ViewOnly selhalo!
+
+
+ Varuj mě pokud autentizace selže
+
+
+ Varování
+
+
+ Využívá DockPanel Suite od [Weifen Luo]
+
+
+ http://sourceforge.net/projects/dockpanelsuite/
+
+
+ Složka umístění XULrunner:
+
+
+ Ano
+
+
+ Obnovit všechna otevřená spojení
+
+
+ Čas čekání (timeout) na RDP spojení
+
+
+ Tento uzel již v této složce existuje.
+
+
+ Nelze přetáhnout uzel na sebe sama.
+
+
+ Nelze přetáhnout nadřazený uzel na jeho potomka.
+
+
+ Tento uzel nelze přetahovat myší.
+
+
+ Režim blokové šifry
+
+
+ Šifrovací metody
+
+
+ Bezpečnost
+
+
+ Počet iterací funkce derivující klíč
+
+
+ Variabilní
+
+
+ Vysoká
+
+
+ Střední
+
+
+ Vyberte si jednu z kvalit zvuku poskytovanou protokolem: Variabilní, Střední, Vvysoká
+
+
+ Kvalita zvuku
+
+
+ Stahování přenosné verze dokončeno!
+
+
+ Stáhnout
+
+
+ Počet minut neaktivity v sezení RDP než bude automaticky odpojeno (0 = bez omezení)
+
+
+ Minut neaktivity do odp.
+
+
+ Akceptovat
+
+
+ Přidat
+
+
+ Editor přihlašovacích údajů
+
+
+ Správce přihlašovacích údajů
+
+
+ ID
+
+
+ Odstranit
+
+
+ Název
+
+
+ Vyberte jaké přihlašovací údaje použít pro toto spojení.
+
+
+ Jste si jisti že chcete odstranit záznam přihlašovacích údajů {0}?
+
+
+ Přihlašovací údaje s ID "{0}" nebyly nalezeny pro pozužití ve spojení jménem "{1}".
+
+
+ Zapsat zprávu logu když se RDP sezení odpojí kvůli neaktivitě.
+
+
+ Upozornit při odpojení z neaktivity
+
+
+ Heslo musí obsahovat alespoň {0} z těchto písmen: {1}
+
+
+ Heslo musí obsahovat alespoň {0} malých písmen.
+
+
+ Heslo musí obsahovat alespoň {0} číslic.
+
+
+ Heslo musí obsahovat alespoň {0} velkých písmen.
+
+
+ Delká hesla musí být alespoň {0} a nejvýše {1} znaků.
+
+
+ Vyberte cestu k souboru logu aplikace mRemoteNG.
+
+
+ Debugging
+
+
+ Zobrazovat tyto zprávy
+
+
+ Cesta k souboru logu
+
+
+ Logovat tyto typy zpráv
+
+
+ Vybrat cestu
+
+
+ Otevřít soubor
+
+
+ Použít výchozí
+
+
+ Logování
+
+
+ Zprávy logu
+
+
+ Logovat do adresáře kde je aplikace umístěna.
+
+
++ Zvolte jak bude přesměrováno vstupní zvukové zařízení
++
++
++ Vstupní zvuková zařízení
++
++
++ Ponechat vstup na místním počítači
++
++
++ Vstup zaslat na vzdálený počítač
++
+
+ Přiřazené přihlašovací informace
+
+
\ No newline at end of file
diff --git a/mRemoteV1/Resources/Language/Language.resx b/mRemoteV1/Resources/Language/Language.resx
index 538b6530..99c877f5 100644
--- a/mRemoteV1/Resources/Language/Language.resx
+++ b/mRemoteV1/Resources/Language/Language.resx
@@ -2505,4 +2505,22 @@ mRemoteNG will now quit and begin with the installation.
Log to application directory
+
+ Assigned Credential
+
+
+ Allow Always
+
+
+ Allow Once
+
+
+ Don't Allow
+
+
+ Allow Insecure Certificate for URL: {0}?
+
+
+ Allow Insecure Certificate?
+
\ No newline at end of file
diff --git a/mRemoteV1/Resources/PuTTYNG.exe b/mRemoteV1/Resources/PuTTYNG.exe
index b686b1d7..5749a78b 100644
Binary files a/mRemoteV1/Resources/PuTTYNG.exe and b/mRemoteV1/Resources/PuTTYNG.exe differ
diff --git a/mRemoteV1/Security/SaveFilter.cs b/mRemoteV1/Security/SaveFilter.cs
index 24d65eec..7216e82d 100644
--- a/mRemoteV1/Security/SaveFilter.cs
+++ b/mRemoteV1/Security/SaveFilter.cs
@@ -9,7 +9,8 @@ namespace mRemoteNG.Security
SaveUsername = true;
SavePassword = true;
SaveDomain = true;
- SaveInheritance = true;
+ SaveCredentialId = true;
+ SaveInheritance = true;
}
public bool SaveUsername { get; set; }
@@ -18,6 +19,8 @@ namespace mRemoteNG.Security
public bool SaveDomain { get; set; }
+ public bool SaveCredentialId { get; set; }
+
public bool SaveInheritance { get; set; }
}
}
\ No newline at end of file
diff --git a/mRemoteV1/Tools/Authenticode.cs b/mRemoteV1/Tools/Authenticode.cs
index 4bcf5372..6a60b9bd 100644
--- a/mRemoteV1/Tools/Authenticode.cs
+++ b/mRemoteV1/Tools/Authenticode.cs
@@ -1,3 +1,4 @@
+#if !PORTABLE
using System;
using System.Windows.Forms;
using System.IO;
@@ -79,6 +80,7 @@ namespace mRemoteNG.Tools
var windowHandle = DisplayParentForm?.Handle ?? IntPtr.Zero;
_trustProviderErrorCode = NativeMethods.WinVerifyTrust(windowHandle, NativeMethods.WINTRUST_ACTION_GENERIC_VERIFY_V2, trustDataPointer);
+ // ReSharper disable once SwitchStatementMissingSomeCases
switch (_trustProviderErrorCode)
{
case NativeMethods.TRUST_E_NOSIGNATURE:
@@ -139,54 +141,51 @@ namespace mRemoteNG.Tools
private DisplayContextValue DisplayContext {get; set;}
private Form DisplayParentForm {get; set;}
- internal Exception Exception {get; set;}
+ internal Exception Exception {get; private set;}
private string FilePath {get; set;}
- internal bool RequireThumbprintMatch { get; set;}
+ internal bool RequireThumbprintMatch { get; set;}
- internal StatusValue Status { get; set; }
+ internal StatusValue Status { get; private set; }
- public string StatusMessage
- {
- get
- {
- // ReSharper disable once SwitchStatementMissingSomeCases
- switch (Status)
- {
- case StatusValue.Verified:
- return "The file was verified successfully.";
- case StatusValue.FileNotExist:
- return "The specified file does not exist.";
- case StatusValue.FileEmpty:
- return "The specified file is empty.";
- case StatusValue.NoSignature:
- return "The specified file is not digitally signed.";
- case StatusValue.NoThumbprintToMatch:
- return "A thumbprint match is required but no thumbprint to match against was specified.";
- case StatusValue.ThumbprintNotMatch:
- /* (char)0x2260 == the "not equal to" symbol (which I cannot print in here without changing the encoding of the file)
- * Fancy...
- *
- * "<>" is fiarly cryptic for non-programers
- * So is "!="
- * "=/=" gets the job done, no?
- * What about plain old English (or localized value): X is not equal to Y?
- * :P
- */
- return $"The thumbprint does not match. {_thumbprint} {(char)0x2260} {ThumbprintToMatch}.";
- case StatusValue.TrustProviderError:
- var ex = new Win32Exception(_trustProviderErrorCode);
- return $"The trust provider returned an error. {ex.Message}";
- case StatusValue.UnhandledException:
- return $"An unhandled exception occurred. {Exception.Message}";
- default:
- return "The status is unknown.";
- }
- }
- }
+ public string GetStatusMessage()
+ {
+ // ReSharper disable once SwitchStatementMissingSomeCases
+ switch (Status)
+ {
+ case StatusValue.Verified:
+ return "The file was verified successfully.";
+ case StatusValue.FileNotExist:
+ return "The specified file does not exist.";
+ case StatusValue.FileEmpty:
+ return "The specified file is empty.";
+ case StatusValue.NoSignature:
+ return "The specified file is not digitally signed.";
+ case StatusValue.NoThumbprintToMatch:
+ return "A thumbprint match is required but no thumbprint to match against was specified.";
+ case StatusValue.ThumbprintNotMatch:
+ /* (char)0x2260 == the "not equal to" symbol (which I cannot print in here without changing the encoding of the file)
+ * Fancy...
+ *
+ * "<>" is fiarly cryptic for non-programers
+ * So is "!="
+ * "=/=" gets the job done, no?
+ * What about plain old English (or localized value): X is not equal to Y?
+ * :P
+ */
+ return $"The thumbprint does not match. {_thumbprint} {(char) 0x2260} {ThumbprintToMatch}.";
+ case StatusValue.TrustProviderError:
+ var ex = new Win32Exception(_trustProviderErrorCode);
+ return $"The trust provider returned an error. {ex.Message}";
+ case StatusValue.UnhandledException:
+ return $"An unhandled exception occurred. {Exception.Message}";
+ default:
+ return "The status is unknown.";
+ }
+ }
private string _thumbprint;
- internal string ThumbprintToMatch { get; set;}
+ internal string ThumbprintToMatch { get; set;}
private int _trustProviderErrorCode;
@@ -293,4 +292,5 @@ namespace mRemoteNG.Tools
}
#endregion
}
-}
\ No newline at end of file
+}
+#endif
\ No newline at end of file
diff --git a/mRemoteV1/Tools/ConnectionsTreeToMenuItemsConverter.cs b/mRemoteV1/Tools/ConnectionsTreeToMenuItemsConverter.cs
index 0fb2db78..46347eea 100644
--- a/mRemoteV1/Tools/ConnectionsTreeToMenuItemsConverter.cs
+++ b/mRemoteV1/Tools/ConnectionsTreeToMenuItemsConverter.cs
@@ -5,7 +5,6 @@ using System.Windows.Forms;
using mRemoteNG.App;
using mRemoteNG.Connection;
using mRemoteNG.Container;
-using mRemoteNG.Messages;
using mRemoteNG.Tree;
@@ -31,7 +30,7 @@ namespace mRemoteNG.Tools
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("frmMain.AddNodeToMenu() failed", ex, MessageClass.ErrorMsg, true);
+ Runtime.MessageCollector.AddExceptionMessage("frmMain.AddNodeToMenu() failed", ex);
}
return dropDownList;
}
diff --git a/mRemoteV1/Tools/IeBrowserEmulation.cs b/mRemoteV1/Tools/IeBrowserEmulation.cs
index 5de20ca8..11a0fe10 100644
--- a/mRemoteV1/Tools/IeBrowserEmulation.cs
+++ b/mRemoteV1/Tools/IeBrowserEmulation.cs
@@ -4,7 +4,6 @@ using System.IO;
using System.Security.AccessControl;
using Microsoft.Win32;
using mRemoteNG.App;
-using mRemoteNG.Messages;
namespace mRemoteNG.Tools
{
@@ -18,36 +17,38 @@ namespace mRemoteNG.Tools
if (Environment.Is64BitOperatingSystem)
{
- using (RegistryKey key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
+ using (var key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
{
key?.SetValue(appName, value, RegistryValueKind.DWord);
}
}
- using (RegistryKey key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
+ using (var key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
{
key?.SetValue(appName, value, RegistryValueKind.DWord);
}
}
+#if PORTABLE
private static void DeleteBrowserFeatureControlKey(string feature, string appName)
{
if (Environment.Is64BitOperatingSystem)
{
- using (RegistryKey key = Registry.CurrentUser.OpenSubKey(string.Concat("Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
+ using (var key = Registry.CurrentUser.OpenSubKey(string.Concat("Software\\Wow6432Node\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
{
key?.DeleteValue(appName);
}
}
- using (RegistryKey key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
+ using (var key = Registry.CurrentUser.CreateSubKey(string.Concat("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\", feature), RegistryKeyPermissionCheck.ReadWriteSubTree))
{
key?.DeleteValue(appName);
}
}
+#endif
private static void SetBrowserFeatureControl()
{
@@ -56,7 +57,7 @@ namespace mRemoteNG.Tools
// FeatureControl settings are per-process
var fileName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
- // make the control is not running inside Visual Studio Designer
+ // make sure the control is not running inside Visual Studio Designer
if (string.Compare(fileName, "devenv.exe", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(fileName, "XDesProc.exe", StringComparison.OrdinalIgnoreCase) == 0)
{
return;
@@ -89,6 +90,7 @@ namespace mRemoteNG.Tools
SetBrowserFeatureControlKey("FEATURE_XMLHTTP", fileName, 1);
}
+#if PORTABLE
private static void DeleteBrowserFeatureControl()
{
// http://msdn.microsoft.com/en-us/library/ee330720(v=vs.85).aspx
@@ -96,7 +98,7 @@ namespace mRemoteNG.Tools
// FeatureControl settings are per-process
var fileName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
- // make the control is not running inside Visual Studio Designer
+ // make sure the control is not running inside Visual Studio Designer
if (string.Compare(fileName, "devenv.exe", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(fileName, "XDesProc.exe", StringComparison.OrdinalIgnoreCase) == 0)
{
return;
@@ -128,6 +130,7 @@ namespace mRemoteNG.Tools
DeleteBrowserFeatureControlKey("FEATURE_WINDOW_RESTRICTIONS", fileName);
DeleteBrowserFeatureControlKey("FEATURE_XMLHTTP", fileName);
}
+#endif
private static uint GetBrowserEmulationMode()
{
@@ -136,7 +139,7 @@ namespace mRemoteNG.Tools
var browserVersion = 9;
// default to IE9.
- using (RegistryKey ieKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Internet Explorer", RegistryKeyPermissionCheck.ReadSubTree, RegistryRights.QueryValues))
+ using (var ieKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Internet Explorer", RegistryKeyPermissionCheck.ReadSubTree, RegistryRights.QueryValues))
{
if (ieKey != null)
{
@@ -202,7 +205,7 @@ namespace mRemoteNG.Tools
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("IeBrowserEmulation.Register() failed.", ex, MessageClass.ErrorMsg, true);
+ Runtime.MessageCollector.AddExceptionMessage("IeBrowserEmulation.Register() failed.", ex);
}
}
@@ -216,7 +219,7 @@ namespace mRemoteNG.Tools
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("IeBrowserEmulation.Unregister() failed.", ex, MessageClass.ErrorMsg, true);
+ Runtime.MessageCollector.AddExceptionMessage("IeBrowserEmulation.Unregister() failed.", ex);
}
#endif
}
diff --git a/mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs b/mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs
index 68689dfb..4854b5cc 100644
--- a/mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs
+++ b/mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs
@@ -48,6 +48,7 @@ namespace mRemoteNG.UI.Controls
{
InitializeComponent();
SetupConnectionTreeView();
+ UseOverlays = false;
}
#region ConnectionTree Setup
diff --git a/mRemoteV1/UI/Controls/ExternalToolsToolStrip.cs b/mRemoteV1/UI/Controls/ExternalToolsToolStrip.cs
index 9c2d31b8..e7ba9d37 100644
--- a/mRemoteV1/UI/Controls/ExternalToolsToolStrip.cs
+++ b/mRemoteV1/UI/Controls/ExternalToolsToolStrip.cs
@@ -116,13 +116,14 @@ namespace mRemoteNG.UI.Controls
}
#endregion
-
+ // CodeAyalysis doesn't like null propagation
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2213:DisposableFieldsShouldBeDisposed", MessageId = "components")]
protected override void Dispose(bool disposing)
{
try
{
- if (disposing)
- components?.Dispose();
+ if (!disposing) return;
+ components?.Dispose();
}
finally
{
diff --git a/mRemoteV1/UI/Controls/NewPasswordWithVerification.cs b/mRemoteV1/UI/Controls/NewPasswordWithVerification.cs
index 014fd7df..16b5faa8 100644
--- a/mRemoteV1/UI/Controls/NewPasswordWithVerification.cs
+++ b/mRemoteV1/UI/Controls/NewPasswordWithVerification.cs
@@ -59,9 +59,9 @@ namespace mRemoteNG.UI.Controls
private bool Verify()
{
- return secureTextBox1.SecureString.Length == secureTextBox2.SecureString.Length &&
- secureTextBox1.SecureString.ConvertToUnsecureString() ==
- secureTextBox2.SecureString.ConvertToUnsecureString();
+ return secureTextBox1.SecString.Length == secureTextBox2.SecString.Length &&
+ secureTextBox1.SecString.ConvertToUnsecureString() ==
+ secureTextBox2.SecString.ConvertToUnsecureString();
}
private void TogglePasswordMatchIndicator(bool passwordsMatch)
@@ -85,7 +85,7 @@ namespace mRemoteNG.UI.Controls
if (Verify() && !PasswordsMatch)
{
PasswordsMatch = true;
- SecureString = secureTextBox1.SecureString;
+ SecureString = secureTextBox1.SecString;
RaiseVerifiedEvent();
}
else
diff --git a/mRemoteV1/UI/Controls/QuickConnectToolStrip.cs b/mRemoteV1/UI/Controls/QuickConnectToolStrip.cs
index 2961dbbd..48f74b8e 100644
--- a/mRemoteV1/UI/Controls/QuickConnectToolStrip.cs
+++ b/mRemoteV1/UI/Controls/QuickConnectToolStrip.cs
@@ -8,6 +8,7 @@ using mRemoteNG.Connection.Protocol;
using mRemoteNG.Container;
using mRemoteNG.Themes;
using mRemoteNG.Tools;
+using mRemoteNG.UI.Forms;
namespace mRemoteNG.UI.Controls
{
@@ -20,15 +21,10 @@ namespace mRemoteNG.UI.Controls
private ContextMenuStrip _mnuQuickConnectProtocol;
private QuickConnectComboBox _cmbQuickConnect;
private ContextMenuStrip _mnuConnections;
- private readonly IConnectionInitiator _connectionInitiator;
- public QuickConnectToolStrip(IConnectionInitiator connectionInitiator)
+ public QuickConnectToolStrip()
{
- if (connectionInitiator == null)
- throw new ArgumentNullException(nameof(connectionInitiator));
-
- _connectionInitiator = connectionInitiator;
Initialize();
ApplyThemes();
PopulateQuickConnectProtocolMenu();
@@ -169,7 +165,7 @@ namespace mRemoteNG.UI.Controls
return;
}
_cmbQuickConnect.Add(connectionInfo);
- _connectionInitiator.OpenConnection(connectionInfo, ConnectionInfo.Force.DoNotJump);
+ FrmMain.Default._connectionInitiator.OpenConnection(connectionInfo, ConnectionInfo.Force.DoNotJump);
}
catch (Exception ex)
{
@@ -219,17 +215,19 @@ namespace mRemoteNG.UI.Controls
var tag = ((ToolStripMenuItem)sender).Tag as ConnectionInfo;
if (tag != null)
{
- _connectionInitiator.OpenConnection(tag);
+ FrmMain.Default._connectionInitiator.OpenConnection(tag);
}
}
#endregion
+ // CodeAyalysis doesn't like null propagation
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2213:DisposableFieldsShouldBeDisposed", MessageId = "components")]
protected override void Dispose(bool disposing)
{
try
{
- if (disposing)
- components?.Dispose();
+ if (!disposing) return;
+ components?.Dispose();
}
finally
{
diff --git a/mRemoteV1/UI/Controls/SecureTextBox.Designer.cs b/mRemoteV1/UI/Controls/SecureTextBox.Designer.cs
index 67bdcf78..c0e72fce 100644
--- a/mRemoteV1/UI/Controls/SecureTextBox.Designer.cs
+++ b/mRemoteV1/UI/Controls/SecureTextBox.Designer.cs
@@ -11,13 +11,21 @@
/// Clean up any resources being used.
///
/// true if managed resources should be disposed; otherwise, false.
+ // CodeAnalysis doesn't like null propagation, and possibly IDisposable auto properties (like SecString).
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2213:DisposableFieldsShouldBeDisposed", MessageId = "components")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2213:DisposableFieldsShouldBeDisposed", MessageId = "k__BackingField")]
protected override void Dispose(bool disposing)
{
- if (disposing && (components != null))
+ try
{
- components.Dispose();
+ if (!disposing) return;
+ components?.Dispose();
+ SecString?.Dispose();
+ }
+ finally
+ {
+ base.Dispose(disposing);
}
- base.Dispose(disposing);
}
#region Component Designer generated code
diff --git a/mRemoteV1/UI/Controls/SecureTextBox.cs b/mRemoteV1/UI/Controls/SecureTextBox.cs
index 10ec694d..3af29b64 100644
--- a/mRemoteV1/UI/Controls/SecureTextBox.cs
+++ b/mRemoteV1/UI/Controls/SecureTextBox.cs
@@ -7,7 +7,7 @@ namespace mRemoteNG.UI.Controls
{
public partial class SecureTextBox : TextBox
{
- public SecureString SecureString { get; private set; } = new SecureString();
+ public SecureString SecString { get; private set; } = new SecureString();
public SecureTextBox()
{
@@ -17,7 +17,7 @@ namespace mRemoteNG.UI.Controls
private void SecureTextBox_TextChanged(object sender, System.EventArgs e)
{
- SecureString = Text.ConvertToSecureString();
+ SecString = Text.ConvertToSecureString();
}
}
}
\ No newline at end of file
diff --git a/mRemoteV1/UI/Forms/ExportForm.Designer.cs b/mRemoteV1/UI/Forms/ExportForm.Designer.cs
index eb040fa4..928ce9bb 100644
--- a/mRemoteV1/UI/Forms/ExportForm.Designer.cs
+++ b/mRemoteV1/UI/Forms/ExportForm.Designer.cs
@@ -18,6 +18,7 @@ namespace mRemoteNG.UI.Forms
this.txtFileName = new System.Windows.Forms.TextBox();
this.btnBrowse = new System.Windows.Forms.Button();
this.grpProperties = new System.Windows.Forms.GroupBox();
+ this.chkAssignedCredential = new System.Windows.Forms.CheckBox();
this.grpFile = new System.Windows.Forms.GroupBox();
this.lblFileFormat = new System.Windows.Forms.Label();
this.lblFileName = new System.Windows.Forms.Label();
@@ -131,6 +132,7 @@ namespace mRemoteNG.UI.Forms
//
// grpProperties
//
+ this.grpProperties.Controls.Add(this.chkAssignedCredential);
this.grpProperties.Controls.Add(this.lblUncheckProperties);
this.grpProperties.Controls.Add(this.chkInheritance);
this.grpProperties.Controls.Add(this.chkUsername);
@@ -143,6 +145,18 @@ namespace mRemoteNG.UI.Forms
this.grpProperties.TabStop = false;
this.grpProperties.Text = "Export Properties";
//
+ // chkAssignedCredential
+ //
+ this.chkAssignedCredential.AutoSize = true;
+ this.chkAssignedCredential.Checked = true;
+ this.chkAssignedCredential.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.chkAssignedCredential.Location = new System.Drawing.Point(143, 32);
+ this.chkAssignedCredential.Name = "chkAssignedCredential";
+ this.chkAssignedCredential.Size = new System.Drawing.Size(119, 17);
+ this.chkAssignedCredential.TabIndex = 5;
+ this.chkAssignedCredential.Text = "Assigned Credential";
+ this.chkAssignedCredential.UseVisualStyleBackColor = true;
+ //
// grpFile
//
this.grpFile.Controls.Add(this.lblFileFormat);
@@ -183,6 +197,7 @@ namespace mRemoteNG.UI.Forms
this.cboFileFormat.Name = "cboFileFormat";
this.cboFileFormat.Size = new System.Drawing.Size(294, 21);
this.cboFileFormat.TabIndex = 4;
+ this.cboFileFormat.SelectedIndexChanged += new System.EventHandler(this.cboFileformat_SelectedIndexChanged);
//
// grpItems
//
@@ -299,5 +314,7 @@ namespace mRemoteNG.UI.Forms
private System.Windows.Forms.RadioButton rdoExportSelectedFolder;
private System.Windows.Forms.RadioButton rdoExportEverything;
#endregion
- }
+
+ private CheckBox chkAssignedCredential;
+ }
}
diff --git a/mRemoteV1/UI/Forms/ExportForm.cs b/mRemoteV1/UI/Forms/ExportForm.cs
index a7a74c3b..2a4a5c79 100644
--- a/mRemoteV1/UI/Forms/ExportForm.cs
+++ b/mRemoteV1/UI/Forms/ExportForm.cs
@@ -47,20 +47,13 @@ namespace mRemoteNG.UI.Forms
{
get
{
- if (rdoExportSelectedFolder.Checked)
- {
+ if (rdoExportSelectedFolder.Checked)
return ExportScope.SelectedFolder;
- }
- else if (rdoExportSelectedConnection.Checked)
- {
- return ExportScope.SelectedConnection;
- }
- else
- {
- return ExportScope.Everything;
- }
+ if (rdoExportSelectedConnection.Checked)
+ return ExportScope.SelectedConnection;
+ return ExportScope.Everything;
}
- set
+ set
{
switch (value)
{
@@ -142,7 +135,13 @@ namespace mRemoteNG.UI.Forms
chkDomain.Checked = value;
}
}
-
+
+ public bool IncludeAssignedCredential
+ {
+ get { return chkAssignedCredential.Checked; }
+ set { chkAssignedCredential.Checked = value; }
+ }
+
public bool IncludeInheritance
{
get
@@ -160,19 +159,15 @@ namespace mRemoteNG.UI.Forms
public ExportForm()
{
InitializeComponent();
-
Runtime.FontOverride(this);
-
SelectedFolder = null;
SelectedConnection = null;
-
btnOK.Enabled = false;
}
#endregion
#region Private Methods
#region Event Handlers
-
private void ExportForm_Load(object sender, EventArgs e)
{
cboFileFormat.Items.Clear();
@@ -225,6 +220,24 @@ namespace mRemoteNG.UI.Forms
{
DialogResult = DialogResult.Cancel;
}
+
+ private void cboFileformat_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (SaveFormat == ConnectionsSaver.Format.mRXML)
+ {
+ chkUsername.Enabled = false;
+ chkPassword.Enabled = false;
+ chkDomain.Enabled = false;
+ chkAssignedCredential.Enabled = true;
+ }
+ else
+ {
+ chkUsername.Enabled = true;
+ chkPassword.Enabled = true;
+ chkDomain.Enabled = true;
+ chkAssignedCredential.Enabled = false;
+ }
+ }
#endregion
private void ApplyLanguage()
@@ -245,6 +258,7 @@ namespace mRemoteNG.UI.Forms
chkUsername.Text = Language.strCheckboxUsername;
chkPassword.Text = Language.strCheckboxPassword;
chkDomain.Text = Language.strCheckboxDomain;
+ chkAssignedCredential.Text = Language.strAssignedCredential;
chkInheritance.Text = Language.strCheckboxInheritance;
lblUncheckProperties.Text = Language.strUncheckProperties;
diff --git a/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.cs b/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.cs
index d0a263ee..832dc54e 100644
--- a/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.cs
+++ b/mRemoteV1/UI/Forms/OptionsPages/AdvancedPage.cs
@@ -132,7 +132,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
{
MessageBox.Show(Language.strErrorCouldNotLaunchPutty, Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
- Runtime.MessageCollector.AddExceptionMessage(Language.strErrorCouldNotLaunchPutty, ex, logOnly: true);
+ Runtime.MessageCollector.AddExceptionMessage(Language.strErrorCouldNotLaunchPutty, ex);
}
}
diff --git a/mRemoteV1/UI/Forms/frmMain.Designer.cs b/mRemoteV1/UI/Forms/frmMain.Designer.cs
index a14cbf48..50811327 100644
--- a/mRemoteV1/UI/Forms/frmMain.Designer.cs
+++ b/mRemoteV1/UI/Forms/frmMain.Designer.cs
@@ -1,3 +1,5 @@
+using mRemoteNG.UI.Controls;
+
namespace mRemoteNG.UI.Forms
{
public partial class FrmMain : System.Windows.Forms.Form
@@ -36,6 +38,12 @@ namespace mRemoteNG.UI.Forms
this.mMenSep3 = new System.Windows.Forms.ToolStripSeparator();
this.tsContainer = new System.Windows.Forms.ToolStripContainer();
this.tmrAutoSave = new System.Windows.Forms.Timer(this.components);
+ this._externalToolsToolStrip = new mRemoteNG.UI.Controls.ExternalToolsToolStrip();
+ this._quickConnectToolStrip = new mRemoteNG.UI.Controls.QuickConnectToolStrip();
+ this.mainFileMenu1 = new mRemoteNG.UI.Menu.MainFileMenu();
+ this.viewMenu1 = new mRemoteNG.UI.Menu.ViewMenu();
+ this.toolsMenu1 = new mRemoteNG.UI.Menu.ToolsMenu();
+ this.helpMenu1 = new mRemoteNG.UI.Menu.HelpMenu();
this.msMain.SuspendLayout();
this.tsContainer.ContentPanel.SuspendLayout();
this.tsContainer.TopToolStripPanel.SuspendLayout();
@@ -50,23 +58,48 @@ namespace mRemoteNG.UI.Forms
this.pnlDock.DockRightPortion = 230D;
this.pnlDock.DocumentStyle = WeifenLuo.WinFormsUI.Docking.DocumentStyle.DockingSdi;
this.pnlDock.Location = new System.Drawing.Point(0, 0);
+ this.pnlDock.Margin = new System.Windows.Forms.Padding(4);
this.pnlDock.Name = "pnlDock";
- this.pnlDock.Size = new System.Drawing.Size(966, 449);
+ this.pnlDock.Size = new System.Drawing.Size(1288, 594);
this.pnlDock.TabIndex = 13;
this.pnlDock.ActiveDocumentChanged += new System.EventHandler(this.pnlDock_ActiveDocumentChanged);
//
// msMain
//
- this.msMain.Dock = System.Windows.Forms.DockStyle.None;
this.msMain.GripMargin = new System.Windows.Forms.Padding(0);
+ this.msMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mainFileMenu1,
+ this.viewMenu1,
+ this.toolsMenu1,
+ this.helpMenu1});
this.msMain.Location = new System.Drawing.Point(3, 0);
this.msMain.Name = "msMain";
this.msMain.Padding = new System.Windows.Forms.Padding(2, 2, 0, 2);
- this.msMain.Size = new System.Drawing.Size(269, 24);
+ this.msMain.Size = new System.Drawing.Size(268, 24);
this.msMain.Stretch = false;
this.msMain.TabIndex = 16;
this.msMain.Text = "Main Toolbar";
//
+ // mMenFile
+ //
+ this.mMenFile.Name = "mMenFile";
+ this.mMenFile.Size = new System.Drawing.Size(32, 19);
+ //
+ // mMenView
+ //
+ this.mMenView.Name = "mMenView";
+ this.mMenView.Size = new System.Drawing.Size(32, 19);
+ //
+ // mMenTools
+ //
+ this.mMenTools.Name = "mMenTools";
+ this.mMenTools.Size = new System.Drawing.Size(32, 19);
+ //
+ // mMenInfo
+ //
+ this.mMenInfo.Name = "mMenInfo";
+ this.mMenInfo.Size = new System.Drawing.Size(32, 19);
+ //
// mMenSep3
//
this.mMenSep3.Name = "mMenSep3";
@@ -78,16 +111,20 @@ namespace mRemoteNG.UI.Forms
// tsContainer.ContentPanel
//
this.tsContainer.ContentPanel.Controls.Add(this.pnlDock);
- this.tsContainer.ContentPanel.Size = new System.Drawing.Size(966, 449);
+ this.tsContainer.ContentPanel.Margin = new System.Windows.Forms.Padding(4);
+ this.tsContainer.ContentPanel.Size = new System.Drawing.Size(1288, 594);
this.tsContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.tsContainer.Location = new System.Drawing.Point(0, 0);
+ this.tsContainer.Margin = new System.Windows.Forms.Padding(4);
this.tsContainer.Name = "tsContainer";
- this.tsContainer.Size = new System.Drawing.Size(966, 523);
+ this.tsContainer.Size = new System.Drawing.Size(1288, 644);
this.tsContainer.TabIndex = 17;
this.tsContainer.Text = "ToolStripContainer1";
//
// tsContainer.TopToolStripPanel
//
+ this.tsContainer.TopToolStripPanel.Controls.Add(this._externalToolsToolStrip);
+ this.tsContainer.TopToolStripPanel.Controls.Add(this._quickConnectToolStrip);
this.tsContainer.TopToolStripPanel.Controls.Add(this.msMain);
//
// tmrAutoSave
@@ -95,14 +132,70 @@ namespace mRemoteNG.UI.Forms
this.tmrAutoSave.Interval = 10000;
this.tmrAutoSave.Tick += new System.EventHandler(this.tmrAutoSave_Tick);
//
- // frmMain
+ // _externalToolsToolStrip
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this._externalToolsToolStrip.BackColor = System.Drawing.SystemColors.Control;
+ this._externalToolsToolStrip.ForeColor = System.Drawing.SystemColors.ControlText;
+ this._externalToolsToolStrip.Location = new System.Drawing.Point(271, 0);
+ this._externalToolsToolStrip.MaximumSize = new System.Drawing.Size(0, 25);
+ this._externalToolsToolStrip.Name = "_externalToolsToolStrip";
+ this._externalToolsToolStrip.Size = new System.Drawing.Size(111, 25);
+ this._externalToolsToolStrip.TabIndex = 17;
+ //
+ // _quickConnectToolStrip
+ //
+ this._quickConnectToolStrip.BackColor = System.Drawing.SystemColors.Control;
+ this._quickConnectToolStrip.ForeColor = System.Drawing.SystemColors.ControlText;
+ this._quickConnectToolStrip.Location = new System.Drawing.Point(3, 25);
+ this._quickConnectToolStrip.MaximumSize = new System.Drawing.Size(0, 25);
+ this._quickConnectToolStrip.Name = "_quickConnectToolStrip";
+ this._quickConnectToolStrip.Size = new System.Drawing.Size(364, 25);
+ this._quickConnectToolStrip.TabIndex = 18;
+ //
+ // mainFileMenu1
+ //
+ this.mainFileMenu1.ConnectionInitiator = null;
+ this.mainFileMenu1.Name = "mMenFile";
+ this.mainFileMenu1.Size = new System.Drawing.Size(37, 20);
+ this.mainFileMenu1.Text = "&File";
+ this.mainFileMenu1.TreeWindow = null;
+ this.mainFileMenu1.DropDownOpening += new System.EventHandler(this.mainFileMenu1_DropDownOpening);
+ //
+ // viewMenu1
+ //
+ this.viewMenu1.FullscreenHandler = null;
+ this.viewMenu1.MainForm = null;
+ this.viewMenu1.Name = "mMenView";
+ this.viewMenu1.Size = new System.Drawing.Size(44, 20);
+ this.viewMenu1.Text = "&View";
+ this.viewMenu1.TsExternalTools = null;
+ this.viewMenu1.TsQuickConnect = null;
+ this.viewMenu1.DropDownOpening += new System.EventHandler(this.ViewMenu_Opening);
+ //
+ // toolsMenu1
+ //
+ this.toolsMenu1.CredentialProviderCatalog = null;
+ this.toolsMenu1.MainForm = null;
+ this.toolsMenu1.Name = "mMenTools";
+ this.toolsMenu1.Size = new System.Drawing.Size(47, 20);
+ this.toolsMenu1.Text = "&Tools";
+ //
+ // helpMenu1
+ //
+ this.helpMenu1.Name = "mMenInfo";
+ this.helpMenu1.Size = new System.Drawing.Size(44, 20);
+ this.helpMenu1.Text = "&Help";
+ this.helpMenu1.TextDirection = System.Windows.Forms.ToolStripTextDirection.Horizontal;
+ //
+ // FrmMain
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(966, 523);
+ this.ClientSize = new System.Drawing.Size(1288, 644);
this.Controls.Add(this.tsContainer);
this.Icon = global::mRemoteNG.Resources.mRemote_Icon;
this.MainMenuStrip = this.msMain;
+ this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "FrmMain";
this.Opacity = 0D;
this.Text = "mRemoteNG";
@@ -132,5 +225,11 @@ namespace mRemoteNG.UI.Forms
internal System.Windows.Forms.Timer tmrAutoSave;
internal System.Windows.Forms.ToolStripSeparator mMenSep3;
private System.ComponentModel.IContainer components;
+ private Menu.MainFileMenu mainFileMenu1;
+ private Menu.ViewMenu viewMenu1;
+ private Menu.ToolsMenu toolsMenu1;
+ private Menu.HelpMenu helpMenu1;
+ internal mRemoteNG.UI.Controls.QuickConnectToolStrip _quickConnectToolStrip;
+ internal mRemoteNG.UI.Controls.ExternalToolsToolStrip _externalToolsToolStrip;
}
}
diff --git a/mRemoteV1/UI/Forms/frmMain.cs b/mRemoteV1/UI/Forms/frmMain.cs
index 049ac048..9e1a388f 100644
--- a/mRemoteV1/UI/Forms/frmMain.cs
+++ b/mRemoteV1/UI/Forms/frmMain.cs
@@ -20,12 +20,12 @@ using mRemoteNG.Credential;
using mRemoteNG.Messages;
using mRemoteNG.Themes;
using mRemoteNG.Tools;
-using mRemoteNG.UI.Controls;
using mRemoteNG.UI.Menu;
using mRemoteNG.UI.TaskDialog;
using mRemoteNG.UI.Window;
using Microsoft.Win32;
using WeifenLuo.WinFormsUI.Docking;
+
// ReSharper disable MemberCanBePrivate.Global
namespace mRemoteNG.UI.Forms
@@ -44,9 +44,8 @@ namespace mRemoteNG.UI.Forms
private readonly ScreenSelectionSystemMenu _screenSystemMenu;
private ConnectionInfo _selectedConnection;
internal FullscreenHandler _fullscreen { get; set; }
- private readonly QuickConnectToolStrip _quickConnectToolStrip;
- private readonly ExternalToolsToolStrip _externalToolsToolStrip;
- private readonly IConnectionInitiator _connectionInitiator = new ConnectionInitiator();
+
+ internal readonly IConnectionInitiator _connectionInitiator = new ConnectionInitiator();
private readonly string _credentialFilePath = Path.Combine(CredentialsFileInfo.CredentialsPath, CredentialsFileInfo.CredentialsFile);
@@ -57,8 +56,7 @@ namespace mRemoteNG.UI.Forms
_fullscreen = new FullscreenHandler(this);
pnlDock.Theme = new VS2012LightTheme();
_screenSystemMenu = new ScreenSelectionSystemMenu(this);
- _quickConnectToolStrip = new QuickConnectToolStrip(_connectionInitiator);
- _externalToolsToolStrip = new ExternalToolsToolStrip();
+
}
static FrmMain()
@@ -136,13 +134,7 @@ namespace mRemoteNG.UI.Forms
Startup.Instance.InitializeProgram(messageCollector);
- msMain.Items.AddRange(new ToolStripItem[]
- {
- new MainFileMenu(Windows.TreeForm, _connectionInitiator),
- new ViewMenu(_externalToolsToolStrip, _quickConnectToolStrip, _fullscreen, this),
- new ToolsMenu(this, Runtime.CredentialProviderCatalog),
- new HelpMenu()
- });
+ SetMenuDependencies();
var settingsLoader = new SettingsLoader(this, messageCollector, _quickConnectToolStrip, _externalToolsToolStrip);
settingsLoader.LoadSettings();
@@ -173,6 +165,20 @@ namespace mRemoteNG.UI.Forms
Opacity = 1;
}
+ private void SetMenuDependencies()
+ {
+ mainFileMenu1.TreeWindow = Windows.TreeForm;
+ mainFileMenu1.ConnectionInitiator = _connectionInitiator;
+
+ viewMenu1.TsExternalTools = _externalToolsToolStrip;
+ viewMenu1.TsQuickConnect = _quickConnectToolStrip;
+ viewMenu1.FullscreenHandler = _fullscreen;
+ viewMenu1.MainForm = this;
+
+ toolsMenu1.MainForm = this;
+ toolsMenu1.CredentialProviderCatalog = Runtime.CredentialProviderCatalog;
+ }
+
private void ApplyThemes()
{
pnlDock.DockBackColor = ThemeManager.ActiveTheme.WindowBackgroundColor;
@@ -550,5 +556,15 @@ namespace mRemoteNG.UI.Forms
}
}
#endregion
+
+ private void ViewMenu_Opening(object sender, EventArgs e)
+ {
+ viewMenu1.mMenView_DropDownOpening(sender, e);
+ }
+
+ private void mainFileMenu1_DropDownOpening(object sender, EventArgs e)
+ {
+ mainFileMenu1.mMenFile_DropDownOpening(sender, e);
+ }
}
}
\ No newline at end of file
diff --git a/mRemoteV1/UI/Forms/frmMain.resx b/mRemoteV1/UI/Forms/frmMain.resx
index e8299835..a5d8732f 100644
--- a/mRemoteV1/UI/Forms/frmMain.resx
+++ b/mRemoteV1/UI/Forms/frmMain.resx
@@ -118,24 +118,15 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ 375, 17
+
+
+ 197, 17
+
+
17, 17
-
- 112, 17
-
-
- 591, 17
-
-
- 724, 17
-
-
- 249, 17
-
-
- 447, 17
-
- 891, 17
+ 470, 17
\ No newline at end of file
diff --git a/mRemoteV1/UI/Menu/MainFileMenu.cs b/mRemoteV1/UI/Menu/MainFileMenu.cs
index 60e39ae1..ebdb714a 100644
--- a/mRemoteV1/UI/Menu/MainFileMenu.cs
+++ b/mRemoteV1/UI/Menu/MainFileMenu.cs
@@ -35,18 +35,11 @@ namespace mRemoteNG.UI.Menu
private ToolStripMenuItem _mMenFileImport;
private ToolStripMenuItem _mMenReconnectAll;
- private readonly ConnectionTreeWindow _connectionTreeWindow;
- private readonly IConnectionInitiator _connectionInitiator;
+ public ConnectionTreeWindow TreeWindow { get; set; }
+ public IConnectionInitiator ConnectionInitiator { get; set; }
- public MainFileMenu(ConnectionTreeWindow connectionTreeWindow, IConnectionInitiator connectionInitiator)
+ public MainFileMenu()
{
- if (connectionTreeWindow == null)
- throw new ArgumentNullException(nameof(connectionTreeWindow));
- if (connectionInitiator == null)
- throw new ArgumentNullException(nameof(connectionInitiator));
-
- _connectionTreeWindow = connectionTreeWindow;
- _connectionInitiator = connectionInitiator;
Initialize();
}
@@ -100,7 +93,7 @@ namespace mRemoteNG.UI.Menu
Name = "mMenFile";
Size = new System.Drawing.Size(37, 20);
Text = Language.strMenuFile;
- DropDownOpening += mMenFile_DropDownOpening;
+ //DropDownOpening += mMenFile_DropDownOpening;
//
// mMenFileNewConnection
//
@@ -263,9 +256,9 @@ namespace mRemoteNG.UI.Menu
}
#region File
- private void mMenFile_DropDownOpening(object sender, EventArgs e)
+ internal void mMenFile_DropDownOpening(object sender, EventArgs e)
{
- var selectedNodeType = _connectionTreeWindow.SelectedNode?.GetTreeNodeType();
+ var selectedNodeType = TreeWindow.SelectedNode?.GetTreeNodeType();
// ReSharper disable once SwitchStatementMissingSomeCases
switch (selectedNodeType)
{
@@ -335,13 +328,13 @@ namespace mRemoteNG.UI.Menu
private void mMenFileNewConnection_Click(object sender, EventArgs e)
{
- _connectionTreeWindow.ConnectionTree.AddConnection();
+ TreeWindow.ConnectionTree.AddConnection();
Runtime.SaveConnectionsAsync();
}
private void mMenFileNewFolder_Click(object sender, EventArgs e)
{
- _connectionTreeWindow.ConnectionTree.AddFolder();
+ TreeWindow.ConnectionTree.AddFolder();
Runtime.SaveConnectionsAsync();
}
@@ -387,19 +380,19 @@ namespace mRemoteNG.UI.Menu
private void mMenFileDelete_Click(object sender, EventArgs e)
{
- _connectionTreeWindow.ConnectionTree.DeleteSelectedNode();
+ TreeWindow.ConnectionTree.DeleteSelectedNode();
Runtime.SaveConnectionsAsync();
}
private void mMenFileRename_Click(object sender, EventArgs e)
{
- _connectionTreeWindow.ConnectionTree.RenameSelectedNode();
+ TreeWindow.ConnectionTree.RenameSelectedNode();
Runtime.SaveConnectionsAsync();
}
private void mMenFileDuplicate_Click(object sender, EventArgs e)
{
- _connectionTreeWindow.ConnectionTree.DuplicateSelectedNode();
+ TreeWindow.ConnectionTree.DuplicateSelectedNode();
Runtime.SaveConnectionsAsync();
}
@@ -425,7 +418,7 @@ namespace mRemoteNG.UI.Menu
foreach (var i in icList)
{
i.Protocol.Close();
- _connectionInitiator.OpenConnection(i.Info, ConnectionInfo.Force.DoNotJump);
+ ConnectionInitiator.OpenConnection(i.Info, ConnectionInfo.Force.DoNotJump);
}
// throw it on the garbage collector
@@ -436,7 +429,7 @@ namespace mRemoteNG.UI.Menu
private void mMenFileImportFromFile_Click(object sender, EventArgs e)
{
- var selectedNode = _connectionTreeWindow.SelectedNode;
+ var selectedNode = TreeWindow.SelectedNode;
ContainerInfo importDestination;
if (selectedNode == null)
importDestination = Runtime.ConnectionTreeModel.RootNodes.First();
diff --git a/mRemoteV1/UI/Menu/ToolsMenu.cs b/mRemoteV1/UI/Menu/ToolsMenu.cs
index 12eb4d90..3a55017e 100644
--- a/mRemoteV1/UI/Menu/ToolsMenu.cs
+++ b/mRemoteV1/UI/Menu/ToolsMenu.cs
@@ -17,13 +17,12 @@ namespace mRemoteNG.UI.Menu
private ToolStripMenuItem _mMenToolsUvncsc;
private ToolStripMenuItem _mMenToolsComponentsCheck;
private ToolStripMenuItem _credentialManagerToolStripMenuItem;
- private readonly ICredentialRepositoryList _credentialProviderCatalog;
- private readonly Form _form;
- public ToolsMenu(Form form, ICredentialRepositoryList credentialProviderCatalog)
+ public Form MainForm { get; set; }
+ public ICredentialRepositoryList CredentialProviderCatalog { get; set; }
+
+ public ToolsMenu()
{
- _form = form;
- _credentialProviderCatalog = credentialProviderCatalog;
Initialize();
}
@@ -122,14 +121,15 @@ namespace mRemoteNG.UI.Menu
{
var pages = new UserControl[]
{
- new CredentialListPage(_credentialProviderCatalog)
+ new CredentialListPage(CredentialProviderCatalog)
{
DeletionConfirmer = new CredentialDeletionMsgBoxConfirmer(MessageBox.Show)
},
- new CredentialRepositoriesPage(_credentialProviderCatalog)
+ new CredentialRepositoriesPage(CredentialProviderCatalog)
};
+
var credentialManagerForm = new CredentialManagerForm(pages);
- credentialManagerForm.CenterOnTarget(_form);
+ credentialManagerForm.CenterOnTarget(MainForm);
credentialManagerForm.Show();
}
diff --git a/mRemoteV1/UI/Menu/ViewMenu.cs b/mRemoteV1/UI/Menu/ViewMenu.cs
index dcd26c3f..432d4d5d 100644
--- a/mRemoteV1/UI/Menu/ViewMenu.cs
+++ b/mRemoteV1/UI/Menu/ViewMenu.cs
@@ -25,19 +25,15 @@ namespace mRemoteNG.UI.Menu
private ToolStripMenuItem _mMenViewJumpToErrorsInfos;
private ToolStripMenuItem _mMenViewResetLayout;
private ToolStripSeparator _toolStripSeparator1;
- private readonly ToolStrip _tsExternalTools;
- private readonly ToolStrip _tsQuickConnect;
- private readonly FullscreenHandler _fullscreenHandler;
- private readonly FrmMain _mainForm;
+
+ public ToolStrip TsExternalTools { get; set; }
+ public ToolStrip TsQuickConnect { get; set; }
+ public FullscreenHandler FullscreenHandler { get; set; }
+ public FrmMain MainForm { get; set; }
- public ViewMenu(ToolStrip tsExternalTools, ToolStrip tsQuickConnect, FullscreenHandler fullscreenHandler, FrmMain mainForm)
+ public ViewMenu()
{
- _tsExternalTools = tsExternalTools;
- _tsQuickConnect = tsQuickConnect;
- _fullscreenHandler = fullscreenHandler;
- _mainForm = mainForm;
-
Initialize();
ApplyLanguage();
}
@@ -84,7 +80,7 @@ namespace mRemoteNG.UI.Menu
Name = "mMenView";
Size = new System.Drawing.Size(44, 20);
Text = Language.strMenuView;
- DropDownOpening += mMenView_DropDownOpening;
+ //DropDownOpening += mMenView_DropDownOpening;
//
// mMenViewAddConnectionPanel
//
@@ -242,15 +238,15 @@ namespace mRemoteNG.UI.Menu
}
#region View
- private void mMenView_DropDownOpening(object sender, EventArgs e)
+ internal void mMenView_DropDownOpening(object sender, EventArgs e)
{
_mMenViewConnections.Checked = !Windows.TreeForm.IsHidden;
_mMenViewConfig.Checked = !Windows.ConfigForm.IsHidden;
_mMenViewErrorsAndInfos.Checked = !Windows.ErrorsForm.IsHidden;
_mMenViewScreenshotManager.Checked = !Windows.ScreenshotForm.IsHidden;
- _mMenViewExtAppsToolbar.Checked = _tsExternalTools.Visible;
- _mMenViewQuickConnectToolbar.Checked = _tsQuickConnect.Visible;
+ _mMenViewExtAppsToolbar.Checked = TsExternalTools.Visible;
+ _mMenViewQuickConnectToolbar.Checked = TsQuickConnect.Visible;
_mMenViewConnectionPanels.DropDownItems.Clear();
@@ -267,7 +263,7 @@ namespace mRemoteNG.UI.Menu
private void ConnectionPanelMenuItem_Click(object sender, EventArgs e)
{
- ((BaseWindow)((ToolStripMenuItem)sender).Tag).Show(_mainForm.pnlDock);
+ ((BaseWindow)((ToolStripMenuItem)sender).Tag).Show(MainForm.pnlDock);
((BaseWindow)((ToolStripMenuItem)sender).Tag).Focus();
}
@@ -275,7 +271,7 @@ namespace mRemoteNG.UI.Menu
{
if (_mMenViewConnections.Checked == false)
{
- Windows.TreeForm.Show(_mainForm.pnlDock);
+ Windows.TreeForm.Show(MainForm.pnlDock);
_mMenViewConnections.Checked = true;
}
else
@@ -289,7 +285,7 @@ namespace mRemoteNG.UI.Menu
{
if (_mMenViewConfig.Checked == false)
{
- Windows.ConfigForm.Show(_mainForm.pnlDock);
+ Windows.ConfigForm.Show(MainForm.pnlDock);
_mMenViewConfig.Checked = true;
}
else
@@ -303,7 +299,7 @@ namespace mRemoteNG.UI.Menu
{
if (_mMenViewErrorsAndInfos.Checked == false)
{
- Windows.ErrorsForm.Show(_mainForm.pnlDock);
+ Windows.ErrorsForm.Show(MainForm.pnlDock);
_mMenViewErrorsAndInfos.Checked = true;
}
else
@@ -317,7 +313,7 @@ namespace mRemoteNG.UI.Menu
{
if (_mMenViewScreenshotManager.Checked == false)
{
- Windows.ScreenshotForm.Show(_mainForm.pnlDock);
+ Windows.ScreenshotForm.Show(MainForm.pnlDock);
_mMenViewScreenshotManager.Checked = true;
}
else
@@ -329,7 +325,7 @@ namespace mRemoteNG.UI.Menu
private void mMenViewJumpToConnectionsConfig_Click(object sender, EventArgs e)
{
- if (_mainForm.pnlDock.ActiveContent == Windows.TreeForm)
+ if (MainForm.pnlDock.ActiveContent == Windows.TreeForm)
{
Windows.ConfigForm.Activate();
}
@@ -350,7 +346,7 @@ namespace mRemoteNG.UI.Menu
MessageBoxIcon.Question);
if (msgBoxResult == DialogResult.Yes)
{
- _mainForm.SetDefaultLayout();
+ MainForm.SetDefaultLayout();
}
}
@@ -363,12 +359,12 @@ namespace mRemoteNG.UI.Menu
{
if (_mMenViewExtAppsToolbar.Checked == false)
{
- _tsExternalTools.Visible = true;
+ TsExternalTools.Visible = true;
_mMenViewExtAppsToolbar.Checked = true;
}
else
{
- _tsExternalTools.Visible = false;
+ TsExternalTools.Visible = false;
_mMenViewExtAppsToolbar.Checked = false;
}
}
@@ -377,20 +373,20 @@ namespace mRemoteNG.UI.Menu
{
if (_mMenViewQuickConnectToolbar.Checked == false)
{
- _tsQuickConnect.Visible = true;
+ TsQuickConnect.Visible = true;
_mMenViewQuickConnectToolbar.Checked = true;
}
else
{
- _tsQuickConnect.Visible = false;
+ TsQuickConnect.Visible = false;
_mMenViewQuickConnectToolbar.Checked = false;
}
}
private void mMenViewFullscreen_Click(object sender, EventArgs e)
{
- _fullscreenHandler.Value = !_fullscreenHandler.Value;
- _mMenViewFullscreen.Checked = _fullscreenHandler.Value;
+ FullscreenHandler.Value = !FullscreenHandler.Value;
+ _mMenViewFullscreen.Checked = FullscreenHandler.Value;
}
#endregion
}
diff --git a/mRemoteV1/UI/Window/ComponentsCheckWindow.cs b/mRemoteV1/UI/Window/ComponentsCheckWindow.cs
index c196f2e8..adf00dfb 100644
--- a/mRemoteV1/UI/Window/ComponentsCheckWindow.cs
+++ b/mRemoteV1/UI/Window/ComponentsCheckWindow.cs
@@ -438,7 +438,7 @@ namespace mRemoteNG.UI.Window
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddExceptionMessage("Failed to properly show the ComponentsWindow", ex, MessageClass.ErrorMsg, true);
+ Runtime.MessageCollector.AddExceptionMessage("Failed to properly show the ComponentsWindow", ex);
}
}
#endregion
diff --git a/mRemoteV1/UI/Window/UltraVNCWindow.cs b/mRemoteV1/UI/Window/UltraVNCWindow.cs
index b179bd3f..6de15c1f 100644
--- a/mRemoteV1/UI/Window/UltraVNCWindow.cs
+++ b/mRemoteV1/UI/Window/UltraVNCWindow.cs
@@ -44,9 +44,9 @@ namespace mRemoteNG.UI.Window
//
//pnlContainer
//
- this.pnlContainer.Anchor = (System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right);
+ this.pnlContainer.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom
+ | System.Windows.Forms.AnchorStyles.Left
+ | System.Windows.Forms.AnchorStyles.Right;
this.pnlContainer.Location = new System.Drawing.Point(0, 27);
this.pnlContainer.Name = "pnlContainer";
this.pnlContainer.Size = new System.Drawing.Size(446, 335);
@@ -118,12 +118,13 @@ namespace mRemoteNG.UI.Window
}
catch (Exception ex)
{
- Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "StartListening (UI.Window.UltraVNCSC) failed" + Environment.NewLine + ex.Message, false);
+ Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "StartListening (UI.Window.UltraVNCSC) failed" + Environment.NewLine + ex.Message);
Close();
}
}
-
- private void SetupLicense()
+
+#if false
+ private void SetupLicense()
{
try
{
@@ -136,7 +137,8 @@ namespace mRemoteNG.UI.Window
Runtime.MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "VNC SetupLicense failed (UI.Window.UltraVNCSC)" + Environment.NewLine + ex.Message, true);
}
}
-
+#endif
+
//Private Sub vnc_ConnectionAccepted(ByVal sender As Object, ByVal e As AxViewerX._ISmartCodeVNCViewerEvents_ConnectionAcceptedEvent) Handles vnc.ConnectionAccepted
// mC.AddMessage(Messages.MessageClass.InformationMsg, e.bstrServerAddress & " is now connected to your UltraVNC SingleClick panel!")
//End Sub
@@ -145,12 +147,12 @@ namespace mRemoteNG.UI.Window
// StartListening()
//End Sub
- private void btnDisconnect_Click(System.Object sender, System.EventArgs e)
+ private void btnDisconnect_Click(object sender, EventArgs e)
{
//vnc.Dispose()
Dispose();
Windows.Show(WindowType.UltraVNCSC);
}
- #endregion
+#endregion
}
}
\ No newline at end of file
diff --git a/mRemoteV1/UI/WindowList.cs b/mRemoteV1/UI/WindowList.cs
index 65aa99e1..7f36cc1b 100644
--- a/mRemoteV1/UI/WindowList.cs
+++ b/mRemoteV1/UI/WindowList.cs
@@ -1,10 +1,8 @@
using System;
using System.Collections;
-using System.Windows.Forms;
+using mRemoteNG.UI.Window;
-
-
-namespace mRemoteNG.UI.Window
+namespace mRemoteNG.UI
{
public class WindowList : CollectionBase
{
@@ -13,13 +11,13 @@ namespace mRemoteNG.UI.Window
{
get
{
- this.CleanUp();
+ CleanUp();
if (Index is BaseWindow)
return IndexByObject(Index);
- else if (Index is Int32)
- return IndexByNumber(Convert.ToInt32(Index));
-
- return null;
+ if (Index is int)
+ return IndexByNumber(Convert.ToInt32(Index));
+
+ return null;
}
}
@@ -27,7 +25,7 @@ namespace mRemoteNG.UI.Window
{
get
{
- this.CleanUp();
+ CleanUp();
return List.Count;
}
}
@@ -36,27 +34,27 @@ namespace mRemoteNG.UI.Window
#region Public Methods
public void Add(BaseWindow uiWindow)
{
- this.List.Add(uiWindow);
+ List.Add(uiWindow);
//AddHandler uiWindow.FormClosing, AddressOf uiFormClosing
}
public void AddRange(BaseWindow[] uiWindow)
{
- foreach (Form uW in uiWindow)
+ foreach (var uW in uiWindow)
{
- this.List.Add(uW);
+ List.Add(uW);
}
}
public void Remove(BaseWindow uiWindow)
{
- this.List.Remove(uiWindow);
+ List.Remove(uiWindow);
}
public BaseWindow FromString(string uiWindow)
{
- this.CleanUp();
- for (int i = 0; i < this.List.Count; i++)
+ CleanUp();
+ for (var i = 0; i < List.Count; i++)
{
if (this[i].Text == uiWindow.Replace("&", "&&"))
{
@@ -71,19 +69,18 @@ namespace mRemoteNG.UI.Window
private void CleanUp()
{
- for (int i = 0; i <= this.List.Count - 1; i++)
+ for (var i = 0; i <= List.Count - 1; i++)
{
- if (i > this.List.Count - 1)
+ if (i > List.Count - 1)
{
CleanUp();
return;
}
- if ((this.List[i] as BaseWindow).IsDisposed)
- {
- this.List.RemoveAt(i);
- CleanUp();
- return;
- }
+ var baseWindow = List[i] as BaseWindow;
+ if (baseWindow != null && !baseWindow.IsDisposed) continue;
+ List.RemoveAt(i);
+ CleanUp();
+ return;
}
}
@@ -91,7 +88,7 @@ namespace mRemoteNG.UI.Window
{
try
{
- int objectIndex = this.List.IndexOf(Index);
+ var objectIndex = List.IndexOf(Index);
return IndexByNumber(objectIndex);
}
catch (ArgumentOutOfRangeException e)
@@ -104,17 +101,19 @@ namespace mRemoteNG.UI.Window
{
try
{
- return this.List[Index] as BaseWindow;
+ return List[Index] as BaseWindow;
}
catch (ArgumentOutOfRangeException e)
{
throw new ArgumentOutOfRangeException(e.ParamName, e.ActualValue, "Index was out of bounds");
}
}
-
+
+ /*
private void uiFormClosing(object sender, FormClosingEventArgs e)
{
- this.List.Remove(sender);
+ List.Remove(sender);
}
+ */
}
}
\ No newline at end of file
diff --git a/mRemoteV1/app.config b/mRemoteV1/app.config
index 35d267fb..f7cd32c2 100644
--- a/mRemoteV1/app.config
+++ b/mRemoteV1/app.config
@@ -1,12 +1,12 @@
-
+
-
-
+
+
-
-
+
+
@@ -22,10 +22,10 @@
-
-
-
-
+
+
+
+
@@ -50,7 +50,7 @@
True
-
+
True
@@ -68,7 +68,7 @@
False
-
+
True
@@ -95,13 +95,13 @@
noinfo
-
+
-
+
-
+
False
@@ -119,7 +119,7 @@
False
-
+
80
@@ -128,13 +128,13 @@
False
-
+
-
+
-
+
RDP
@@ -221,13 +221,13 @@
False
-
+
-
+
-
+
False
@@ -299,10 +299,10 @@
False
-
+
-
+
False
@@ -341,10 +341,10 @@
EncHextile
-
+
-
+
0
@@ -353,7 +353,7 @@
ProxyNone
-
+
False
@@ -407,7 +407,7 @@
False
-
+
IE
@@ -416,7 +416,7 @@
False
-
+
False
@@ -425,13 +425,13 @@
False
-
+
False
-
+
False
@@ -479,19 +479,19 @@
5
-
+
-
+
-
+
-
+
-
+
False
@@ -533,22 +533,22 @@
release
-
+
True
-
+
-
+
True
-
+
True
@@ -608,7 +608,7 @@
00000000-0000-0000-0000-000000000000
-
+
False
@@ -653,16 +653,16 @@
-
- de,el,en,en-US,es-AR,es,fr,hu,it,ja-JP,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-TW
-
https://mremoteng.org/
+
+ cs-CZ,de,el,en,en-US,es-AR,es,fr,hu,it,ja-JP,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-TW
+
-
\ No newline at end of file
+
diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj
index a143d7ea..0d3ef641 100644
--- a/mRemoteV1/mRemoteV1.csproj
+++ b/mRemoteV1/mRemoteV1.csproj
@@ -27,6 +27,9 @@
false
v4.0
+
+
+ True
publish\
true
Disk
@@ -42,9 +45,6 @@
false
true
true
-
-
- True
@@ -59,15 +59,15 @@
..\packages\Geckofx45.45.0.22\lib\net40\Geckofx-Winforms.dll
True
+
+ ..\packages\log4net.2.0.8\lib\net40-full\log4net.dll
+ True
+
False
References\ADTree.dll
-
- False
- References\log4net.dll
-
False
References\MagicLibrary.dll
@@ -206,6 +206,7 @@
+
@@ -678,6 +679,7 @@
+
Designer
@@ -1474,7 +1476,17 @@
powershell -noprofile -command "sleep 2"
-call "$(DevEnvDir)..\tools\vsvars32.bat"
+
+rem VS 2015
+IF EXIST "$(DevEnvDir)..\tools\vsvars32.bat" (
+ call "$(DevEnvDir)..\tools\vsvars32.bat"
+)
+
+rem VS 2017
+IF EXIST "$(DevEnvDir)..\..\VC\Auxiliary\Build\vcvars32.bat" (
+call "$(DevEnvDir)..\..\VC\Auxiliary\Build\vcvars32.bat"
+)
+
set /p buildenv=<buildenv.tmp
echo Copy PUTTYNG to correct directory
@@ -1497,7 +1509,7 @@ editbin /largeaddressaware mRemoteNG.exe
IF EXIST C:\mRemoteNG_code_signing_cert.pfx (
echo Signing binaries
IF %25buildenv: Portable=%25==Release (
- powershell "&""$(SolutionDir)Tools\signfiles.ps1""" '%25cd%25'
+ powershell -File "$(SolutionDir)Tools\signfiles.ps1" -PathToSignableFiles %25cd%25 -Exclude 'PuTTYNG.exe'
)
)
@@ -1523,6 +1535,7 @@ IF %25buildenv: =%25==ReleasePortable (
x86
false
MinimumRecommendedRules.ruleset
+ false
false
@@ -1534,6 +1547,7 @@ IF %25buildenv: =%25==ReleasePortable (
AllRules.ruleset
1
false
+ false
false
@@ -1545,6 +1559,7 @@ IF %25buildenv: =%25==ReleasePortable (
x86
false
AllRules.ruleset
+ false
true
@@ -1557,6 +1572,7 @@ IF %25buildenv: =%25==ReleasePortable (
x86
false
MinimumRecommendedRules.ruleset
+ false