Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mRemoteNG/mRemoteNG.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitrij <kvarkas@gmail.com>2022-07-30 20:48:35 +0300
committerGitHub <noreply@github.com>2022-07-30 20:48:35 +0300
commit82a4fdd662b36af0a4486f04c9a921c6658cc04e (patch)
treee0f62a4203306b13ca867b3d7c1cfbc2662858dd
parenteac4d966d9673cf9e05526d464683f58d4486529 (diff)
parent8ae75ec5d2012a91457c3d210a2a7e97724feda6 (diff)
Merge pull request #2268 from s-laffont/postgresqldevelop
Postgresql
-rw-r--r--ExternalConnectors/ExternalConnectors.csproj4
-rw-r--r--mRemoteNG/Config/DataProviders/SqlDataProvider.cs23
-rw-r--r--mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs2
-rw-r--r--mRemoteNG/Config/DatabaseConnectors/PostgreSQLDatabaseConnector.cs84
-rw-r--r--mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs2
-rw-r--r--mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs7
-rw-r--r--mRemoteNG/Config/Settings/SettingsSaver.cs15
-rw-r--r--mRemoteNG/Language/Language.Designer.cs22
-rw-r--r--mRemoteNG/Language/Language.cs-CZ.resx105
-rw-r--r--mRemoteNG/Language/Language.resx6
-rw-r--r--mRemoteNG/Properties/Settings.Designer.cs6
-rw-r--r--mRemoteNG/Properties/Settings.settings4
-rw-r--r--mRemoteNG/Schemas/mremoteng_confcons_v2_7.xsd5
-rw-r--r--mRemoteNG/Tools/MiscTools.cs11
-rw-r--r--mRemoteNG/UI/Forms/FrmAbout.Designer.cs8
-rw-r--r--mRemoteNG/UI/Forms/FrmAbout.cs6
-rw-r--r--mRemoteNG/UI/Forms/OptionsPages/SqlServerPage.Designer.cs3
-rw-r--r--mRemoteNG/UI/Forms/frmMain.Designer.cs32
-rw-r--r--mRemoteNG/UI/Forms/frmMain.cs15
-rw-r--r--mRemoteNG/UI/Menu/msMain/HelpMenu.cs2
-rw-r--r--mRemoteNG/UI/Menu/msMain/ViewMenu.cs27
-rw-r--r--mRemoteNG/mRemoteNG.csproj3
-rw-r--r--mRemoteNGSpecs/mRemoteNGSpecs.csproj2
23 files changed, 343 insertions, 51 deletions
diff --git a/ExternalConnectors/ExternalConnectors.csproj b/ExternalConnectors/ExternalConnectors.csproj
index 7e9f5b98..9b4b3236 100644
--- a/ExternalConnectors/ExternalConnectors.csproj
+++ b/ExternalConnectors/ExternalConnectors.csproj
@@ -11,8 +11,8 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="AWSSDK.Core" Version="3.7.12.9" />
- <PackageReference Include="AWSSDK.EC2" Version="3.7.78.1" />
+ <PackageReference Include="AWSSDK.Core" Version="3.7.12.15" />
+ <PackageReference Include="AWSSDK.EC2" Version="3.7.79.2" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
diff --git a/mRemoteNG/Config/DataProviders/SqlDataProvider.cs b/mRemoteNG/Config/DataProviders/SqlDataProvider.cs
index 96f0b43b..820e5f31 100644
--- a/mRemoteNG/Config/DataProviders/SqlDataProvider.cs
+++ b/mRemoteNG/Config/DataProviders/SqlDataProvider.cs
@@ -5,6 +5,7 @@ using mRemoteNG.App;
using mRemoteNG.Properties;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
+using Npgsql;
namespace mRemoteNG.Config.DataProviders
{
@@ -95,6 +96,28 @@ namespace mRemoteNG.Config.DataProviders
}
}
}
+ else if (DatabaseConnector.GetType() == typeof(PostgreSQLDatabaseConnector))
+ {
+ var dbConnection = (NpgsqlConnection)DatabaseConnector.DbConnection();
+ using (NpgsqlTransaction transaction = dbConnection.BeginTransaction(System.Data.IsolationLevel.Serializable))
+ {
+ using (NpgsqlCommand sqlCommand = new NpgsqlCommand())
+ {
+ sqlCommand.Connection = dbConnection;
+ sqlCommand.Transaction = transaction;
+ sqlCommand.CommandText = "SELECT * FROM tblCons";
+ using (NpgsqlDataAdapter dataAdapter = new NpgsqlDataAdapter(sqlCommand))
+ {
+ //dataAdapter.UpdateBatchSize = 1000;
+ using (NpgsqlCommandBuilder cb = new NpgsqlCommandBuilder(dataAdapter))
+ {
+ dataAdapter.Update(dataTable);
+ transaction.Commit();
+ }
+ }
+ }
+ }
+ }
}
public void OpenConnection()
diff --git a/mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs b/mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs
index ee20e559..d10633bc 100644
--- a/mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs
+++ b/mRemoteNG/Config/DatabaseConnectors/DatabaseConnectorFactory.cs
@@ -22,6 +22,8 @@ namespace mRemoteNG.Config.DatabaseConnectors
{
switch (type)
{
+ case "postgresql":
+ return new PostgreSQLDatabaseConnector(server, database, username, password);
case "mysql":
return new MySqlDatabaseConnector(server, database, username, password);
case "mssql":
diff --git a/mRemoteNG/Config/DatabaseConnectors/PostgreSQLDatabaseConnector.cs b/mRemoteNG/Config/DatabaseConnectors/PostgreSQLDatabaseConnector.cs
new file mode 100644
index 00000000..0a064f6c
--- /dev/null
+++ b/mRemoteNG/Config/DatabaseConnectors/PostgreSQLDatabaseConnector.cs
@@ -0,0 +1,84 @@
+using System.Data;
+using System.Data.Common;
+using System.Threading.Tasks;
+using Npgsql;
+
+
+namespace mRemoteNG.Config.DatabaseConnectors
+{
+ public class PostgreSQLDatabaseConnector : IDatabaseConnector
+ {
+ private DbConnection _dbConnection { get; set; } = default(NpgsqlConnection);
+ private string _dbConnectionString = "";
+ private readonly string _dbHost;
+ private readonly string _dbPort;
+ private readonly string _dbName;
+ private readonly string _dbUsername;
+ private readonly string _dbPassword;
+
+ public DbConnection DbConnection()
+ {
+ return _dbConnection;
+ }
+
+ public DbCommand DbCommand(string dbCommand)
+ {
+ return new NpgsqlCommand(dbCommand, (NpgsqlConnection)_dbConnection);
+ }
+
+ public bool IsConnected => (_dbConnection.State == ConnectionState.Open);
+
+ public PostgreSQLDatabaseConnector(string host, string database, string username, string password)
+ {
+ string[] hostParts = host.Split(new char[] { ':' }, 2);
+ _dbHost = hostParts[0];
+ _dbPort = (hostParts.Length == 2) ? hostParts[1] : "5432";
+ _dbName = database;
+ _dbUsername = username;
+ _dbPassword = password;
+ Initialize();
+ }
+
+ private void Initialize()
+ {
+ BuildSqlConnectionString();
+ _dbConnection = new NpgsqlConnection(_dbConnectionString);
+ }
+
+ private void BuildSqlConnectionString()
+ {
+ _dbConnectionString = $"Server={_dbHost};User Id={_dbUsername};Database={_dbName};Port={_dbPort};Password={_dbPassword}";
+ }
+
+ public void Connect()
+ {
+ _dbConnection.Open();
+ }
+
+ public async Task ConnectAsync()
+ {
+ await _dbConnection.OpenAsync();
+ }
+
+ public void Disconnect()
+ {
+ _dbConnection.Close();
+ }
+
+ public void AssociateItemToThisConnector(DbCommand dbCommand)
+ {
+ dbCommand.Connection = (NpgsqlConnection)_dbConnection;
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ }
+ private void Dispose(bool itIsSafeToFreeManagedObjects)
+ {
+ if (!itIsSafeToFreeManagedObjects) return;
+ _dbConnection.Close();
+ _dbConnection.Dispose();
+ }
+ }
+} \ No newline at end of file
diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs
index 1252fb28..7cb2c40f 100644
--- a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs
+++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/SqlDatabaseMetaDataRetriever.cs
@@ -34,7 +34,7 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql
{
Name = dbDataReader["Name"] as string ?? "",
Protected = dbDataReader["Protected"] as string ?? "",
- Export = (bool)dbDataReader["Export"],
+ Export = Convert.ToBoolean(dbDataReader["Export"]),
ConfVersion =
new Version(Convert.ToString(dbDataReader["confVersion"], CultureInfo.InvariantCulture))
};
diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs
index f0e01ed2..83ca03fa 100644
--- a/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs
+++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs
@@ -151,6 +151,9 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
? new XAttribute("RDGatewayDomain", connectionInfo.RDGatewayDomain)
: new XAttribute("RDGatewayDomain", ""));
+ element.Add(new XAttribute("UseRCG", connectionInfo.UseRCG));
+ element.Add(new XAttribute("UseRestrictedAdmin", connectionInfo.UseRestrictedAdmin));
+
element.Add(new XAttribute("UserViaAPI", connectionInfo.UserViaAPI));
element.Add(new XAttribute("EC2InstanceId", connectionInfo.EC2InstanceId));
element.Add(new XAttribute("EC2Region", connectionInfo.EC2Region));
@@ -298,6 +301,10 @@ namespace mRemoteNG.Config.Serializers.ConnectionSerializers.Xml
element.Add(new XAttribute("InheritUseEnhancedMode", inheritance.UseEnhancedMode.ToString().ToLowerInvariant()));
if (inheritance.UserViaAPI)
element.Add(new XAttribute("InheritUserViaAPI", inheritance.UserViaAPI.ToString().ToLowerInvariant()));
+ if (inheritance.UseRCG)
+ element.Add(new XAttribute("InheritUseRCG", inheritance.UseRCG.ToString().ToLowerInvariant()));
+ if (inheritance.UseRestrictedAdmin)
+ element.Add(new XAttribute("InheritUseRestrictedAdmin", inheritance.UseRestrictedAdmin.ToString().ToLowerInvariant()));
}
}
}
diff --git a/mRemoteNG/Config/Settings/SettingsSaver.cs b/mRemoteNG/Config/Settings/SettingsSaver.cs
index 26937498..ff31d23f 100644
--- a/mRemoteNG/Config/Settings/SettingsSaver.cs
+++ b/mRemoteNG/Config/Settings/SettingsSaver.cs
@@ -47,6 +47,21 @@ namespace mRemoteNG.Config.Settings
SaveQuickConnectToolbarLocation(quickConnectToolStrip);
SaveMultiSshToolbarLocation(multiSshToolStrip);
+ Properties.App.Default.Save();
+ Properties.AppUI.Default.Save();
+ Properties.OptionsAdvancedPage.Default.Save();
+ Properties.OptionsAppearancePage.Default.Save();
+ Properties.OptionsBackupPage.Default.Save();
+ Properties.OptionsConnectionsPage.Default.Save();
+ Properties.OptionsCredentialsPage.Default.Save();
+ Properties.OptionsDBsPage.Default.Save();
+ Properties.OptionsNotificationsPage.Default.Save();
+ Properties.OptionsSecurityPage.Default.Save();
+ Properties.OptionsStartupExitPage.Default.Save();
+ Properties.OptionsTabsPanelsPage.Default.Save();
+ Properties.OptionsThemePage.Default.Save();
+ Properties.OptionsUpdatesPage.Default.Save();
+
Properties.Settings.Default.Save();
SaveDockPanelLayout();
diff --git a/mRemoteNG/Language/Language.Designer.cs b/mRemoteNG/Language/Language.Designer.cs
index 6b753d3c..3d7dad16 100644
--- a/mRemoteNG/Language/Language.Designer.cs
+++ b/mRemoteNG/Language/Language.Designer.cs
@@ -1042,6 +1042,17 @@ namespace mRemoteNG.Resources.Language {
}
/// <summary>
+ /// Looks up a localized string similar to Are you sure you want to reset the panels to their default layout?.
+ /// </summary>
+ internal static string FileMenuWillBeHiddenNow
+ {
+ get
+ {
+ return ResourceManager.GetString("FileMenuWillBeHiddenNow", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Connect.
/// </summary>
internal static string Connect {
@@ -3151,6 +3162,17 @@ namespace mRemoteNG.Resources.Language {
}
/// <summary>
+ /// Looks up a localized string similar to FileMenu.
+ /// </summary>
+ internal static string FileMenu
+ {
+ get
+ {
+ return ResourceManager.GetString("FileMenu", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to No update available.
/// </summary>
internal static string NoUpdateAvailable {
diff --git a/mRemoteNG/Language/Language.cs-CZ.resx b/mRemoteNG/Language/Language.cs-CZ.resx
index 41f1d16e..283c8879 100644
--- a/mRemoteNG/Language/Language.cs-CZ.resx
+++ b/mRemoteNG/Language/Language.cs-CZ.resx
@@ -163,7 +163,7 @@
<value>Poměr stran</value>
</data>
<data name="AutoSaveEvery" xml:space="preserve">
- <value>Automaticky ukládat každých:</value>
+ <value>Automatické uložení v minutách (0 znamená vypnuto):</value>
</data>
<data name="AvailableVersion" xml:space="preserve">
<value>Poslední verze</value>
@@ -265,7 +265,7 @@
<value>Pro spojení použít proxy server</value>
</data>
<data name="Username" xml:space="preserve">
- <value>Login</value>
+ <value>Přihlašovací jméno</value>
</data>
<data name="WaitForExit" xml:space="preserve">
<value>Čekat na logout</value>
@@ -376,7 +376,7 @@
<value>Protokol událostí připojen</value>
</data>
<data name="ConnectionEventConnectedDetail" xml:space="preserve">
- <value>Připojení k "{0}" přes "{1}" bylo provedeno uživatelem "{2}" (Popis: "{3}"; Login: "{4}")</value>
+ <value>Připojení k "{0}" přes "{1}" bylo provedeno uživatelem "{2}" (Popis: "{3}"; Přihlašovací jméno: "{4}")</value>
</data>
<data name="ConnectionFailed" xml:space="preserve">
<value>Připojení selhalo!</value>
@@ -410,7 +410,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<value>Nepovedlo se uložit soubor seznamu spojení "{0}"!</value>
</data>
<data name="ConnectNoCredentials" xml:space="preserve">
- <value>Připojit bez loginu</value>
+ <value>Připojit bez přihlašovacích údajů</value>
</data>
<data name="ConnectToConsoleSession" xml:space="preserve">
<value>Připojit k otevřenému sezení konzole</value>
@@ -455,7 +455,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<value>Přejete si pokračovat bez hesla?</value>
</data>
<data name="EmptyUsernamePasswordDomainFields" xml:space="preserve">
- <value>Pro prázdná políčka Login, Heslo nebo Doména použít:</value>
+ <value>Pro prázdná políčka Přihlašovací jméno, Heslo nebo Doména použít:</value>
</data>
<data name="EncryptCompleteConnectionFile" xml:space="preserve">
<value>Zakódovat celý soubor seznamu připojení</value>
@@ -593,7 +593,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<value>Spojení HTTP selhalo!</value>
</data>
<data name="HttpConnectionFailed" xml:space="preserve">
- <value>Nezdařilo se vytvoření noebého spojení HTTP!</value>
+ <value>Nezdařilo se vytvoření nového spojení HTTP!</value>
</data>
<data name="HttpDocumentTileChangeFailed" xml:space="preserve">
<value>Změna nadpisu dokumentu HTTP selhala!</value>
@@ -740,7 +740,7 @@ Otevírám nový prázdný soubor seznamu spojení.</value>
<value>Klonovat záložku tabu</value>
</data>
<data name="Exit" xml:space="preserve">
- <value>Exit</value>
+ <value>Ukončit</value>
</data>
<data name="ExternalToolsToolbar" xml:space="preserve">
<value>Nástrojová lišta externích nástrojů</value>
@@ -1002,7 +1002,7 @@ Pokud k takové chybě dojde, prosím vytvořte nový soubor se seznamem spojen
<value>Pokud se využívá v externím nástroji, zadejte sem MAC adresu vzdáleného hostitele.</value>
</data>
<data name="PropertyDescriptionName" xml:space="preserve">
- <value>Toto jméno bude zobrazeno ve stromě seznamu spojení a jejich složek.</value>
+ <value>Toto jméno bude zobrazeno v seznamu spojení a jejich složek.</value>
</data>
<data name="PropertyDescriptionPanel" xml:space="preserve">
<value>Zadaný název určí panel, ve kterém se má spojení otevřít.</value>
@@ -1149,7 +1149,7 @@ Pokud k takové chybě dojde, prosím vytvořte nový soubor se seznamem spojen
<value>Adresa MAC</value>
</data>
<data name="Name" xml:space="preserve">
- <value>Jméno</value>
+ <value>Název</value>
</data>
<data name="Panel" xml:space="preserve">
<value>Panel</value>
@@ -1179,7 +1179,7 @@ Pokud k takové chybě dojde, prosím vytvořte nový soubor se seznamem spojen
<value>Přihl. údaje brány</value>
</data>
<data name="RdpGatewayUsername" xml:space="preserve">
- <value>Login brány</value>
+ <value>Přihlašovací jméno brány</value>
</data>
<data name="DiskDrives" xml:space="preserve">
<value>Připojit lok. disky</value>
@@ -1227,7 +1227,7 @@ Pokud k takové chybě dojde, prosím vytvořte nový soubor se seznamem spojen
<value>Typ proxy</value>
</data>
<data name="ProxyUsername" xml:space="preserve">
- <value>Login k proxy</value>
+ <value>Přihlašovací jméno k proxy</value>
</data>
<data name="ProtocolEventDisconnected" xml:space="preserve">
<value>Událost prokolu Odpojeno.
@@ -1497,7 +1497,7 @@ Zpráva:
<value>V názvu okna zobrazovat úplnou cestu k souboru seznamu spojení</value>
</data>
<data name="ShowLogonInfoOnTabs" xml:space="preserve">
- <value>Zobrazovat v názvu záložek (tabech) informace o loginu</value>
+ <value>Zobrazovat v názvu záložek (tabech) informace o uživateli</value>
</data>
<data name="ShowProtocolOnTabs" xml:space="preserve">
<value>Zobrazovat v názvu záložek (tabech) protokol (typ spojení)</value>
@@ -1648,7 +1648,7 @@ mRemoteNG se nyní ukončí a zahájí instalaci.</value>
<value>Použít čipovou kartu</value>
</data>
<data name="UseSQLServer" xml:space="preserve">
- <value>Použít SQL Server ke stažení &amp;&amp; uloženho seznamu spojení</value>
+ <value>Použít SQL Server ke stažení &amp;&amp; uloženého seznamu spojení</value>
</data>
<data name="Version" xml:space="preserve">
<value>Verze</value>
@@ -1804,4 +1804,81 @@ mRemoteNG se nyní ukončí a zahájí instalaci.</value>
+
+ <data name="AssignedCredential" xml:space="preserve">
<value>Přiřazené přihlašovací informace</value>
- </data></root> \ No newline at end of file
+ </data>
+ <data name="StartMinimized" xml:space="preserve">
+ <value>Po spuštění minimalizovat</value>
+ </data><data name="CreateEmptyPanelOnStartUp" xml:space="preserve">
+ <value>Otevřít prázdný panel při startu aplikace</value>
+ </data>
+ <data name="IdentifyQuickConnectTabs" xml:space="preserve">
+ <value>Zavřít záložku dvojklikem na ní</value>
+ </data>
+ <data name="CloseToSysTray" xml:space="preserve">
+ <value>Zavřít do oznamovací oblasti</value>
+ </data>
+ <data name="OptionsThemeNewThemeCaption" xml:space="preserve">
+ <value>Nový název šablony</value>
+ </data>
+ <data name="OptionsThemeNewThemeText" xml:space="preserve">
+ <value>Zadejte nový název šablony</value>
+ </data>
+ <data name="OptionsThemeNewThemeError" xml:space="preserve">
+ <value>Nepodařilo se vytvořit šablonu, buď již existuje šablona se stejným názvem nebo vámi zadaný název obsahuje speciální znaky.</value>
+ </data>
+ <data name="SetHostnameLikeDisplayNameNewConnection" xml:space="preserve">
+ <value>Při vytváření nového připojení nastaví stejný název zobrazení jako je název počítače</value>
+ </data>
+ <data name="RdpReconnectionCount" xml:space="preserve">
+ <value>Počet opětovných připojení k RDP</value>
+ </data>
+ <data name="RdpConnectionTimeout" xml:space="preserve">
+ <value>Časová prodleva připojení k RDP</value>
+ </data>
+ <data name="WhenClosingConnections" xml:space="preserve">
+ <value>Když se ukončí připojení:</value>
+ </data>
+ <data name="WarnMeWhenClosingConnections" xml:space="preserve">
+ <value>Upozornit mě na ukončení připojení</value>
+ </data>
+ <data name="WarnMeOnlyWhenClosingMultipleConnections" xml:space="preserve">
+ <value>Upozornit mě pouze při ukončení několika připojení</value>
+ </data>
+ <data name="WarnMeOnlyWhenExitingProgram" xml:space="preserve">
+ <value>Upozornit mě pouze při ukončení programu</value>
+ </data>
+ <data name="DoNotWarnMeWhenClosingConnections" xml:space="preserve">
+ <value>Neupozorňovat na ukončení připojení</value>
+ </data>
+ <data name="SaveConnectionsAfterEveryEdit" xml:space="preserve">
+ <value>Uložit připojení při každé úpravě</value>
+ </data>
+ <data name="StartFullScreen" xml:space="preserve">
+ <value>Při spuštění zobrazit na celou obrazovku</value>
+ </data>
+ <data name="FilterSearchMatchesInConnectionTree" xml:space="preserve">
+ <value>Filtrovat shody vyhledávání v seznamu připojení</value>
+ </data>
+ <data name="ReconnectToPreviouslyOpenedSessionsOnStartup" xml:space="preserve">
+ <value>Obnovit dříve spuštěná připojení po startu</value>
+ </data>
+ <data name="SaveConnectionsOnExit" xml:space="preserve">
+ <value>Uložit připojení při ukončení programu</value>
+ </data>
+ <data name="PlaceSearchBarAboveConnectionTree" xml:space="preserve">
+ <value>Umístit vyhledávací pole nad seznam připojení</value>
+ </data>
+ <data name="TrackActiveConnectionInTheConnectionTree" xml:space="preserve">
+ <value>Označovat aktivní připojení v seznamu</value>
+ </data>
+ <data name="DoNotTrimUsername" xml:space="preserve">
+ <value>Nezkracovat uživatelské jméno</value>
+ </data>
+ <data name="AutoSaveInMinutes" xml:space="preserve">
+ <value>Kliknutím na již otevřené připojení v seznamu otevře jeho záložku</value>
+ </data>
+ <data name="LoadBalanceInfoUseUtf8" xml:space="preserve">
+ <value>Použít kódování UTF8 pro vlastnost RDP "Load Balance Info"</value>
+ </data>
+ <data name="TestConnection" xml:space="preserve">
+ <value>Test spojení</value>
+ </data></root>
diff --git a/mRemoteNG/Language/Language.resx b/mRemoteNG/Language/Language.resx
index 639fdd7f..a11591d5 100644
--- a/mRemoteNG/Language/Language.resx
+++ b/mRemoteNG/Language/Language.resx
@@ -2280,4 +2280,10 @@ Nightly Channel includes Alphas, Betas &amp; Release Candidates.</value>
<data name="FiltermRemoteRemoteDesktopManagerCSV" xml:space="preserve">
<value>Remote Desktop Manager Files (*.csv)</value>
</data>
+ <data name="FileMenu" xml:space="preserve">
+ <value>File menu</value>
+ </data>
+ <data name="FileMenuWillBeHiddenNow" xml:space="preserve">
+ <value>File menu is hidded now. Press Alt button to peek</value>
+ </data>
</root> \ No newline at end of file
diff --git a/mRemoteNG/Properties/Settings.Designer.cs b/mRemoteNG/Properties/Settings.Designer.cs
index 75f6bcae..7a76e94d 100644
--- a/mRemoteNG/Properties/Settings.Designer.cs
+++ b/mRemoteNG/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace mRemoteNG.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.2.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -1405,7 +1405,7 @@ namespace mRemoteNG.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ConDefaultUseRestrictedAdmin {
get {
return ((bool)(this["ConDefaultUseRestrictedAdmin"]));
@@ -1429,7 +1429,7 @@ namespace mRemoteNG.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ConDefaultUseRCG {
get {
return ((bool)(this["ConDefaultUseRCG"]));
diff --git a/mRemoteNG/Properties/Settings.settings b/mRemoteNG/Properties/Settings.settings
index f75b9d31..93ba8b49 100644
--- a/mRemoteNG/Properties/Settings.settings
+++ b/mRemoteNG/Properties/Settings.settings
@@ -348,13 +348,13 @@
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUseRestrictedAdmin" Type="System.Boolean" Scope="User">
- <Value Profile="(Default)">True</Value>
+ <Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="InhDefaultUseRCG" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUseRCG" Type="System.Boolean" Scope="User">
- <Value Profile="(Default)">True</Value>
+ <Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ConDefaultUseVmId" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
diff --git a/mRemoteNG/Schemas/mremoteng_confcons_v2_7.xsd b/mRemoteNG/Schemas/mremoteng_confcons_v2_7.xsd
index 7305756b..aef6fcb6 100644
--- a/mRemoteNG/Schemas/mremoteng_confcons_v2_7.xsd
+++ b/mRemoteNG/Schemas/mremoteng_confcons_v2_7.xsd
@@ -175,5 +175,10 @@
<xs:attribute name="UserViaAPI" type="xs:string" use="optional" />
<xs:attribute name="EC2InstanceId" type="xs:string" use="optional" />
<xs:attribute name="EC2Region" type="xs:string" use="optional" />
+ <xs:attribute name="UseRCG" type="xs:boolean" use="optional" />
+ <xs:attribute name="UseRestrictedAdmin" type="xs:boolean" use="optional" />
+ <xs:attribute name="InheritUseRCG" type="xs:boolean" use="optional" />
+ <xs:attribute name="InheritUseRestrictedAdmin" type="xs:boolean" use="optional" />
+
</xs:complexType>
</xs:schema> \ No newline at end of file
diff --git a/mRemoteNG/Tools/MiscTools.cs b/mRemoteNG/Tools/MiscTools.cs
index bd1ba250..17b3e9f4 100644
--- a/mRemoteNG/Tools/MiscTools.cs
+++ b/mRemoteNG/Tools/MiscTools.cs
@@ -68,7 +68,9 @@ namespace mRemoteNG.Tools
{
switch (Properties.OptionsDBsPage.Default.SQLServerType)
{
- case "mysql":
+ case "postgresql":
+ return Dt.ToString("yyyy-MM-dd HH:mm:ss.fff");
+ case "mysql":
return Dt.ToString("yyyy/MM/dd HH:mm:ss");
case "mssql":
default:
@@ -80,7 +82,9 @@ namespace mRemoteNG.Tools
{
switch (Properties.OptionsDBsPage.Default.SQLServerType)
{
- case "mysql":
+ case "postgresql":
+ return typeof(DateTime);
+ case "mysql":
return typeof(MySqlDateTime);
case "mssql":
default:
@@ -95,7 +99,8 @@ namespace mRemoteNG.Tools
case "mysql":
return new MySqlDateTime(DateTime.Now);
case "mssql":
- default:
+ case "postgresql":
+ default:
return DateTime.Now;
}
}
diff --git a/mRemoteNG/UI/Forms/FrmAbout.Designer.cs b/mRemoteNG/UI/Forms/FrmAbout.Designer.cs
index 698e8275..813a1790 100644
--- a/mRemoteNG/UI/Forms/FrmAbout.Designer.cs
+++ b/mRemoteNG/UI/Forms/FrmAbout.Designer.cs
@@ -1,11 +1,11 @@
namespace mRemoteNG.UI.Forms
{
- public partial class FrmAbout
+ public partial class frmAbout
{
#region Windows Form Designer generated code
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmAbout));
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmAbout));
this.pbLogo = new System.Windows.Forms.PictureBox();
this.pnlBottom = new System.Windows.Forms.Panel();
this.llCredits = new System.Windows.Forms.LinkLabel();
@@ -133,7 +133,7 @@
this.lblCopyright.Text = "Copyright";
this.lblCopyright.UseCompatibleTextRendering = true;
//
- // FrmAbout
+ // frmAbout
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
@@ -147,7 +147,7 @@
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(20000, 10000);
this.MinimizeBox = false;
- this.Name = "FrmAbout";
+ this.Name = "frmAbout";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "About";
this.TopMost = true;
diff --git a/mRemoteNG/UI/Forms/FrmAbout.cs b/mRemoteNG/UI/Forms/FrmAbout.cs
index 6e02b9a2..e5738f12 100644
--- a/mRemoteNG/UI/Forms/FrmAbout.cs
+++ b/mRemoteNG/UI/Forms/FrmAbout.cs
@@ -9,11 +9,11 @@ using System.Runtime.InteropServices;
namespace mRemoteNG.UI.Forms
{
- public partial class FrmAbout : Form
+ public partial class frmAbout : Form
{
- public static FrmAbout Instance { get; set; } = new FrmAbout();
+ public static frmAbout Instance { get; set; } = new frmAbout();
- private FrmAbout()
+ private frmAbout()
{
InitializeComponent();
Icon = Resources.ImageConverter.GetImageAsIcon(Properties.Resources.UIAboutBox_16x);
diff --git a/mRemoteNG/UI/Forms/OptionsPages/SqlServerPage.Designer.cs b/mRemoteNG/UI/Forms/OptionsPages/SqlServerPage.Designer.cs
index 123b1d76..73345587 100644
--- a/mRemoteNG/UI/Forms/OptionsPages/SqlServerPage.Designer.cs
+++ b/mRemoteNG/UI/Forms/OptionsPages/SqlServerPage.Designer.cs
@@ -247,7 +247,8 @@ namespace mRemoteNG.UI.Forms.OptionsPages
this.txtSQLType.FormattingEnabled = true;
this.txtSQLType.Items.AddRange(new object[] {
"mssql",
- "mysql"});
+ "mysql",
+ "postgresql"});
this.txtSQLType.Location = new System.Drawing.Point(163, 3);
this.txtSQLType.Name = "txtSQLType";
this.txtSQLType.Size = new System.Drawing.Size(235, 21);
diff --git a/mRemoteNG/UI/Forms/frmMain.Designer.cs b/mRemoteNG/UI/Forms/frmMain.Designer.cs
index 3b6580ed..9df0696d 100644
--- a/mRemoteNG/UI/Forms/frmMain.Designer.cs
+++ b/mRemoteNG/UI/Forms/frmMain.Designer.cs
@@ -1,4 +1,6 @@
-namespace mRemoteNG.UI.Forms
+using System.Windows.Forms;
+
+namespace mRemoteNG.UI.Forms
{
public partial class FrmMain : System.Windows.Forms.Form
{
@@ -39,7 +41,6 @@
this.viewMenu = new mRemoteNG.UI.Menu.ViewMenu();
this.toolsMenu = new mRemoteNG.UI.Menu.ToolsMenu();
this.helpMenu = new mRemoteNG.UI.Menu.HelpMenu();
- this.modeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.mMenSep3 = new System.Windows.Forms.ToolStripSeparator();
this.tsContainer = new System.Windows.Forms.ToolStripContainer();
this._quickConnectToolStrip = new mRemoteNG.UI.Controls.QuickConnectToolStrip();
@@ -47,7 +48,6 @@
this._externalToolsToolStrip = new mRemoteNG.UI.Controls.ExternalToolsToolStrip();
this.tmrAutoSave = new System.Windows.Forms.Timer(this.components);
this.vsToolStripExtender = new WeifenLuo.WinFormsUI.Docking.VisualStudioToolStripExtender(this.components);
- this.modeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tsModeAdmin = new System.Windows.Forms.ToolStripMenuItem();
this.tsModeUser = new System.Windows.Forms.ToolStripMenuItem();
this.msMain.SuspendLayout();
@@ -77,8 +77,7 @@
this.fileMenu,
this.viewMenu,
this.toolsMenu,
- this.helpMenu,
- this.modeToolStripMenuItem});
+ this.helpMenu});
this.msMain.Location = new System.Drawing.Point(3, 0);
this.msMain.Name = "msMain";
this.msMain.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0);
@@ -125,11 +124,6 @@
this.helpMenu.Text = "&Help";
this.helpMenu.TextDirection = System.Windows.Forms.ToolStripTextDirection.Horizontal;
//
- // modeToolStripMenuItem
- //
- this.modeToolStripMenuItem.Name = "modeToolStripMenuItem";
- this.modeToolStripMenuItem.Size = new System.Drawing.Size(12, 25);
- //
// mMenSep3
//
this.mMenSep3.Name = "mMenSep3";
@@ -237,9 +231,22 @@
this.tsContainer.ResumeLayout(false);
this.tsContainer.PerformLayout();
this.ResumeLayout(false);
-
}
- internal WeifenLuo.WinFormsUI.Docking.DockPanel pnlDock;
+
+ protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
+ {
+ if (keyData == (Keys.Alt | Keys.Menu))
+ {
+ if(!msMain.Visible)
+ {
+ msMain.Visible = true;
+ }
+ }
+
+ return base.ProcessCmdKey(ref msg, keyData);
+ }
+
+ internal WeifenLuo.WinFormsUI.Docking.DockPanel pnlDock;
internal System.Windows.Forms.MenuStrip msMain;
internal System.Windows.Forms.ToolStripContainer tsContainer;
internal System.Windows.Forms.Timer tmrAutoSave;
@@ -254,7 +261,6 @@
internal mRemoteNG.UI.Controls.MultiSshToolStrip _multiSshToolStrip;
//theming support
private WeifenLuo.WinFormsUI.Docking.VisualStudioToolStripExtender vsToolStripExtender;
- private System.Windows.Forms.ToolStripMenuItem modeToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem tsModeAdmin;
private System.Windows.Forms.ToolStripMenuItem tsModeUser;
}
diff --git a/mRemoteNG/UI/Forms/frmMain.cs b/mRemoteNG/UI/Forms/frmMain.cs
index 4e1277d2..aa1cc45e 100644
--- a/mRemoteNG/UI/Forms/frmMain.cs
+++ b/mRemoteNG/UI/Forms/frmMain.cs
@@ -727,9 +727,24 @@ namespace mRemoteNG.UI.Forms
Windows.ErrorsForm.Show(pnlDock, DockState.DockBottomAutoHide);
viewMenu._mMenViewErrorsAndInfos.Checked = true;
+ ShowFileMenu();
+
pnlDock.Visible = true;
}
+ public void ShowFileMenu()
+ {
+ msMain.Visible = true;
+ viewMenu._mMenViewFileMenu.Checked = true;
+ }
+
+ public void HideFileMenu()
+ {
+ msMain.Visible = false;
+ viewMenu._mMenViewFileMenu.Checked = false;
+ MessageBox.Show(Language.FileMenuWillBeHiddenNow, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+
public void SetLayout()
{
pnlDock.Visible = false;
diff --git a/mRemoteNG/UI/Menu/msMain/HelpMenu.cs b/mRemoteNG/UI/Menu/msMain/HelpMenu.cs
index 5c78cdeb..85f2f263 100644
--- a/mRemoteNG/UI/Menu/msMain/HelpMenu.cs
+++ b/mRemoteNG/UI/Menu/msMain/HelpMenu.cs
@@ -150,7 +150,7 @@ namespace mRemoteNG.UI.Menu
private void mMenInfoDonate_Click(object sender, EventArgs e) => Process.Start("explorer.exe", GeneralAppInfo.UrlDonate);
- private void mMenInfoAbout_Click(object sender, EventArgs e) => FrmAbout.Instance.Show();
+ private void mMenInfoAbout_Click(object sender, EventArgs e) => frmAbout.Instance.Show();
#endregion
}
diff --git a/mRemoteNG/UI/Menu/msMain/ViewMenu.cs b/mRemoteNG/UI/Menu/msMain/ViewMenu.cs
index 533aee41..248b4863 100644
--- a/mRemoteNG/UI/Menu/msMain/ViewMenu.cs
+++ b/mRemoteNG/UI/Menu/msMain/ViewMenu.cs
@@ -1,12 +1,11 @@
using System;
using System.Windows.Forms;
using mRemoteNG.App;
-using mRemoteNG.Connection;
using mRemoteNG.Properties;
+using mRemoteNG.Resources.Language;
using mRemoteNG.UI.Forms;
using mRemoteNG.UI.Panels;
using mRemoteNG.UI.Window;
-using mRemoteNG.Resources.Language;
namespace mRemoteNG.UI.Menu
{
@@ -16,6 +15,7 @@ namespace mRemoteNG.UI.Menu
private ToolStripMenuItem _mMenReconnectAll;
private ToolStripSeparator _mMenViewSep1;
public ToolStripMenuItem _mMenViewErrorsAndInfos;
+ public ToolStripMenuItem _mMenViewFileMenu;
private ToolStripMenuItem _mMenViewAddConnectionPanel;
private ToolStripSeparator _mMenViewSep2;
private ToolStripMenuItem _mMenViewFullscreen;
@@ -45,6 +45,7 @@ namespace mRemoteNG.UI.Menu
_mMenViewAddConnectionPanel = new ToolStripMenuItem();
_mMenViewConnectionPanels = new ToolStripMenuItem();
_mMenViewSep1 = new ToolStripSeparator();
+ _mMenViewFileMenu = new ToolStripMenuItem();
_mMenViewErrorsAndInfos = new ToolStripMenuItem();
_mMenViewResetLayout = new ToolStripMenuItem();
_mMenViewLockToolbars = new ToolStripMenuItem();
@@ -60,6 +61,7 @@ namespace mRemoteNG.UI.Menu
//
DropDownItems.AddRange(new ToolStripItem[]
{
+ _mMenViewFileMenu,
_mMenViewErrorsAndInfos,
_mMenViewQuickConnectToolbar,
_mMenViewExtAppsToolbar,
@@ -106,6 +108,15 @@ namespace mRemoteNG.UI.Menu
_mMenViewSep1.Name = "mMenViewSep1";
_mMenViewSep1.Size = new System.Drawing.Size(225, 6);
//
+ // mMenViewFile
+ //
+ _mMenViewFileMenu.Checked = true;
+ _mMenViewFileMenu.CheckState = CheckState.Checked;
+ _mMenViewFileMenu.Name = "mMenViewFile";
+ _mMenViewFileMenu.Size = new System.Drawing.Size(228, 22);
+ _mMenViewFileMenu.Text = Language.FileMenu;
+ _mMenViewFileMenu.Click += mMenViewFileMenu_Click;
+ //
// mMenViewErrorsAndInfos
//
_mMenViewErrorsAndInfos.Checked = true;
@@ -224,6 +235,18 @@ namespace mRemoteNG.UI.Menu
}
}
+ private void mMenViewFileMenu_Click(object sender, EventArgs e)
+ {
+ if (_mMenViewFileMenu.Checked == false)
+ {
+ MainForm.ShowFileMenu();
+ }
+ else
+ {
+ MainForm.HideFileMenu();
+ }
+ }
+
private void mMenViewResetLayout_Click(object sender, EventArgs e)
{
var msgBoxResult = MessageBox.Show(Language.ConfirmResetLayout, string.Empty, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
diff --git a/mRemoteNG/mRemoteNG.csproj b/mRemoteNG/mRemoteNG.csproj
index 37edcc16..38992579 100644
--- a/mRemoteNG/mRemoteNG.csproj
+++ b/mRemoteNG/mRemoteNG.csproj
@@ -79,8 +79,9 @@
<PackageReference Include="log4net" Version="2.0.14" />
<PackageReference Include="Microsoft-WindowsAPICodePack-Shell" Version="1.1.4" />
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.1264.42" />
- <PackageReference Include="MySql.Data" Version="8.0.29" />
+ <PackageReference Include="MySql.Data" Version="8.0.30" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
+ <PackageReference Include="Npgsql" Version="7.0.0-preview.6" />
<PackageReference Include="ObjectListView.Official" Version="2.9.1" />
<PackageReference Include="OpenCover" Version="4.7.1221" />
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
diff --git a/mRemoteNGSpecs/mRemoteNGSpecs.csproj b/mRemoteNGSpecs/mRemoteNGSpecs.csproj
index 15c5cac1..f6c7ed0b 100644
--- a/mRemoteNGSpecs/mRemoteNGSpecs.csproj
+++ b/mRemoteNGSpecs/mRemoteNGSpecs.csproj
@@ -18,7 +18,7 @@
<ItemGroup>
<PackageReference Include="Cucumber.Messages" Version="16.0.1" />
- <PackageReference Include="Google.Protobuf" Version="3.21.2" />
+ <PackageReference Include="Google.Protobuf" Version="3.21.4" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit.Runners" Version="3.12.0" />