mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
Merge remote-tracking branch 'upstream/v1.77.3-dev' into update_build_scripts
This commit is contained in:
@@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
|
||||
## [1.77.3]
|
||||
### Added
|
||||
- #1736: Update of SSH.NET to 2020.0.2 to allow File Transfer again
|
||||
- #2138: Improve compatibility with Remote Desktop Connection Manager v2.83
|
||||
- #2123: Thycotic Secret Server - Added 2FA OTP support
|
||||
### Changed
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
using System;
|
||||
#region Usings
|
||||
using System;
|
||||
using mRemoteNG.Resources.Language;
|
||||
using mRemoteNG.UI;
|
||||
using mRemoteNG.UI.Forms;
|
||||
using mRemoteNG.UI.Window;
|
||||
#endregion
|
||||
|
||||
namespace mRemoteNG.App
|
||||
{
|
||||
@@ -39,11 +42,8 @@ namespace mRemoteNG.App
|
||||
_adimportForm.Show(dockPanel);
|
||||
break;
|
||||
case WindowType.Options:
|
||||
using (var optionsForm = new FrmOptions())
|
||||
{
|
||||
optionsForm.ShowDialog(dockPanel);
|
||||
}
|
||||
|
||||
FrmMain.OptionsForm.SetActivatedPage(Language.StartupExit);
|
||||
FrmMain.OptionsForm.Visible = true;
|
||||
break;
|
||||
case WindowType.SSHTransfer:
|
||||
if (SshtransferForm == null || SshtransferForm.IsDisposed)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Microsoft.Win32;
|
||||
#region Usings
|
||||
using Microsoft.Win32;
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.App.Info;
|
||||
using mRemoteNG.App.Initialization;
|
||||
@@ -30,9 +31,8 @@ using System.Windows.Forms;
|
||||
using mRemoteNG.UI.Panels;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using mRemoteNG.UI.Controls;
|
||||
|
||||
using mRemoteNG.Resources.Language;
|
||||
|
||||
#endregion
|
||||
|
||||
// ReSharper disable MemberCanBePrivate.Global
|
||||
|
||||
@@ -54,6 +54,7 @@ namespace mRemoteNG.UI.Forms
|
||||
private readonly IList<IMessageWriter> _messageWriters = new List<IMessageWriter>();
|
||||
private readonly ThemeManager _themeManager;
|
||||
private readonly FileBackupPruner _backupPruner = new FileBackupPruner();
|
||||
public static FrmOptions OptionsForm;
|
||||
|
||||
internal FullscreenHandler Fullscreen { get; set; }
|
||||
|
||||
@@ -64,11 +65,12 @@ namespace mRemoteNG.UI.Forms
|
||||
{
|
||||
_showFullPathInTitle = Properties.OptionsAppearancePage.Default.ShowCompleteConsPathInTitle;
|
||||
InitializeComponent();
|
||||
|
||||
Screen targetScreen = (Screen.AllScreens.Length > 1) ? Screen.AllScreens[1] : Screen.AllScreens[0];
|
||||
|
||||
Rectangle viewport = targetScreen.WorkingArea;
|
||||
|
||||
// normaly it should be screens[1] however due DPI apply 1 size "same" as default with 100%
|
||||
// normally it should be screens[1] however due DPI apply 1 size "same" as default with 100%
|
||||
this.Left = viewport.Left + (targetScreen.Bounds.Size.Width / 2) - (this.Width / 2);
|
||||
this.Top = viewport.Top + (targetScreen.Bounds.Size.Height / 2) - (this.Height / 2);
|
||||
|
||||
@@ -81,7 +83,7 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
_advancedWindowMenu = new AdvancedWindowMenu(this);
|
||||
}
|
||||
|
||||
|
||||
#region Properties
|
||||
|
||||
public FormWindowState PreviousWindowState { get; set; }
|
||||
@@ -216,6 +218,8 @@ namespace mRemoteNG.UI.Forms
|
||||
Fullscreen.Value = true;
|
||||
}
|
||||
|
||||
OptionsForm = new FrmOptions();
|
||||
|
||||
if (!Properties.OptionsTabsPanelsPage.Default.CreateEmptyPanelOnStartUp) return;
|
||||
var panelName = !string.IsNullOrEmpty(Properties.OptionsTabsPanelsPage.Default.StartUpPanelName) ? Properties.OptionsTabsPanelsPage.Default.StartUpPanelName : Language.NewPanel;
|
||||
|
||||
@@ -356,10 +360,8 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
if (CTaskDialog.CommandButtonResult != 1) return;
|
||||
|
||||
using (var optionsForm = new FrmOptions(Language.Updates))
|
||||
{
|
||||
optionsForm.ShowDialog(this);
|
||||
}
|
||||
OptionsForm.SetActivatedPage(Language.Updates);
|
||||
OptionsForm.ShowDialog(this);
|
||||
}
|
||||
|
||||
private async Task CheckForUpdates()
|
||||
|
||||
24
mRemoteNG/UI/Forms/frmOptions.Designer.cs
generated
24
mRemoteNG/UI/Forms/frmOptions.Designer.cs
generated
@@ -30,16 +30,15 @@ namespace mRemoteNG.UI.Forms
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmOptions));
|
||||
this.pnlBottom = new System.Windows.Forms.Panel();
|
||||
this.btnApply = new MrngButton();
|
||||
this.btnCancel = new MrngButton();
|
||||
this.btnOK = new MrngButton();
|
||||
this.btnApply = new mRemoteNG.UI.Controls.MrngButton();
|
||||
this.btnCancel = new mRemoteNG.UI.Controls.MrngButton();
|
||||
this.btnOK = new mRemoteNG.UI.Controls.MrngButton();
|
||||
this.splitter1 = new System.Windows.Forms.Splitter();
|
||||
this.splitter2 = new System.Windows.Forms.Splitter();
|
||||
this.pnlMain = new System.Windows.Forms.Panel();
|
||||
this.lstOptionPages = new mRemoteNG.UI.Controls.MrngListView();
|
||||
this.PageName = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
|
||||
this.PageName = new BrightIdeasSoftware.OLVColumn();
|
||||
this.pnlBottom.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.lstOptionPages)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
@@ -57,18 +56,18 @@ namespace mRemoteNG.UI.Forms
|
||||
//
|
||||
// btnApply
|
||||
//
|
||||
this.btnApply._mice = MrngButton.MouseState.OUT;
|
||||
this.btnApply._mice = mRemoteNG.UI.Controls.MrngButton.MouseState.OUT;
|
||||
this.btnApply.Location = new System.Drawing.Point(677, 5);
|
||||
this.btnApply.Name = "btnApply";
|
||||
this.btnApply.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnApply.TabIndex = 2;
|
||||
this.btnApply.Text = "Apply";
|
||||
this.btnApply.UseVisualStyleBackColor = true;
|
||||
this.btnApply.Click += new System.EventHandler(this.BtnOK_Click);
|
||||
this.btnApply.Click += new System.EventHandler(this.BtnApply_Click);
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel._mice = MrngButton.MouseState.OUT;
|
||||
this.btnCancel._mice = mRemoteNG.UI.Controls.MrngButton.MouseState.OUT;
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Location = new System.Drawing.Point(596, 5);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
@@ -80,7 +79,7 @@ namespace mRemoteNG.UI.Forms
|
||||
//
|
||||
// btnOK
|
||||
//
|
||||
this.btnOK._mice = MrngButton.MouseState.OUT;
|
||||
this.btnOK._mice = mRemoteNG.UI.Controls.MrngButton.MouseState.OUT;
|
||||
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnOK.Location = new System.Drawing.Point(515, 5);
|
||||
this.btnOK.Name = "btnOK";
|
||||
@@ -123,13 +122,11 @@ namespace mRemoteNG.UI.Forms
|
||||
this.lstOptionPages.CellEditUseWholeCell = false;
|
||||
this.lstOptionPages.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.PageName});
|
||||
this.lstOptionPages.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.lstOptionPages.DecorateLines = true;
|
||||
this.lstOptionPages.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.lstOptionPages.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lstOptionPages.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.lstOptionPages.FullRowSelect = true;
|
||||
this.lstOptionPages.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
|
||||
this.lstOptionPages.HideSelection = false;
|
||||
this.lstOptionPages.LabelWrap = false;
|
||||
this.lstOptionPages.Location = new System.Drawing.Point(0, 0);
|
||||
this.lstOptionPages.MultiSelect = false;
|
||||
@@ -162,7 +159,7 @@ namespace mRemoteNG.UI.Forms
|
||||
this.Controls.Add(this.lstOptionPages);
|
||||
this.Controls.Add(this.splitter1);
|
||||
this.Controls.Add(this.pnlBottom);
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
@@ -170,6 +167,7 @@ namespace mRemoteNG.UI.Forms
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "mRemoteNG Options";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmOptions_FormClosing);
|
||||
this.Load += new System.EventHandler(this.FrmOptions_Load);
|
||||
this.pnlBottom.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.lstOptionPages)).EndInit();
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using mRemoteNG.UI.Forms.OptionsPages;
|
||||
#region Usings
|
||||
using mRemoteNG.UI.Forms.OptionsPages;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
@@ -8,35 +9,55 @@ using mRemoteNG.Themes;
|
||||
using System.Configuration;
|
||||
using mRemoteNG.Properties;
|
||||
using mRemoteNG.Resources.Language;
|
||||
#endregion
|
||||
|
||||
namespace mRemoteNG.UI.Forms
|
||||
{
|
||||
public partial class FrmOptions : Form
|
||||
{
|
||||
private Dictionary<string, OptionsPage> _pages;
|
||||
private readonly string _pageName;
|
||||
private readonly DisplayProperties _display = new DisplayProperties();
|
||||
private int _currentIndex = 0;
|
||||
private readonly List<OptionsPage> _optionPages = new();
|
||||
private string _pageName;
|
||||
private readonly DisplayProperties _display = new();
|
||||
private readonly List<string> _optionPageObjectNames;
|
||||
|
||||
public FrmOptions() : this(Language.StartupExit)
|
||||
{
|
||||
}
|
||||
|
||||
public FrmOptions(string pn)
|
||||
private FrmOptions(string pageName)
|
||||
{
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
Application.DoEvents();
|
||||
InitializeComponent();
|
||||
Icon = Resources.ImageConverter.GetImageAsIcon(Properties.Resources.Settings_16x);
|
||||
_pageName = pn;
|
||||
_pageName = pageName;
|
||||
Cursor.Current = Cursors.Default;
|
||||
|
||||
_optionPageObjectNames = new List<string>
|
||||
{
|
||||
nameof(StartupExitPage),
|
||||
nameof(AppearancePage),
|
||||
nameof(ConnectionsPage),
|
||||
nameof(TabsPanelsPage),
|
||||
nameof(NotificationsPage),
|
||||
nameof(CredentialsPage),
|
||||
nameof(SqlServerPage),
|
||||
nameof(UpdatesPage),
|
||||
nameof(ThemePage),
|
||||
nameof(SecurityPage),
|
||||
nameof(AdvancedPage),
|
||||
nameof(BackupPage)
|
||||
};
|
||||
|
||||
InitOptionsPagesToListView();
|
||||
}
|
||||
|
||||
private void FrmOptions_Load(object sender, EventArgs e)
|
||||
{
|
||||
CompileListOfOptionsPages();
|
||||
this.Visible = true;
|
||||
FontOverrider.FontOverride(this);
|
||||
AddOptionsPagesToListView();
|
||||
SetInitiallyActivatedPage();
|
||||
SetActivatedPage();
|
||||
//ApplyLanguage();
|
||||
// Handle the main page here and the individual pages in
|
||||
// AddOptionsPagesToListView() -- one less foreach loop....
|
||||
@@ -67,57 +88,137 @@ namespace mRemoteNG.UI.Forms
|
||||
}
|
||||
}
|
||||
#endif
|
||||
private void CompileListOfOptionsPages()
|
||||
{
|
||||
_pages = new Dictionary<string, OptionsPage>{};
|
||||
|
||||
if (Properties.OptionsStartupExitPage.Default.cbStartupExitPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(StartupExitPage).Name, new StartupExitPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsAppearancePage.Default.cbAppearancePageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(AppearancePage).Name, new AppearancePage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsConnectionsPage.Default.cbConnectionsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(ConnectionsPage).Name, new ConnectionsPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsTabsPanelsPage.Default.cbTabsPanelsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(TabsPanelsPage).Name, new TabsPanelsPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsNotificationsPage.Default.cbNotificationsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(NotificationsPage).Name, new NotificationsPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsCredentialsPage.Default.cbCredentialsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(CredentialsPage).Name, new CredentialsPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsDBsPage.Default.cbDBsPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(SqlServerPage).Name, new SqlServerPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsUpdatesPage.Default.cbUpdatesPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(UpdatesPage).Name, new UpdatesPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsThemePage.Default.cbThemePageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(ThemePage).Name, new ThemePage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsSecurityPage.Default.cbSecurityPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(SecurityPage).Name, new SecurityPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsAdvancedPage.Default.cbAdvancedPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(AdvancedPage).Name, new AdvancedPage { Dock = DockStyle.Fill });
|
||||
if (Properties.OptionsBackupPage.Default.cbBacupPageInOptionMenu == true || Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
_pages.Add(typeof(BackupPage).Name, new BackupPage { Dock = DockStyle.Fill });
|
||||
}
|
||||
|
||||
private void AddOptionsPagesToListView()
|
||||
private void InitOptionsPagesToListView()
|
||||
{
|
||||
lstOptionPages.RowHeight = _display.ScaleHeight(lstOptionPages.RowHeight);
|
||||
lstOptionPages.AllColumns.First().ImageGetter = ImageGetter;
|
||||
|
||||
foreach (var page in _pages.Select(keyValuePair => keyValuePair.Value))
|
||||
InitOptionsPage(_optionPageObjectNames[_currentIndex++]);
|
||||
Application.Idle += new EventHandler(Application_Idle);
|
||||
}
|
||||
|
||||
private void Application_Idle(object sender, EventArgs e)
|
||||
{
|
||||
if (_currentIndex >= _optionPageObjectNames.Count)
|
||||
{
|
||||
page.ApplyLanguage();
|
||||
page.LoadSettings();
|
||||
lstOptionPages.AddObject(page);
|
||||
Application.Idle -= new EventHandler(Application_Idle);
|
||||
}
|
||||
else
|
||||
{
|
||||
InitOptionsPage(_optionPageObjectNames[_currentIndex++]);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitOptionsPage(string pageName)
|
||||
{
|
||||
OptionsPage page = null;
|
||||
|
||||
switch (pageName)
|
||||
{
|
||||
case "StartupExitPage":
|
||||
{
|
||||
if (Properties.OptionsStartupExitPage.Default.cbStartupExitPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new StartupExitPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "AppearancePage":
|
||||
{
|
||||
if (Properties.OptionsAppearancePage.Default.cbAppearancePageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new AppearancePage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "ConnectionsPage":
|
||||
{
|
||||
if (Properties.OptionsConnectionsPage.Default.cbConnectionsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new ConnectionsPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "TabsPanelsPage":
|
||||
{
|
||||
if (Properties.OptionsTabsPanelsPage.Default.cbTabsPanelsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new TabsPanelsPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "NotificationsPage":
|
||||
{
|
||||
if (Properties.OptionsNotificationsPage.Default.cbNotificationsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new NotificationsPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "CredentialsPage":
|
||||
{
|
||||
if (Properties.OptionsCredentialsPage.Default.cbCredentialsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new CredentialsPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "SqlServerPage":
|
||||
{
|
||||
if (Properties.OptionsDBsPage.Default.cbDBsPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new SqlServerPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "UpdatesPage":
|
||||
{
|
||||
if (Properties.OptionsUpdatesPage.Default.cbUpdatesPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new UpdatesPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "ThemePage":
|
||||
{
|
||||
if (Properties.OptionsThemePage.Default.cbThemePageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new ThemePage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "SecurityPage":
|
||||
{
|
||||
if (Properties.OptionsSecurityPage.Default.cbSecurityPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new SecurityPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "AdvancedPage":
|
||||
{
|
||||
if (Properties.OptionsAdvancedPage.Default.cbAdvancedPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new AdvancedPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
case "BackupPage":
|
||||
{
|
||||
if (Properties.OptionsBackupPage.Default.cbBacupPageInOptionMenu ||
|
||||
Properties.rbac.Default.ActiveRole == "AdminRole")
|
||||
page = new BackupPage { Dock = DockStyle.Fill };
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (page == null) return;
|
||||
page.ApplyLanguage();
|
||||
page.LoadSettings();
|
||||
_optionPages.Add(page);
|
||||
lstOptionPages.AddObject(page);
|
||||
}
|
||||
|
||||
private object ImageGetter(object rowobject)
|
||||
{
|
||||
var page = rowobject as OptionsPage;
|
||||
OptionsPage page = rowobject as OptionsPage;
|
||||
return page?.PageIcon == null ? _display.ScaleImage(Properties.Resources.F1Help_16x) : _display.ScaleImage(page.PageIcon);
|
||||
}
|
||||
|
||||
private void SetInitiallyActivatedPage()
|
||||
public void SetActivatedPage(string pageName = default)
|
||||
{
|
||||
_pageName = pageName ?? Language.StartupExit;
|
||||
|
||||
var isSet = false;
|
||||
for (var i = 0; i < lstOptionPages.Items.Count; i++)
|
||||
{
|
||||
@@ -131,14 +232,20 @@ namespace mRemoteNG.UI.Forms
|
||||
lstOptionPages.Items[0].Selected = true;
|
||||
}
|
||||
|
||||
/*
|
||||
* This gets called by both OK and Apply buttons.
|
||||
* OK sets DialogResult = OK, Apply does not (None).
|
||||
* Apply will no close the dialog.
|
||||
*/
|
||||
private void BtnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var page in _pages.Values)
|
||||
SaveOptions();
|
||||
this.Visible = false;
|
||||
}
|
||||
|
||||
private void BtnApply_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveOptions();
|
||||
}
|
||||
|
||||
private void SaveOptions()
|
||||
{
|
||||
foreach (var page in _optionPages)
|
||||
{
|
||||
Debug.WriteLine(page.PageName);
|
||||
page.SaveSettings();
|
||||
@@ -148,7 +255,6 @@ namespace mRemoteNG.UI.Forms
|
||||
Settings.Default.Save();
|
||||
}
|
||||
|
||||
|
||||
private void LstOptionPages_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
pnlMain.Controls.Clear();
|
||||
@@ -160,7 +266,13 @@ namespace mRemoteNG.UI.Forms
|
||||
|
||||
private void BtnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
this.Visible = false;
|
||||
}
|
||||
|
||||
private void FrmOptions_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
e.Cancel = true;
|
||||
this.Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,6 +82,7 @@
|
||||
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
|
||||
<PackageReference Include="Renci.SshNet.Async" Version="1.4.0" />
|
||||
<PackageReference Include="ReportGenerator" Version="5.1.17" />
|
||||
<PackageReference Include="SSH.NET" Version="2020.0.2" />
|
||||
<PackageReference Include="System.Data.Common" Version="4.3.0" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
|
||||
<PackageReference Include="System.DirectoryServices" Version="7.0.0" />
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
Known Issues
|
||||
############
|
||||
|
||||
Problems connecting to servers using SSH with mRemoteNG version below 1.77.3
|
||||
============================================================================
|
||||
Due the technological progress we are limited by puttyNG functionality exist in older versions, curently we already solve that for new releases, but due we are still in developing process we dont have stable version at the moment, so to address issue with connection to Ubuntu 22.04 or others servers who expect PubkeyAcceptedAlgorithms - manual update of PuttyNG is required:
|
||||
- Download the newest prerelease of mRemoteNG: https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.77.1
|
||||
- Download newest PuttyNG exe and overwrite the version in the mRemoteNG install directory: https://github.com/mRemoteNG/PuTTYNG/releases/tag/v0.78.0.10
|
||||
|
||||
CredSSP - CVE-2018-0886 - Authentication error
|
||||
==============================================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user