From eb580ab82b52d3db9f0e6b55c7add62fb401ee66 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 2 Jun 2020 22:40:03 +0200 Subject: [PATCH 01/21] avoid using AppDomains as they are unsupported by .net core --- mRemoteNG/UI/Forms/frmOptions.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mRemoteNG/UI/Forms/frmOptions.cs b/mRemoteNG/UI/Forms/frmOptions.cs index 8583bdb0d..1f2a1a2b0 100644 --- a/mRemoteNG/UI/Forms/frmOptions.cs +++ b/mRemoteNG/UI/Forms/frmOptions.cs @@ -5,6 +5,7 @@ using System.Diagnostics; using System.Linq; using System.Windows.Forms; using mRemoteNG.Themes; +using System.Configuration; namespace mRemoteNG.UI.Forms { @@ -129,7 +130,7 @@ namespace mRemoteNG.UI.Forms page.SaveSettings(); } - Debug.WriteLine(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); + Debug.WriteLine((ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)).FilePath); Settings.Default.Save(); } From f40b8e9a75a644dd4fd53c0ee0df44a1e9c1ee78 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 2 Jun 2020 22:48:00 +0200 Subject: [PATCH 02/21] do not use log4net default repository --- mRemoteNG/App/Logger.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mRemoteNG/App/Logger.cs b/mRemoteNG/App/Logger.cs index 8a289a159..ef6df7a28 100644 --- a/mRemoteNG/App/Logger.cs +++ b/mRemoteNG/App/Logger.cs @@ -24,7 +24,7 @@ namespace mRemoteNG.App private void Initialize() { - XmlConfigurator.Configure(); + XmlConfigurator.Configure(LogManager.CreateRepository("mRemoteNG")); if (string.IsNullOrEmpty(Settings.Default.LogFilePath)) Settings.Default.LogFilePath = BuildLogFilePath(); @@ -33,7 +33,7 @@ namespace mRemoteNG.App public void SetLogPath(string path) { - var repository = LogManager.GetRepository(); + var repository = LogManager.GetRepository("mRemoteNG"); var appenders = repository.GetAppenders(); foreach (var appender in appenders) @@ -44,7 +44,7 @@ namespace mRemoteNG.App fileAppender.ActivateOptions(); } - Log = LogManager.GetLogger("Logger"); + Log = LogManager.GetLogger("mRemoteNG", "Logger"); } private static string BuildLogFilePath() From 277d6fdd45ce872885d7901034f9ea93fd72687b Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Wed, 3 Jun 2020 01:25:35 +0200 Subject: [PATCH 03/21] generate dummy html help file when python/sphinx is not set up --- Tools/sphinx_docs.ps1 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Tools/sphinx_docs.ps1 b/Tools/sphinx_docs.ps1 index 3d890f6e4..8ba3e20cf 100644 --- a/Tools/sphinx_docs.ps1 +++ b/Tools/sphinx_docs.ps1 @@ -14,10 +14,20 @@ Write-Output "Building HTML-Documentation with Sphinx" $path_HelpFilesDir = Join-Path -Path $TargetDir -ChildPath "Help" $path_SphinxSourceDir = Join-Path -Path $SolutionDir -ChildPath "mRemoteNG\Documentation" + # Remove stale Help files, if they exist if (Test-Path -Path $path_HelpFilesDir) { Remove-Item -Path $path_HelpFilesDir -Recurse -Force } + +# Build docs sphinx-build $path_SphinxSourceDir $path_HelpFilesDir +# Place dummy html file if build failed +if (-Not (Test-Path $path_HelpFilesDir\index.html -PathType Leaf)) { + New-Item -Path $path_HelpFilesDir -ItemType "directory" + New-Item $path_HelpFilesDir\index.html + Set-Content $path_HelpFilesDir\index.html 'Welcome to mRemoteNG!' +} + Write-Output "" \ No newline at end of file From 99b525d42fce089c0108b8e465a6ebaee2e00210 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Wed, 3 Jun 2020 22:20:22 +0200 Subject: [PATCH 04/21] check for putty event handler only when trying to send command instead of on any key press, fixes #1756 --- CHANGELOG.md | 3 +- mRemoteNG/Tools/MultiSSHController.cs | 154 ----------------- mRemoteNG/UI/Controls/MultiSshToolStrip.cs | 190 +++++++++++++++++---- mRemoteNG/mRemoteNG.csproj | 5 +- 4 files changed, 159 insertions(+), 193 deletions(-) delete mode 100644 mRemoteNG/Tools/MultiSSHController.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index cdaeaa3b6..f37de3a46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - #1690: Replaced GeckoFX (Firefox) with CefSharp (Chromium) - #1325: Language resource files cleanup ### Fixed -- #1773: Connection issue with mysql - Missing fields in tblCons +- #1773: Connection issue with mysql - Missing fields in +- #1756: Cannot type any character on MultiSSH toolbar - #1720: Show configuration file name in title of password prompt form - #1713: Sound redirection does not work if Clipboard redirection is set to No - #1632: 1.77.1 breaks RDP drive and sound redirection diff --git a/mRemoteNG/Tools/MultiSSHController.cs b/mRemoteNG/Tools/MultiSSHController.cs deleted file mode 100644 index 3c0409f88..000000000 --- a/mRemoteNG/Tools/MultiSSHController.cs +++ /dev/null @@ -1,154 +0,0 @@ -using System; -using System.Collections; -using System.Linq; -using System.Windows.Forms; -using mRemoteNG.App; -using mRemoteNG.Connection; -using mRemoteNG.Connection.Protocol; - -namespace mRemoteNG.Tools -{ - public class MultiSSHController - { - private readonly ArrayList processHandlers = new ArrayList(); - private readonly ArrayList quickConnectConnections = new ArrayList(); - private readonly ArrayList previousCommands = new ArrayList(); - private int previousCommandIndex; - - private int CommandHistoryLength { get; set; } = 100; - - public MultiSSHController(TextBox txtBox) - { - DecorateTextBox(txtBox); - } - - public MultiSSHController(ToolStripTextBox txtBox) - { - DecorateTextBox(txtBox.TextBox); - } - - public void ProcessNewQuickConnect(ConnectionInfo connection) - { - quickConnectConnections.Add(connection); - } - - private void DecorateTextBox(TextBox toBeDecorated) - { - toBeDecorated.Enter += refreshActiveConnections; - toBeDecorated.KeyDown += processKeyPress; - toBeDecorated.KeyUp += processKeyRelease; - } - - private ArrayList ProcessOpenConnections(ConnectionInfo connection) - { - var handlers = new ArrayList(); - - foreach (ProtocolBase _base in connection.OpenConnections) - { - if (_base.GetType().IsSubclassOf(typeof(PuttyBase))) - { - handlers.Add((PuttyBase)_base); - } - } - - return handlers; - } - - private void SendAllKeystrokes(int keyType, int keyData) - { - if (processHandlers.Count == 0) - { - return; - } - - foreach (PuttyBase proc in processHandlers) - { - NativeMethods.PostMessage(proc.PuttyHandle, keyType, new IntPtr(keyData), new IntPtr(0)); - } - } - - #region Event Processors - - private void refreshActiveConnections(object sender, EventArgs e) - { - processHandlers.Clear(); - foreach (ConnectionInfo connection in quickConnectConnections) - { - processHandlers.AddRange(ProcessOpenConnections(connection)); - } - - var connectionTreeConnections = Runtime.ConnectionsService.ConnectionTreeModel.GetRecursiveChildList() - .Where(item => item.OpenConnections.Count > 0); - - foreach (var connection in connectionTreeConnections) - { - processHandlers.AddRange(ProcessOpenConnections(connection)); - } - } - - private void processKeyPress(object sender, KeyEventArgs e) - { - if (!(sender is TextBox txtMultiSSH)) return; - - if (processHandlers.Count == 0) - { - e.SuppressKeyPress = true; - return; - } - - if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down) - { - e.SuppressKeyPress = true; - switch (e.KeyCode) - { - case Keys.Up when previousCommandIndex - 1 >= 0: - previousCommandIndex -= 1; - break; - case Keys.Down when previousCommandIndex + 1 < previousCommands.Count: - previousCommandIndex += 1; - break; - default: - return; - } - - txtMultiSSH.Text = previousCommands[previousCommandIndex].ToString(); - txtMultiSSH.Select(txtMultiSSH.TextLength, 0); - } - - if (e.Control && e.KeyCode != Keys.V && e.Alt == false) - { - SendAllKeystrokes(NativeMethods.WM_KEYDOWN, e.KeyValue); - } - - if (e.KeyCode != Keys.Enter) return; - var strLine = txtMultiSSH.Text; - foreach (var chr1 in strLine) - { - SendAllKeystrokes(NativeMethods.WM_CHAR, Convert.ToByte(chr1)); - } - - SendAllKeystrokes(NativeMethods.WM_KEYDOWN, 13); // Enter = char13 - } - - private void processKeyRelease(object sender, KeyEventArgs e) - { - if (!(sender is TextBox txtMultiSSH)) return; - - if (e.KeyCode != Keys.Enter) return; - if (txtMultiSSH.Text.Trim() != "") - { - previousCommands.Add(txtMultiSSH.Text.Trim()); - } - - if (previousCommands.Count >= CommandHistoryLength) - { - previousCommands.RemoveAt(0); - } - - previousCommandIndex = previousCommands.Count - 1; - txtMultiSSH.Clear(); - } - - #endregion - } -} \ No newline at end of file diff --git a/mRemoteNG/UI/Controls/MultiSshToolStrip.cs b/mRemoteNG/UI/Controls/MultiSshToolStrip.cs index da9e25e51..47d9ad508 100644 --- a/mRemoteNG/UI/Controls/MultiSshToolStrip.cs +++ b/mRemoteNG/UI/Controls/MultiSshToolStrip.cs @@ -1,20 +1,27 @@ using System.ComponentModel; using System.Windows.Forms; using mRemoteNG.Themes; -using mRemoteNG.Tools; +using System; +using System.Collections; +using System.Linq; +using mRemoteNG.App; +using mRemoteNG.Connection; +using mRemoteNG.Connection.Protocol; namespace mRemoteNG.UI.Controls { - public class MultiSshToolStrip : ToolStrip + public partial class MultiSshToolStrip : ToolStrip { private IContainer components; - private ToolStripLabel _lblMultiSsh; - private ToolStripTextBox _txtMultiSsh; - - // ReSharper disable once NotAccessedField.Local - private MultiSSHController _multiSshController; + private ToolStripLabel lblMultiSsh; + private ToolStripTextBox txtMultiSsh; + private int previousCommandIndex = 0; + private readonly ArrayList processHandlers = new ArrayList(); + private readonly ArrayList quickConnectConnections = new ArrayList(); + private readonly ArrayList previousCommands = new ArrayList(); private readonly ThemeManager _themeManager; + private int CommandHistoryLength { get; set; } = 100; public MultiSshToolStrip() { @@ -22,43 +29,115 @@ namespace mRemoteNG.UI.Controls _themeManager = ThemeManager.getInstance(); _themeManager.ThemeChanged += ApplyTheme; ApplyTheme(); - _multiSshController = new MultiSSHController(_txtMultiSsh); - } - - private void InitializeComponent() - { - components = new System.ComponentModel.Container(); - _lblMultiSsh = new ToolStripLabel(); - _txtMultiSsh = new ToolStripTextBox(); - SuspendLayout(); - // - // lblMultiSSH - // - _lblMultiSsh.Name = "_lblMultiSsh"; - _lblMultiSsh.Size = new System.Drawing.Size(77, 22); - _lblMultiSsh.Text = Language.MultiSsh; - // - // txtMultiSsh - // - _txtMultiSsh.Name = "_txtMultiSsh"; - _txtMultiSsh.Size = new System.Drawing.Size(new DisplayProperties().ScaleWidth(300), 25); - _txtMultiSsh.ToolTipText = Language.MultiSshToolTip; - - Items.AddRange(new ToolStripItem[] - { - _lblMultiSsh, - _txtMultiSsh - }); - ResumeLayout(true); } private void ApplyTheme() { if (!_themeManager.ActiveAndExtended) return; - _txtMultiSsh.BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Background"); - _txtMultiSsh.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Foreground"); + txtMultiSsh.BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Background"); + txtMultiSsh.ForeColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Foreground"); } + private ArrayList ProcessOpenConnections(ConnectionInfo connection) + { + var handlers = new ArrayList(); + + foreach (ProtocolBase _base in connection.OpenConnections) + { + if (_base.GetType().IsSubclassOf(typeof(PuttyBase))) + { + handlers.Add((PuttyBase)_base); + } + } + + return handlers; + } + + private void SendAllKeystrokes(int keyType, int keyData) + { + if (processHandlers.Count == 0) return; + + foreach (PuttyBase proc in processHandlers) + { + NativeMethods.PostMessage(proc.PuttyHandle, keyType, new IntPtr(keyData), new IntPtr(0)); + } + } + + #region Key Event Handler + + private void RefreshActiveConnections(object sender, EventArgs e) + { + processHandlers.Clear(); + foreach (ConnectionInfo connection in quickConnectConnections) + { + processHandlers.AddRange(ProcessOpenConnections(connection)); + } + + var connectionTreeConnections = Runtime.ConnectionsService.ConnectionTreeModel.GetRecursiveChildList() + .Where(item => item.OpenConnections.Count > 0); + + foreach (var connection in connectionTreeConnections) + { + processHandlers.AddRange(ProcessOpenConnections(connection)); + } + } + + private void ProcessKeyPress(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down) + { + e.SuppressKeyPress = true; + try + { + switch (e.KeyCode) + { + case Keys.Up when previousCommandIndex - 1 >= 0: + previousCommandIndex -= 1; + break; + case Keys.Down when previousCommandIndex + 1 < previousCommands.Count: + previousCommandIndex += 1; + break; + default: + return; + } + } + catch { } + + txtMultiSsh.Text = previousCommands[previousCommandIndex].ToString(); + txtMultiSsh.SelectAll(); + } + + if (e.Control && e.KeyCode != Keys.V && e.Alt == false) + { + SendAllKeystrokes(NativeMethods.WM_KEYDOWN, e.KeyValue); + } + + if (e.KeyCode == Keys.Enter) + { + foreach (var chr1 in txtMultiSsh.Text) + { + SendAllKeystrokes(NativeMethods.WM_CHAR, Convert.ToByte(chr1)); + } + + SendAllKeystrokes(NativeMethods.WM_KEYDOWN, 13); // Enter = char13 + } + } + + private void ProcessKeyRelease(object sender, KeyEventArgs e) + { + if (e.KeyCode != Keys.Enter) return; + if (string.IsNullOrWhiteSpace(txtMultiSsh.Text)) return; + + previousCommands.Add(txtMultiSsh.Text.Trim()); + + if (previousCommands.Count >= CommandHistoryLength) previousCommands.RemoveAt(0); + + previousCommandIndex = previousCommands.Count - 1; + txtMultiSsh.Clear(); + } + + #endregion + protected override void Dispose(bool disposing) { if (disposing) @@ -69,5 +148,42 @@ namespace mRemoteNG.UI.Controls base.Dispose(disposing); } + + #region Component Designer generated code + + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.lblMultiSsh = new ToolStripLabel(); + this.txtMultiSsh = new ToolStripTextBox(); + this.SuspendLayout(); + // + // lblMultiSSH + // + this.lblMultiSsh.Name = "_lblMultiSsh"; + this.lblMultiSsh.Size = new System.Drawing.Size(77, 22); + this.lblMultiSsh.Text = Language.MultiSsh; + // + // txtMultiSsh + // + this.txtMultiSsh.Name = "_txtMultiSsh"; + this.txtMultiSsh.Size = new System.Drawing.Size(new DisplayProperties().ScaleWidth(300), 25); + this.txtMultiSsh.ToolTipText = Language.MultiSshToolTip; + this.txtMultiSsh.Enter += RefreshActiveConnections; + this.txtMultiSsh.KeyDown += ProcessKeyPress; + this.txtMultiSsh.KeyUp += ProcessKeyRelease; + + this.Items.AddRange(new ToolStripItem[] + { + lblMultiSsh, + txtMultiSsh + }); + this.ResumeLayout(false); + } + + #endregion + } } \ No newline at end of file diff --git a/mRemoteNG/mRemoteNG.csproj b/mRemoteNG/mRemoteNG.csproj index 4532b8996..f95861123 100644 --- a/mRemoteNG/mRemoteNG.csproj +++ b/mRemoteNG/mRemoteNG.csproj @@ -310,7 +310,6 @@ - @@ -1564,6 +1563,10 @@ + + + + References\VncSharp.dll From 455e417a7015afb706a4a0893e145064d5c7f923 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Sat, 6 Jun 2020 02:20:54 +0200 Subject: [PATCH 05/21] added missing default setting property --- mRemoteNG/Properties/Settings.Designer.cs | 12 ++++++++++++ mRemoteNG/Properties/Settings.settings | 3 +++ 2 files changed, 15 insertions(+) diff --git a/mRemoteNG/Properties/Settings.Designer.cs b/mRemoteNG/Properties/Settings.Designer.cs index c50296679..a33d0d1b3 100644 --- a/mRemoteNG/Properties/Settings.Designer.cs +++ b/mRemoteNG/Properties/Settings.Designer.cs @@ -3035,6 +3035,18 @@ namespace mRemoteNG { } } + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool InhDefaultUseEnhancedMode { + get { + return ((bool)(this["InhDefaultUseEnhancedMode"])); + } + set { + this["InhDefaultUseEnhancedMode"] = value; + } + } + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] diff --git a/mRemoteNG/Properties/Settings.settings b/mRemoteNG/Properties/Settings.settings index f32147146..a03439f2a 100644 --- a/mRemoteNG/Properties/Settings.settings +++ b/mRemoteNG/Properties/Settings.settings @@ -755,6 +755,9 @@ False + + False + False From f8567bca797d859b51b5025899930885210be652 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Sat, 6 Jun 2020 23:15:53 +0200 Subject: [PATCH 06/21] removed xming sessions provider, fixes #1514 --- .../Putty/AbstractPuttySessionsProvider.cs | 2 - .../Config/Putty/PuttySessionsManager.cs | 14 +- .../Putty/PuttySessionsRegistryProvider.cs | 2 - .../Putty/PuttySessionsXmingProvider.cs | 378 ------------------ mRemoteNG/mRemoteNG.csproj | 1 - 5 files changed, 2 insertions(+), 395 deletions(-) delete mode 100644 mRemoteNG/Config/Putty/PuttySessionsXmingProvider.cs diff --git a/mRemoteNG/Config/Putty/AbstractPuttySessionsProvider.cs b/mRemoteNG/Config/Putty/AbstractPuttySessionsProvider.cs index b1347617b..88c634a14 100644 --- a/mRemoteNG/Config/Putty/AbstractPuttySessionsProvider.cs +++ b/mRemoteNG/Config/Putty/AbstractPuttySessionsProvider.cs @@ -1,10 +1,8 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; -using System.Web; using mRemoteNG.Connection; using mRemoteNG.Tree.Root; -using System.Text; using System.Net; // ReSharper disable ArrangeAccessorOwnerBody diff --git a/mRemoteNG/Config/Putty/PuttySessionsManager.cs b/mRemoteNG/Config/Putty/PuttySessionsManager.cs index 4286e60d3..739c8590d 100644 --- a/mRemoteNG/Config/Putty/PuttySessionsManager.cs +++ b/mRemoteNG/Config/Putty/PuttySessionsManager.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using mRemoteNG.Tools; @@ -24,7 +24,6 @@ namespace mRemoteNG.Config.Putty private PuttySessionsManager() { AddProvider(new PuttySessionsRegistryProvider()); - AddProvider(new PuttySessionsXmingProvider()); } @@ -124,16 +123,7 @@ namespace mRemoteNG.Config.Putty private bool IsProviderEnabled(AbstractPuttySessionsProvider puttySessionsProvider) { var enabled = true; - if (PuttyTypeDetector.GetPuttyType() == PuttyTypeDetector.PuttyType.Xming) - { - if (puttySessionsProvider is PuttySessionsRegistryProvider) - enabled = false; - } - else - { - if (puttySessionsProvider is PuttySessionsXmingProvider) - enabled = false; - } + if (!(puttySessionsProvider is PuttySessionsRegistryProvider)) enabled = false; return enabled; } diff --git a/mRemoteNG/Config/Putty/PuttySessionsRegistryProvider.cs b/mRemoteNG/Config/Putty/PuttySessionsRegistryProvider.cs index 0489983f0..3f91a472b 100644 --- a/mRemoteNG/Config/Putty/PuttySessionsRegistryProvider.cs +++ b/mRemoteNG/Config/Putty/PuttySessionsRegistryProvider.cs @@ -3,8 +3,6 @@ using System.Collections.Generic; using System.Management; using System.Net; using System.Security.Principal; -using System.Text; -using System.Web; using Microsoft.Win32; using mRemoteNG.App; using mRemoteNG.Connection; diff --git a/mRemoteNG/Config/Putty/PuttySessionsXmingProvider.cs b/mRemoteNG/Config/Putty/PuttySessionsXmingProvider.cs deleted file mode 100644 index 5c8a348f7..000000000 --- a/mRemoteNG/Config/Putty/PuttySessionsXmingProvider.cs +++ /dev/null @@ -1,378 +0,0 @@ -using mRemoteNG.App; -using mRemoteNG.Connection; -using mRemoteNG.Connection.Protocol; -using mRemoteNG.Messages; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text.RegularExpressions; -using mRemoteNG.Tree.Root; -using System.Web; -using System.Net; - -namespace mRemoteNG.Config.Putty -{ - public class PuttySessionsXmingProvider : AbstractPuttySessionsProvider - { - public override RootPuttySessionsNodeInfo RootInfo { get; } = - new RootPuttySessionsNodeInfo {Name = "Xming Putty Sessions"}; - - private const string RegistrySessionNameFormat = "{0} [registry]"; - private const string RegistrySessionNamePattern = "(.*)\\ \\[registry\\]"; - - private static readonly PuttySessionsRegistryProvider PuttySessionsRegistryProvider = - new PuttySessionsRegistryProvider(); - - private static FileSystemWatcher _eventWatcher; - - #region Public Methods - - public override string[] GetSessionNames(bool raw = false) - { - var sessionsFolderPath = GetSessionsFolderPath(); - if (!Directory.Exists(sessionsFolderPath)) - { - return new string[] { }; - } - - var sessionNames = new List(); - foreach (var sessionName in Directory.GetFiles(sessionsFolderPath)) - { - var sessionFileName = Path.GetFileName(sessionName); - // ReSharper disable once ConstantConditionalAccessQualifier - sessionNames.Add(raw ? sessionFileName - : WebUtility.UrlDecode(sessionFileName?.Replace("+", "%2B"))); - } - - if (raw) - { - if (!sessionNames.Contains("Default%20Settings")) // Do not localize - sessionNames.Insert(0, "Default%20Settings"); - } - else - { - if (!sessionNames.Contains("Default Settings")) - sessionNames.Insert(0, "Default Settings"); - } - - var registrySessionNames = - PuttySessionsRegistryProvider.GetSessionNames(raw).Select(sessionName => string.Format(RegistrySessionNameFormat, sessionName)).ToList(); - - sessionNames.AddRange(registrySessionNames); - sessionNames.Sort(); - - return sessionNames.ToArray(); - } - - public override PuttySessionInfo GetSession(string sessionName) - { - var registrySessionName = GetRegistrySessionName(sessionName); - if (!string.IsNullOrEmpty(registrySessionName)) - { - return ModifyRegistrySessionInfo(PuttySessionsRegistryProvider.GetSession(registrySessionName)); - } - - var sessionsFolderPath = GetSessionsFolderPath(); - if (!Directory.Exists(sessionsFolderPath)) - { - return null; - } - - var sessionFile = Path.Combine(sessionsFolderPath, sessionName); - if (!File.Exists(sessionFile)) - { - return null; - } - - sessionName = WebUtility.UrlDecode(sessionName.Replace("+", "%2B")); - - var sessionFileReader = new SessionFileReader(sessionFile); - var sessionInfo = new PuttySessionInfo - { - PuttySession = sessionName, - Name = sessionName, - Hostname = sessionFileReader.GetValue("HostName"), - Username = sessionFileReader.GetValue("UserName") - }; - var protocol = sessionFileReader.GetValue("Protocol") ?? "ssh"; - switch (protocol.ToLowerInvariant()) - { - case "raw": - sessionInfo.Protocol = ProtocolType.RAW; - break; - case "rlogin": - sessionInfo.Protocol = ProtocolType.Rlogin; - break; - case "serial": - return null; - case "ssh": - object sshVersionObject = sessionFileReader.GetValue("SshProt"); - if (sshVersionObject != null) - { - var sshVersion = Convert.ToInt32(sshVersionObject); - sessionInfo.Protocol = sshVersion >= 2 ? ProtocolType.SSH2 : ProtocolType.SSH1; - } - else - { - sessionInfo.Protocol = ProtocolType.SSH2; - } - - break; - case "telnet": - sessionInfo.Protocol = ProtocolType.Telnet; - break; - default: - return null; - } - - sessionInfo.Port = Convert.ToInt32(sessionFileReader.GetValue("PortNumber")); - - return sessionInfo; - } - - public override void StartWatcher() - { - if (_eventWatcher != null) - { - return; - } - - try - { - var sessionsFolderPath = GetSessionsFolderPath(); - - if (!Directory.Exists(sessionsFolderPath)) - { - Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, - $"XmingPortablePuttySessions.Watcher.StartWatching() failed: '{sessionsFolderPath}' does not exist.", - true); - return; - } - - _eventWatcher = new FileSystemWatcher(sessionsFolderPath) - { - NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite - }; - _eventWatcher.Changed += OnFileSystemEventArrived; - _eventWatcher.Created += OnFileSystemEventArrived; - _eventWatcher.Deleted += OnFileSystemEventArrived; - _eventWatcher.Renamed += OnFileSystemEventArrived; - _eventWatcher.EnableRaisingEvents = true; - } - catch (Exception ex) - { - Runtime.MessageCollector.AddExceptionMessage( - "XmingPortablePuttySessions.Watcher.StartWatching() failed.", - ex, MessageClass.WarningMsg); - } - } - - public override void StopWatcher() - { - PuttySessionsRegistryProvider.StopWatcher(); - PuttySessionsRegistryProvider.PuttySessionChanged -= OnRegistrySessionChanged; - - if (_eventWatcher == null) - { - return; - } - - _eventWatcher.EnableRaisingEvents = false; - _eventWatcher.Dispose(); - } - - #endregion - - #region Private Methods - - private static string GetPuttyConfPath() - { - var puttyPath = mRemoteNG.Settings.Default.UseCustomPuttyPath - ? mRemoteNG.Settings.Default.CustomPuttyPath - : App.Info.GeneralAppInfo.PuttyPath; - puttyPath = Path.GetDirectoryName(puttyPath); - return string.IsNullOrEmpty(puttyPath) ? null : Path.Combine(puttyPath, "putty.conf"); - } - - private static string GetSessionsFolderPath() - { - var puttyConfPath = GetPuttyConfPath(); - var sessionFileReader = new PuttyConfFileReader(puttyConfPath); - var basePath = Environment.ExpandEnvironmentVariables(sessionFileReader.GetValue("sshk&sess")); - return Path.Combine(basePath, "sessions"); - } - - private static string GetRegistrySessionName(string sessionName) - { - var regex = new Regex(RegistrySessionNamePattern); - - var matches = regex.Matches(sessionName); - if (matches.Count < 1) - { - return string.Empty; - } - - var groups = matches[0].Groups; - return groups.Count < 1 ? string.Empty : groups[1].Value; - } - - private static PuttySessionInfo ModifyRegistrySessionInfo(PuttySessionInfo sessionInfo) - { - if (sessionInfo == null) - return null; - - sessionInfo.Name = string.Format(RegistrySessionNameFormat, sessionInfo.Name); - sessionInfo.PuttySession = string.Format(RegistrySessionNameFormat, sessionInfo.PuttySession); - return sessionInfo; - } - - private void OnFileSystemEventArrived(object sender, FileSystemEventArgs e) - { - RaiseSessionChangedEvent(new PuttySessionChangedEventArgs()); - } - - private void OnRegistrySessionChanged(object sender, PuttySessionChangedEventArgs e) - { - RaiseSessionChangedEvent(new PuttySessionChangedEventArgs()); - } - - #endregion - - #region Private Classes - - private class PuttyConfFileReader - { - public PuttyConfFileReader(string puttyConfFile) - { - _puttyConfFile = puttyConfFile; - } - - private string _puttyConfFile; - private bool _configurationLoaded; - private Dictionary _configuration = new Dictionary(); - - private void LoadConfiguration() - { - _configurationLoaded = true; - try - { - if (!File.Exists(_puttyConfFile)) - { - return; - } - - using (var streamReader = new StreamReader(_puttyConfFile)) - { - do - { - var line = streamReader.ReadLine(); - if (line == null) - { - break; - } - - line = line.Trim(); - if (line == string.Empty) - { - continue; // Blank line - } - - if (line.Substring(0, 1) == ";") - { - continue; // Comment - } - - var parts = line.Split(new[] {'='}, 2); - if (parts.Length < 2) - { - continue; - } - - if (_configuration.ContainsKey(parts[0])) - { - continue; // As per http://www.straightrunning.com/XmingNotes/portableputty.php only first entry is used - } - - _configuration.Add(parts[0], parts[1]); - } while (true); - } - } - catch (Exception ex) - { - Runtime.MessageCollector.AddExceptionMessage("PuttyConfFileReader.LoadConfiguration() failed.", ex); - } - } - - public string GetValue(string setting) - { - if (!_configurationLoaded) - { - LoadConfiguration(); - } - - return !_configuration.ContainsKey(setting) ? string.Empty : _configuration[setting]; - } - } - - private class SessionFileReader - { - public SessionFileReader(string sessionFile) - { - _sessionFile = sessionFile; - } - - private string _sessionFile; - private bool _sessionInfoLoaded; - private Dictionary _sessionInfo = new Dictionary(); - - private void LoadSessionInfo() - { - _sessionInfoLoaded = true; - try - { - if (!File.Exists(_sessionFile)) - { - return; - } - - using (var streamReader = new StreamReader(_sessionFile)) - { - do - { - var line = streamReader.ReadLine(); - if (line == null) - { - break; - } - - var parts = line.Split('\\'); - if (parts.Length < 2) - { - continue; - } - - _sessionInfo.Add(parts[0], parts[1]); - } while (true); - } - } - catch (Exception ex) - { - Runtime.MessageCollector.AddExceptionMessage("SessionFileReader.LoadSessionInfo() failed.", ex); - } - } - - public string GetValue(string setting) - { - if (!_sessionInfoLoaded) - { - LoadSessionInfo(); - } - - return !_sessionInfo.ContainsKey(setting) ? string.Empty : _sessionInfo[setting]; - } - } - - #endregion - } -} \ No newline at end of file diff --git a/mRemoteNG/mRemoteNG.csproj b/mRemoteNG/mRemoteNG.csproj index f95861123..d7c20be5a 100644 --- a/mRemoteNG/mRemoteNG.csproj +++ b/mRemoteNG/mRemoteNG.csproj @@ -169,7 +169,6 @@ - From d71067d2462413f5878efc81396aaa0537c84af3 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Sat, 6 Jun 2020 23:26:40 +0200 Subject: [PATCH 07/21] improved FIPS policy check log output --- mRemoteNG/App/CompatibilityChecker.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mRemoteNG/App/CompatibilityChecker.cs b/mRemoteNG/App/CompatibilityChecker.cs index fb603eab5..bd31bf331 100644 --- a/mRemoteNG/App/CompatibilityChecker.cs +++ b/mRemoteNG/App/CompatibilityChecker.cs @@ -21,12 +21,14 @@ namespace mRemoteNG.App { if (Settings.Default.OverrideFIPSCheck) { - messageCollector.AddMessage(MessageClass.InformationMsg, "OverrideFIPSCheck is set. Will skip check...", - true); + messageCollector.AddMessage(MessageClass.InformationMsg, "OverrideFIPSCheck is set. Will skip check", true); return; } - messageCollector.AddMessage(MessageClass.InformationMsg, "Checking FIPS Policy...", true); + messageCollector.AddMessage(MessageClass.InformationMsg, "Checking FIPS policy...", true); + messageCollector.AddMessage(MessageClass.InformationMsg, $"FIPS2003: {FipsPolicyEnabledForServer2003()}", true); + messageCollector.AddMessage(MessageClass.InformationMsg, $"FIPS2008+: {FipsPolicyEnabledForServer2008AndNewer()}", true); + if (!FipsPolicyEnabledForServer2003() && !FipsPolicyEnabledForServer2008AndNewer()) return; var errorText = string.Format(Language.ErrorFipsPolicyIncompatible, GeneralAppInfo.ProductName); From a0dd2705780bc0aa4320d99a28970b5ee6f800e5 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Sat, 6 Jun 2020 23:32:12 +0200 Subject: [PATCH 08/21] improved lenovo autoscroll utility check log output --- mRemoteNG/App/CompatibilityChecker.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mRemoteNG/App/CompatibilityChecker.cs b/mRemoteNG/App/CompatibilityChecker.cs index bd31bf331..0920681e3 100644 --- a/mRemoteNG/App/CompatibilityChecker.cs +++ b/mRemoteNG/App/CompatibilityChecker.cs @@ -88,7 +88,14 @@ namespace mRemoteNG.App messageCollector.AddExceptionMessage("Error in CheckLenovoAutoScrollUtility", ex); } - if (proccesses.Length <= 0) return; + if (proccesses.Length <= 0) + { + messageCollector.AddMessage(MessageClass.InformationMsg, "Lenovo AutoScroll Utility not found", true); + return; + } + + messageCollector.AddMessage(MessageClass.WarningMsg, "Lenovo AutoScroll Utility found", true); + CTaskDialog.MessageBox(Application.ProductName, Language.CompatibilityProblemDetected, string.Format(Language.CompatibilityLenovoAutoScrollUtilityDetected, Application.ProductName), "", From 956128683a529075119d30a015f77b0ab7c57db7 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Sat, 6 Jun 2020 23:57:15 +0200 Subject: [PATCH 09/21] renamed MainFileMenu class to FIleMenu --- mRemoteNG/UI/Forms/frmMain.Designer.cs | 4 ++-- mRemoteNG/UI/Menu/{MainFileMenu.cs => FileMenu.cs} | 4 ++-- mRemoteNG/mRemoteNG.csproj | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) rename mRemoteNG/UI/Menu/{MainFileMenu.cs => FileMenu.cs} (99%) diff --git a/mRemoteNG/UI/Forms/frmMain.Designer.cs b/mRemoteNG/UI/Forms/frmMain.Designer.cs index bf41252a9..899582f67 100644 --- a/mRemoteNG/UI/Forms/frmMain.Designer.cs +++ b/mRemoteNG/UI/Forms/frmMain.Designer.cs @@ -36,7 +36,7 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain)); this.pnlDock = new WeifenLuo.WinFormsUI.Docking.DockPanel(); this.msMain = new System.Windows.Forms.MenuStrip(); - this.fileMenu = new mRemoteNG.UI.Menu.MainFileMenu(); + this.fileMenu = new mRemoteNG.UI.Menu.FileMenu(); this.viewMenu = new mRemoteNG.UI.Menu.ViewMenu(); this.toolsMenu = new mRemoteNG.UI.Menu.ToolsMenu(); this.helpMenu = new mRemoteNG.UI.Menu.HelpMenu(); @@ -224,7 +224,7 @@ internal System.Windows.Forms.Timer tmrAutoSave; internal System.Windows.Forms.ToolStripSeparator mMenSep3; private System.ComponentModel.IContainer components; - private Menu.MainFileMenu fileMenu; + private Menu.FileMenu fileMenu; private Menu.ViewMenu viewMenu; private Menu.ToolsMenu toolsMenu; private Menu.HelpMenu helpMenu; diff --git a/mRemoteNG/UI/Menu/MainFileMenu.cs b/mRemoteNG/UI/Menu/FileMenu.cs similarity index 99% rename from mRemoteNG/UI/Menu/MainFileMenu.cs rename to mRemoteNG/UI/Menu/FileMenu.cs index a3c762ef1..5c14c3a89 100644 --- a/mRemoteNG/UI/Menu/MainFileMenu.cs +++ b/mRemoteNG/UI/Menu/FileMenu.cs @@ -11,7 +11,7 @@ using mRemoteNG.UI.Window; namespace mRemoteNG.UI.Menu { - public class MainFileMenu : ToolStripMenuItem + public class FileMenu : ToolStripMenuItem { private ToolStripMenuItem _mMenFileNew; private ToolStripMenuItem _mMenFileLoad; @@ -38,7 +38,7 @@ namespace mRemoteNG.UI.Menu public ConnectionTreeWindow TreeWindow { get; set; } public IConnectionInitiator ConnectionInitiator { get; set; } - public MainFileMenu() + public FileMenu() { Initialize(); } diff --git a/mRemoteNG/mRemoteNG.csproj b/mRemoteNG/mRemoteNG.csproj index d7c20be5a..43ddd2fe5 100644 --- a/mRemoteNG/mRemoteNG.csproj +++ b/mRemoteNG/mRemoteNG.csproj @@ -664,7 +664,7 @@ Component - + Component From 90065605a953a86015c7cabbf9a2ecda28830db7 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 9 Jun 2020 15:23:20 +0200 Subject: [PATCH 10/21] added missing properties to sql scripts --- mRemoteNG/Documentation/mssql_db_setup.sql | 24 +++++++++++++--------- mRemoteNG/Documentation/mysql_db_setup.sql | 17 ++++++++------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/mRemoteNG/Documentation/mssql_db_setup.sql b/mRemoteNG/Documentation/mssql_db_setup.sql index 04085234a..73f93b5eb 100644 --- a/mRemoteNG/Documentation/mssql_db_setup.sql +++ b/mRemoteNG/Documentation/mssql_db_setup.sql @@ -28,6 +28,8 @@ CREATE TABLE [dbo].[tblCons] ( Username varchar(512), DomainName varchar(512), Password varchar(1024), + SSHTunnelConnectionName varchar(128) NOT NULL, + SSHOptions varchar(1024) NOT NULL, Hostname varchar(512), Protocol varchar(32) NOT NULL, PuttySession varchar(128), @@ -45,17 +47,15 @@ CREATE TABLE [dbo].[tblCons] ( DisplayThemes bit NOT NULL, EnableFontSmoothing bit NOT NULL, EnableDesktopComposition bit NOT NULL, - - DisableFullWindowDrag bit NOT NULL, DisableMenuAnimations bit NOT NULL, DisableCursorShadow bit NOT NULL, DisableCursorBlinking bit NOT NULL, - CacheBitmaps bit NOT NULL, RedirectDiskDrives bit NOT NULL, RedirectPorts bit NOT NULL, RedirectPrinters bit NOT NULL, + RedirectClipboard bit NOT NULL, RedirectSmartCards bit NOT NULL, RedirectSound varchar(64) NOT NULL, SoundQuality varchar(20) NOT NULL, @@ -67,6 +67,7 @@ CREATE TABLE [dbo].[tblCons] ( MacAddress varchar(32), UserField varchar(256), ExtApp varchar(256), + Favorite tinyint(1) NOT NULL, VNCCompression varchar(10), VNCEncoding varchar(20), VNCAuthMode varchar(10), @@ -84,6 +85,13 @@ CREATE TABLE [dbo].[tblCons] ( RDGatewayUsername varchar(512), RDGatewayPassword varchar(1024), RDGatewayDomain varchar(512), + LoadBalanceInfo varchar(1024), + AutomaticResize bit DEFAULT ((1)) NOT NULL, + RedirectClipboard bit DEFAULT ((0)) NOT NULL, + RdpVersion varchar(10), + VmId varchar(100), + UseVmId bit, + UseEnhancedMode bit DEFAULT ((0)), InheritCacheBitmaps bit NOT NULL, InheritColors bit NOT NULL, InheritDescription bit NOT NULL, @@ -97,6 +105,8 @@ CREATE TABLE [dbo].[tblCons] ( InheritPassword bit NOT NULL, InheritPort bit NOT NULL, InheritProtocol bit NOT NULL, + InheritSSHTunnelConnectionName bit NOT NULL, + InheritSSHOptions bit NOT NULL, InheritPuttySession bit NOT NULL, InheritRedirectDiskDrives bit NOT NULL, InheritRedirectKeys bit NOT NULL, @@ -118,6 +128,7 @@ CREATE TABLE [dbo].[tblCons] ( InheritPreExtApp bit NOT NULL, InheritPostExtApp bit NOT NULL, InheritMacAddress bit NOT NULL, + InheritFavorite bit NOT NULL, InheritUserField bit NOT NULL, InheritExtApp bit NOT NULL, InheritVNCCompression bit NOT NULL, @@ -137,17 +148,10 @@ CREATE TABLE [dbo].[tblCons] ( InheritRDGatewayUsername bit NOT NULL, InheritRDGatewayPassword bit NOT NULL, InheritRDGatewayDomain bit NOT NULL, - LoadBalanceInfo varchar(1024), - AutomaticResize bit DEFAULT ((1)) NOT NULL, InheritLoadBalanceInfo bit DEFAULT ((0)) NOT NULL, InheritAutomaticResize bit DEFAULT ((0)) NOT NULL, - RedirectClipboard bit DEFAULT ((0)) NOT NULL, InheritRedirectClipboard bit DEFAULT ((0)) NOT NULL, - RdpVersion varchar(10), InheritRdpVersion bit DEFAULT ((0)) NOT NULL, - VmId varchar(100), - UseVmId bit, - UseEnhancedMode bit DEFAULT ((0)), InheritVmId bit , InheritUseVmId bit, InheritUseEnhancedMode bit DEFAULT ((0)) diff --git a/mRemoteNG/Documentation/mysql_db_setup.sql b/mRemoteNG/Documentation/mysql_db_setup.sql index 7cbe55a50..f4543ccb7 100644 --- a/mRemoteNG/Documentation/mysql_db_setup.sql +++ b/mRemoteNG/Documentation/mysql_db_setup.sql @@ -58,6 +58,7 @@ CREATE TABLE `tblCons` ( `RedirectDiskDrives` tinyint(1) NOT NULL, `RedirectPorts` tinyint(1) NOT NULL, `RedirectPrinters` tinyint(1) NOT NULL, + `RedirectClipboard` tinyint(1) NOT NULL, `RedirectSmartCards` tinyint(1) NOT NULL, `RedirectSound` varchar(64) NOT NULL, `SoundQuality` varchar(20) NOT NULL, @@ -69,6 +70,7 @@ CREATE TABLE `tblCons` ( `MacAddress` varchar(32) DEFAULT NULL, `UserField` varchar(256) DEFAULT NULL, `ExtApp` varchar(256) DEFAULT NULL, + `Favorite` tinyint(1) NOT NULL, `VNCCompression` varchar(10) DEFAULT NULL, `VNCEncoding` varchar(20) DEFAULT NULL, `VNCAuthMode` varchar(10) DEFAULT NULL, @@ -86,6 +88,13 @@ CREATE TABLE `tblCons` ( `RDGatewayUsername` varchar(512) DEFAULT NULL, `RDGatewayPassword` varchar(1024) DEFAULT NULL, `RDGatewayDomain` varchar(512) DEFAULT NULL, + `LoadBalanceInfo` varchar(1024) DEFAULT NULL, + `AutomaticResize` tinyint(1) NOT NULL DEFAULT 1, + `RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, + `RdpVersion` varchar(10) DEFAULT NULL, + `VmId` varchar(512) DEFAULT NULL, + `UseVmId` tinyint(1) DEFAULT NULL, + `UseEnhancedMode` tinyint(1) DEFAULT NULL, `InheritCacheBitmaps` tinyint(1) NOT NULL, `InheritColors` tinyint(1) NOT NULL, `InheritDescription` tinyint(1) NOT NULL, @@ -122,6 +131,7 @@ CREATE TABLE `tblCons` ( `InheritPreExtApp` tinyint(1) NOT NULL, `InheritPostExtApp` tinyint(1) NOT NULL, `InheritMacAddress` tinyint(1) NOT NULL, + `InheritFavorite` tinyint(1) NOT NULL, `InheritUserField` tinyint(1) NOT NULL, `InheritExtApp` tinyint(1) NOT NULL, `InheritVNCCompression` tinyint(1) NOT NULL, @@ -141,17 +151,10 @@ CREATE TABLE `tblCons` ( `InheritRDGatewayUsername` tinyint(1) NOT NULL, `InheritRDGatewayPassword` tinyint(1) NOT NULL, `InheritRDGatewayDomain` tinyint(1) NOT NULL, - `LoadBalanceInfo` varchar(1024) DEFAULT NULL, - `AutomaticResize` tinyint(1) NOT NULL DEFAULT 1, `InheritLoadBalanceInfo` tinyint(1) NOT NULL DEFAULT 0, `InheritAutomaticResize` tinyint(1) NOT NULL DEFAULT 0, - `RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, `InheritRedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, - `RdpVersion` varchar(10) DEFAULT NULL, `InheritRdpVersion` tinyint(1) NOT NULL DEFAULT 0, - `VmId` varchar(512) DEFAULT NULL, - `UseVmId` tinyint(1) DEFAULT NULL, - `UseEnhancedMode` tinyint(1) DEFAULT NULL, `InheritVmId` tinyint(1) DEFAULT NULL, `InheritUseVmId` tinyint(1) DEFAULT NULL, `InheritUseEnhancedMode` tinyint(1) DEFAULT NULL, From 3f7e7c50b3030866b4a754ad260697e40e41a9a7 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 9 Jun 2020 15:37:28 +0200 Subject: [PATCH 11/21] ordered sql scripts alphabetically --- mRemoteNG/Documentation/mssql_db_setup.sql | 192 +++++++-------- mRemoteNG/Documentation/mysql_db_setup.sql | 262 ++++++++++----------- 2 files changed, 227 insertions(+), 227 deletions(-) diff --git a/mRemoteNG/Documentation/mssql_db_setup.sql b/mRemoteNG/Documentation/mssql_db_setup.sql index 73f93b5eb..f74464f35 100644 --- a/mRemoteNG/Documentation/mssql_db_setup.sql +++ b/mRemoteNG/Documentation/mssql_db_setup.sql @@ -22,139 +22,139 @@ CREATE TABLE [dbo].[tblCons] ( Name varchar(128) NOT NULL, [Type] varchar(32) NOT NULL, Expanded bit NOT NULL, - Description varchar(1024), - Icon varchar(128) NOT NULL, - Panel varchar(128) NOT NULL, - Username varchar(512), - DomainName varchar(512), - Password varchar(1024), - SSHTunnelConnectionName varchar(128) NOT NULL, - SSHOptions varchar(1024) NOT NULL, - Hostname varchar(512), - Protocol varchar(32) NOT NULL, - PuttySession varchar(128), - Port int NOT NULL, - ConnectToConsole bit NOT NULL, - UseCredSsp bit NOT NULL, - RenderingEngine varchar(10), - ICAEncryptionStrength varchar(32) NOT NULL, - RDPAuthenticationLevel varchar(32) NOT NULL, - RDPMinutesToIdleTimeout int NOT NULL, - RDPAlertIdleTimeout bit NOT NULL, + AutomaticResize bit DEFAULT ((1)) NOT NULL, + CacheBitmaps bit NOT NULL, Colors varchar(32) NOT NULL, - Resolution varchar(32) NOT NULL, - DisplayWallpaper bit NOT NULL, - DisplayThemes bit NOT NULL, - EnableFontSmoothing bit NOT NULL, - EnableDesktopComposition bit NOT NULL, + ConnectToConsole bit NOT NULL, + Connected bit NOT NULL, + Description varchar(1024), + DisableCursorBlinking bit NOT NULL, + DisableCursorShadow bit NOT NULL, DisableFullWindowDrag bit NOT NULL, DisableMenuAnimations bit NOT NULL, - DisableCursorShadow bit NOT NULL, - DisableCursorBlinking bit NOT NULL, - CacheBitmaps bit NOT NULL, - RedirectDiskDrives bit NOT NULL, - RedirectPorts bit NOT NULL, - RedirectPrinters bit NOT NULL, - RedirectClipboard bit NOT NULL, - RedirectSmartCards bit NOT NULL, - RedirectSound varchar(64) NOT NULL, - SoundQuality varchar(20) NOT NULL, - RedirectAudioCapture bit NOT NULL, - RedirectKeys bit NOT NULL, - Connected bit NOT NULL, - PreExtApp varchar(256), - PostExtApp varchar(256), - MacAddress varchar(32), - UserField varchar(256), + DisplayThemes bit NOT NULL, + DisplayWallpaper bit NOT NULL, + DomainName varchar(512), + EnableDesktopComposition bit NOT NULL, + EnableFontSmoothing bit NOT NULL, ExtApp varchar(256), - Favorite tinyint(1) NOT NULL, - VNCCompression varchar(10), - VNCEncoding varchar(20), - VNCAuthMode varchar(10), - VNCProxyType varchar(20), - VNCProxyIP varchar(128), - VNCProxyPort int, - VNCProxyUsername varchar(512), - VNCProxyPassword varchar(1024), - VNCColors varchar(10), - VNCSmartSizeMode varchar(20), - VNCViewOnly bit NOT NULL, - RDGatewayUsageMethod varchar(32) NOT NULL, + Favorite tinyint(1) NOT NULL, + Hostname varchar(512), + ICAEncryptionStrength varchar(32) NOT NULL, + Icon varchar(128) NOT NULL, + LoadBalanceInfo varchar(1024), + MacAddress varchar(32), + Panel varchar(128) NOT NULL, + Password varchar(1024), + Port int NOT NULL, + PostExtApp varchar(256), + PreExtApp varchar(256), + Protocol varchar(32) NOT NULL, + PuttySession varchar(128), + RDGatewayDomain varchar(512), RDGatewayHostname varchar(512), + RDGatewayPassword varchar(1024), + RDGatewayUsageMethod varchar(32) NOT NULL, RDGatewayUseConnectionCredentials varchar(32) NOT NULL, RDGatewayUsername varchar(512), - RDGatewayPassword varchar(1024), - RDGatewayDomain varchar(512), - LoadBalanceInfo varchar(1024), - AutomaticResize bit DEFAULT ((1)) NOT NULL, - RedirectClipboard bit DEFAULT ((0)) NOT NULL, + RDPAlertIdleTimeout bit NOT NULL, + RDPAuthenticationLevel varchar(32) NOT NULL, + RDPMinutesToIdleTimeout int NOT NULL, RdpVersion varchar(10), - VmId varchar(100), - UseVmId bit, + RedirectAudioCapture bit NOT NULL, + RedirectClipboard bit DEFAULT ((0)) NOT NULL, + RedirectClipboard bit NOT NULL, + RedirectDiskDrives bit NOT NULL, + RedirectKeys bit NOT NULL, + RedirectPorts bit NOT NULL, + RedirectPrinters bit NOT NULL, + RedirectSmartCards bit NOT NULL, + RedirectSound varchar(64) NOT NULL, + RenderingEngine varchar(10), + Resolution varchar(32) NOT NULL, + SSHOptions varchar(1024) NOT NULL, + SSHTunnelConnectionName varchar(128) NOT NULL, + SoundQuality varchar(20) NOT NULL, + UseCredSsp bit NOT NULL, UseEnhancedMode bit DEFAULT ((0)), + UseVmId bit, + UserField varchar(256), + Username varchar(512), + VNCAuthMode varchar(10), + VNCColors varchar(10), + VNCCompression varchar(10), + VNCEncoding varchar(20), + VNCProxyIP varchar(128), + VNCProxyPassword varchar(1024), + VNCProxyPort int, + VNCProxyType varchar(20), + VNCProxyUsername varchar(512), + VNCSmartSizeMode varchar(20), + VNCViewOnly bit NOT NULL, + VmId varchar(100), + InheritAutomaticResize bit DEFAULT ((0)) NOT NULL, InheritCacheBitmaps bit NOT NULL, InheritColors bit NOT NULL, InheritDescription bit NOT NULL, InheritDisplayThemes bit NOT NULL, InheritDisplayWallpaper bit NOT NULL, - InheritEnableFontSmoothing bit NOT NULL, - InheritEnableDesktopComposition bit NOT NULL, InheritDomain bit NOT NULL, + InheritEnableDesktopComposition bit NOT NULL, + InheritEnableFontSmoothing bit NOT NULL, + InheritExtApp bit NOT NULL, + InheritFavorite bit NOT NULL, + InheritICAEncryptionStrength bit NOT NULL, InheritIcon bit NOT NULL, + InheritLoadBalanceInfo bit DEFAULT ((0)) NOT NULL, + InheritMacAddress bit NOT NULL, InheritPanel bit NOT NULL, InheritPassword bit NOT NULL, InheritPort bit NOT NULL, + InheritPostExtApp bit NOT NULL, + InheritPreExtApp bit NOT NULL, InheritProtocol bit NOT NULL, - InheritSSHTunnelConnectionName bit NOT NULL, - InheritSSHOptions bit NOT NULL, InheritPuttySession bit NOT NULL, + InheritRDGatewayDomain bit NOT NULL, + InheritRDGatewayHostname bit NOT NULL, + InheritRDGatewayPassword bit NOT NULL, + InheritRDGatewayUsageMethod bit NOT NULL, + InheritRDGatewayUseConnectionCredentials bit NOT NULL, + InheritRDGatewayUsername bit NOT NULL, + InheritRDPAlertIdleTimeout bit NOT NULL, + InheritRDPAuthenticationLevel bit NOT NULL, + InheritRDPMinutesToIdleTimeout bit NOT NULL, + InheritRdpVersion bit DEFAULT ((0)) NOT NULL, + InheritRedirectAudioCapture bit NOT NULL, + InheritRedirectClipboard bit DEFAULT ((0)) NOT NULL, InheritRedirectDiskDrives bit NOT NULL, InheritRedirectKeys bit NOT NULL, InheritRedirectPorts bit NOT NULL, InheritRedirectPrinters bit NOT NULL, InheritRedirectSmartCards bit NOT NULL, InheritRedirectSound bit NOT NULL, - InheritSoundQuality bit NOT NULL, - InheritRedirectAudioCapture bit NOT NULL, + InheritRenderingEngine bit NOT NULL, InheritResolution bit NOT NULL, + InheritSSHOptions bit NOT NULL, + InheritSSHTunnelConnectionName bit NOT NULL, + InheritSoundQuality bit NOT NULL, InheritUseConsoleSession bit NOT NULL, InheritUseCredSsp bit NOT NULL, - InheritRenderingEngine bit NOT NULL, - InheritICAEncryptionStrength bit NOT NULL, - InheritRDPAuthenticationLevel bit NOT NULL, - InheritRDPMinutesToIdleTimeout bit NOT NULL, - InheritRDPAlertIdleTimeout bit NOT NULL, - InheritUsername bit NOT NULL, - InheritPreExtApp bit NOT NULL, - InheritPostExtApp bit NOT NULL, - InheritMacAddress bit NOT NULL, - InheritFavorite bit NOT NULL, + InheritUseEnhancedMode bit DEFAULT ((0)), + InheritUseVmId bit, InheritUserField bit NOT NULL, - InheritExtApp bit NOT NULL, + InheritUsername bit NOT NULL, + InheritVNCAuthMode bit NOT NULL, + InheritVNCColors bit NOT NULL, InheritVNCCompression bit NOT NULL, InheritVNCEncoding bit NOT NULL, - InheritVNCAuthMode bit NOT NULL, - InheritVNCProxyType bit NOT NULL, InheritVNCProxyIP bit NOT NULL, - InheritVNCProxyPort bit NOT NULL, - InheritVNCProxyUsername bit NOT NULL, InheritVNCProxyPassword bit NOT NULL, - InheritVNCColors bit NOT NULL, + InheritVNCProxyPort bit NOT NULL, + InheritVNCProxyType bit NOT NULL, + InheritVNCProxyUsername bit NOT NULL, InheritVNCSmartSizeMode bit NOT NULL, InheritVNCViewOnly bit NOT NULL, - InheritRDGatewayUsageMethod bit NOT NULL, - InheritRDGatewayHostname bit NOT NULL, - InheritRDGatewayUseConnectionCredentials bit NOT NULL, - InheritRDGatewayUsername bit NOT NULL, - InheritRDGatewayPassword bit NOT NULL, - InheritRDGatewayDomain bit NOT NULL, - InheritLoadBalanceInfo bit DEFAULT ((0)) NOT NULL, - InheritAutomaticResize bit DEFAULT ((0)) NOT NULL, - InheritRedirectClipboard bit DEFAULT ((0)) NOT NULL, - InheritRdpVersion bit DEFAULT ((0)) NOT NULL, - InheritVmId bit , - InheritUseVmId bit, - InheritUseEnhancedMode bit DEFAULT ((0)) + InheritVmId bit ) ON [PRIMARY] GO diff --git a/mRemoteNG/Documentation/mysql_db_setup.sql b/mRemoteNG/Documentation/mysql_db_setup.sql index f4543ccb7..3d072ae3e 100644 --- a/mRemoteNG/Documentation/mysql_db_setup.sql +++ b/mRemoteNG/Documentation/mysql_db_setup.sql @@ -25,139 +25,139 @@ CREATE TABLE `tblCons` ( `Name` varchar(128) NOT NULL, `Type` varchar(32) NOT NULL, `Expanded` tinyint(1) NOT NULL, - `Description` varchar(1024) DEFAULT NULL, - `Icon` varchar(128) NOT NULL, - `Panel` varchar(128) NOT NULL, - `Username` varchar(512) DEFAULT NULL, - `DomainName` varchar(512) DEFAULT NULL, - `Password` varchar(1024) DEFAULT NULL, - `SSHTunnelConnectionName` varchar(128) NOT NULL, - `SSHOptions` varchar(1024) NOT NULL, - `Hostname` varchar(512) DEFAULT NULL, - `Protocol` varchar(32) NOT NULL, - `PuttySession` varchar(128) DEFAULT NULL, - `Port` int(11) NOT NULL, - `ConnectToConsole` tinyint(1) NOT NULL, - `UseCredSsp` tinyint(1) NOT NULL, - `RenderingEngine` varchar(10) DEFAULT NULL, - `ICAEncryptionStrength` varchar(32) NOT NULL, - `RDPAuthenticationLevel` varchar(32) NOT NULL, - `RDPMinutesToIdleTimeout` int(11) NOT NULL, - `RDPAlertIdleTimeout` tinyint(1) NOT NULL, - `Colors` varchar(32) NOT NULL, - `Resolution` varchar(32) NOT NULL, - `DisplayWallpaper` tinyint(1) NOT NULL, - `DisplayThemes` tinyint(1) NOT NULL, - `EnableFontSmoothing` tinyint(1) NOT NULL, - `EnableDesktopComposition` tinyint(1) NOT NULL, - `DisableFullWindowDrag` tinyint(1) NOT NULL, - `DisableMenuAnimations` tinyint(1) NOT NULL, - `DisableCursorShadow` tinyint(1) NOT NULL, - `DisableCursorBlinking` tinyint(1) NOT NULL, - `CacheBitmaps` tinyint(1) NOT NULL, - `RedirectDiskDrives` tinyint(1) NOT NULL, - `RedirectPorts` tinyint(1) NOT NULL, - `RedirectPrinters` tinyint(1) NOT NULL, - `RedirectClipboard` tinyint(1) NOT NULL, - `RedirectSmartCards` tinyint(1) NOT NULL, - `RedirectSound` varchar(64) NOT NULL, - `SoundQuality` varchar(20) NOT NULL, - `RedirectAudioCapture` tinyint(1) NOT NULL, - `RedirectKeys` tinyint(1) NOT NULL, - `Connected` tinyint(1) NOT NULL, - `PreExtApp` varchar(256) DEFAULT NULL, - `PostExtApp` varchar(256) DEFAULT NULL, - `MacAddress` varchar(32) DEFAULT NULL, - `UserField` varchar(256) DEFAULT NULL, - `ExtApp` varchar(256) DEFAULT NULL, - `Favorite` tinyint(1) NOT NULL, - `VNCCompression` varchar(10) DEFAULT NULL, - `VNCEncoding` varchar(20) DEFAULT NULL, - `VNCAuthMode` varchar(10) DEFAULT NULL, - `VNCProxyType` varchar(20) DEFAULT NULL, - `VNCProxyIP` varchar(128) DEFAULT NULL, - `VNCProxyPort` int(11) DEFAULT NULL, - `VNCProxyUsername` varchar(512) DEFAULT NULL, - `VNCProxyPassword` varchar(1024) DEFAULT NULL, - `VNCColors` varchar(10) DEFAULT NULL, - `VNCSmartSizeMode` varchar(20) DEFAULT NULL, - `VNCViewOnly` tinyint(1) NOT NULL, - `RDGatewayUsageMethod` varchar(32) NOT NULL, - `RDGatewayHostname` varchar(512) DEFAULT NULL, - `RDGatewayUseConnectionCredentials` varchar(32) NOT NULL, - `RDGatewayUsername` varchar(512) DEFAULT NULL, - `RDGatewayPassword` varchar(1024) DEFAULT NULL, - `RDGatewayDomain` varchar(512) DEFAULT NULL, - `LoadBalanceInfo` varchar(1024) DEFAULT NULL, - `AutomaticResize` tinyint(1) NOT NULL DEFAULT 1, - `RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, - `RdpVersion` varchar(10) DEFAULT NULL, - `VmId` varchar(512) DEFAULT NULL, - `UseVmId` tinyint(1) DEFAULT NULL, + `AutomaticResize` tinyint(1) NOT NULL DEFAULT 1, + `CacheBitmaps` tinyint(1) NOT NULL, + `Colors` varchar(32) NOT NULL, + `ConnectToConsole` tinyint(1) NOT NULL, + `Connected` tinyint(1) NOT NULL, + `Description` varchar(1024) DEFAULT NULL, + `DisableCursorBlinking` tinyint(1) NOT NULL, + `DisableCursorShadow` tinyint(1) NOT NULL, + `DisableFullWindowDrag` tinyint(1) NOT NULL, + `DisableMenuAnimations` tinyint(1) NOT NULL, + `DisplayThemes` tinyint(1) NOT NULL, + `DisplayWallpaper` tinyint(1) NOT NULL, + `DomainName` varchar(512) DEFAULT NULL, + `EnableDesktopComposition` tinyint(1) NOT NULL, + `EnableFontSmoothing` tinyint(1) NOT NULL, + `ExtApp` varchar(256) DEFAULT NULL, + `Favorite` tinyint(1) NOT NULL, + `Hostname` varchar(512) DEFAULT NULL, + `LoadBalanceInfo` varchar(1024) DEFAULT NULL, + `MacAddress` varchar(32) DEFAULT NULL, + `Panel` varchar(128) NOT NULL, + `Password` varchar(1024) DEFAULT NULL, + `Port` int(11) NOT NULL, + `PostExtApp` varchar(256) DEFAULT NULL, + `PreExtApp` varchar(256) DEFAULT NULL, + `Protocol` varchar(32) NOT NULL, + `PuttySession` varchar(128) DEFAULT NULL, + `RDGatewayDomain` varchar(512) DEFAULT NULL, + `RDGatewayHostname` varchar(512) DEFAULT NULL, + `RDGatewayPassword` varchar(1024) DEFAULT NULL, + `RDGatewayUsageMethod` varchar(32) NOT NULL, + `RDGatewayUseConnectionCredentials` varchar(32) NOT NULL, + `RDGatewayUsername` varchar(512) DEFAULT NULL, + `RDPAlertIdleTimeout` tinyint(1) NOT NULL, + `RDPAuthenticationLevel` varchar(32) NOT NULL, + `RDPMinutesToIdleTimeout` int(11) NOT NULL, + `RdpVersion` varchar(10) DEFAULT NULL, + `RedirectAudioCapture` tinyint(1) NOT NULL, + `RedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, + `RedirectClipboard` tinyint(1) NOT NULL, + `RedirectDiskDrives` tinyint(1) NOT NULL, + `RedirectKeys` tinyint(1) NOT NULL, + `RedirectPorts` tinyint(1) NOT NULL, + `RedirectPrinters` tinyint(1) NOT NULL, + `RedirectSmartCards` tinyint(1) NOT NULL, + `RedirectSound` varchar(64) NOT NULL, + `RenderingEngine` varchar(10) DEFAULT NULL, + `Resolution` varchar(32) NOT NULL, + `SSHOptions` varchar(1024) NOT NULL, + `SSHTunnelConnectionName` varchar(128) NOT NULL, + `SoundQuality` varchar(20) NOT NULL, + `UseCredSsp` tinyint(1) NOT NULL, `UseEnhancedMode` tinyint(1) DEFAULT NULL, - `InheritCacheBitmaps` tinyint(1) NOT NULL, - `InheritColors` tinyint(1) NOT NULL, - `InheritDescription` tinyint(1) NOT NULL, - `InheritDisplayThemes` tinyint(1) NOT NULL, - `InheritDisplayWallpaper` tinyint(1) NOT NULL, - `InheritEnableFontSmoothing` tinyint(1) NOT NULL, - `InheritEnableDesktopComposition` tinyint(1) NOT NULL, - `InheritDomain` tinyint(1) NOT NULL, - `InheritIcon` tinyint(1) NOT NULL, - `InheritPanel` tinyint(1) NOT NULL, - `InheritPassword` tinyint(1) NOT NULL, - `InheritPort` tinyint(1) NOT NULL, - `InheritProtocol` tinyint(1) NOT NULL, - `InheritSSHTunnelConnectionName` tinyint(1) NOT NULL, - `InheritSSHOptions` tinyint(1) NOT NULL, - `InheritPuttySession` tinyint(1) NOT NULL, - `InheritRedirectDiskDrives` tinyint(1) NOT NULL, - `InheritRedirectKeys` tinyint(1) NOT NULL, - `InheritRedirectPorts` tinyint(1) NOT NULL, - `InheritRedirectPrinters` tinyint(1) NOT NULL, - `InheritRedirectSmartCards` tinyint(1) NOT NULL, - `InheritRedirectSound` tinyint(1) NOT NULL, - `InheritSoundQuality` tinyint(1) NOT NULL, - `InheritRedirectAudioCapture` tinyint(1) NOT NULL, - `InheritResolution` tinyint(1) NOT NULL, - `InheritUseConsoleSession` tinyint(1) NOT NULL, - `InheritUseCredSsp` tinyint(1) NOT NULL, - `InheritRenderingEngine` tinyint(1) NOT NULL, - `InheritICAEncryptionStrength` tinyint(1) NOT NULL, - `InheritRDPAuthenticationLevel` tinyint(1) NOT NULL, - `InheritRDPMinutesToIdleTimeout` tinyint(1) NOT NULL, - `InheritRDPAlertIdleTimeout` tinyint(1) NOT NULL, - `InheritUsername` tinyint(1) NOT NULL, - `InheritPreExtApp` tinyint(1) NOT NULL, - `InheritPostExtApp` tinyint(1) NOT NULL, - `InheritMacAddress` tinyint(1) NOT NULL, - `InheritFavorite` tinyint(1) NOT NULL, - `InheritUserField` tinyint(1) NOT NULL, - `InheritExtApp` tinyint(1) NOT NULL, - `InheritVNCCompression` tinyint(1) NOT NULL, - `InheritVNCEncoding` tinyint(1) NOT NULL, - `InheritVNCAuthMode` tinyint(1) NOT NULL, - `InheritVNCProxyType` tinyint(1) NOT NULL, - `InheritVNCProxyIP` tinyint(1) NOT NULL, - `InheritVNCProxyPort` tinyint(1) NOT NULL, - `InheritVNCProxyUsername` tinyint(1) NOT NULL, - `InheritVNCProxyPassword` tinyint(1) NOT NULL, - `InheritVNCColors` tinyint(1) NOT NULL, - `InheritVNCSmartSizeMode` tinyint(1) NOT NULL, - `InheritVNCViewOnly` tinyint(1) NOT NULL, - `InheritRDGatewayUsageMethod` tinyint(1) NOT NULL, - `InheritRDGatewayHostname` tinyint(1) NOT NULL, - `InheritRDGatewayUseConnectionCredentials` tinyint(1) NOT NULL, - `InheritRDGatewayUsername` tinyint(1) NOT NULL, - `InheritRDGatewayPassword` tinyint(1) NOT NULL, - `InheritRDGatewayDomain` tinyint(1) NOT NULL, - `InheritLoadBalanceInfo` tinyint(1) NOT NULL DEFAULT 0, - `InheritAutomaticResize` tinyint(1) NOT NULL DEFAULT 0, - `InheritRedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, - `InheritRdpVersion` tinyint(1) NOT NULL DEFAULT 0, - `InheritVmId` tinyint(1) DEFAULT NULL, - `InheritUseVmId` tinyint(1) DEFAULT NULL, + `UseVmId` tinyint(1) DEFAULT NULL, + `UserField` varchar(256) DEFAULT NULL, + `Username` varchar(512) DEFAULT NULL, + `VNCAuthMode` varchar(10) DEFAULT NULL, + `VNCColors` varchar(10) DEFAULT NULL, + `VNCCompression` varchar(10) DEFAULT NULL, + `VNCEncoding` varchar(20) DEFAULT NULL, + `VNCProxyIP` varchar(128) DEFAULT NULL, + `VNCProxyPassword` varchar(1024) DEFAULT NULL, + `VNCProxyPort` int(11) DEFAULT NULL, + `VNCProxyType` varchar(20) DEFAULT NULL, + `VNCProxyUsername` varchar(512) DEFAULT NULL, + `VNCSmartSizeMode` varchar(20) DEFAULT NULL, + `VNCViewOnly` tinyint(1) NOT NULL, + `VmId` varchar(512) DEFAULT NULL, + `ICAEncryptionStrength` varchar(32) NOT NULL, + `Icon` varchar(128) NOT NULL, + `InheritAutomaticResize` tinyint(1) NOT NULL DEFAULT 0, + `InheritCacheBitmaps` tinyint(1) NOT NULL, + `InheritColors` tinyint(1) NOT NULL, + `InheritDescription` tinyint(1) NOT NULL, + `InheritDisplayThemes` tinyint(1) NOT NULL, + `InheritDisplayWallpaper` tinyint(1) NOT NULL, + `InheritDomain` tinyint(1) NOT NULL, + `InheritEnableDesktopComposition` tinyint(1) NOT NULL, + `InheritEnableFontSmoothing` tinyint(1) NOT NULL, + `InheritExtApp` tinyint(1) NOT NULL, + `InheritFavorite` tinyint(1) NOT NULL, + `InheritICAEncryptionStrength` tinyint(1) NOT NULL, + `InheritIcon` tinyint(1) NOT NULL, + `InheritLoadBalanceInfo` tinyint(1) NOT NULL DEFAULT 0, + `InheritMacAddress` tinyint(1) NOT NULL, + `InheritPanel` tinyint(1) NOT NULL, + `InheritPassword` tinyint(1) NOT NULL, + `InheritPort` tinyint(1) NOT NULL, + `InheritPostExtApp` tinyint(1) NOT NULL, + `InheritPreExtApp` tinyint(1) NOT NULL, + `InheritProtocol` tinyint(1) NOT NULL, + `InheritPuttySession` tinyint(1) NOT NULL, + `InheritRDGatewayDomain` tinyint(1) NOT NULL, + `InheritRDGatewayHostname` tinyint(1) NOT NULL, + `InheritRDGatewayPassword` tinyint(1) NOT NULL, + `InheritRDGatewayUsageMethod` tinyint(1) NOT NULL, + `InheritRDGatewayUseConnectionCredentials` tinyint(1) NOT NULL, + `InheritRDGatewayUsername` tinyint(1) NOT NULL, + `InheritRDPAlertIdleTimeout` tinyint(1) NOT NULL, + `InheritRDPAuthenticationLevel` tinyint(1) NOT NULL, + `InheritRDPMinutesToIdleTimeout` tinyint(1) NOT NULL, + `InheritRdpVersion` tinyint(1) NOT NULL DEFAULT 0, + `InheritRedirectAudioCapture` tinyint(1) NOT NULL, + `InheritRedirectClipboard` tinyint(1) NOT NULL DEFAULT 0, + `InheritRedirectDiskDrives` tinyint(1) NOT NULL, + `InheritRedirectKeys` tinyint(1) NOT NULL, + `InheritRedirectPorts` tinyint(1) NOT NULL, + `InheritRedirectPrinters` tinyint(1) NOT NULL, + `InheritRedirectSmartCards` tinyint(1) NOT NULL, + `InheritRedirectSound` tinyint(1) NOT NULL, + `InheritRenderingEngine` tinyint(1) NOT NULL, + `InheritResolution` tinyint(1) NOT NULL, + `InheritSSHOptions` tinyint(1) NOT NULL, + `InheritSSHTunnelConnectionName` tinyint(1) NOT NULL, + `InheritSoundQuality` tinyint(1) NOT NULL, + `InheritUseConsoleSession` tinyint(1) NOT NULL, + `InheritUseCredSsp` tinyint(1) NOT NULL, `InheritUseEnhancedMode` tinyint(1) DEFAULT NULL, + `InheritUseVmId` tinyint(1) DEFAULT NULL, + `InheritUserField` tinyint(1) NOT NULL, + `InheritUsername` tinyint(1) NOT NULL, + `InheritVNCAuthMode` tinyint(1) NOT NULL, + `InheritVNCColors` tinyint(1) NOT NULL, + `InheritVNCCompression` tinyint(1) NOT NULL, + `InheritVNCEncoding` tinyint(1) NOT NULL, + `InheritVNCProxyIP` tinyint(1) NOT NULL, + `InheritVNCProxyPassword` tinyint(1) NOT NULL, + `InheritVNCProxyPort` tinyint(1) NOT NULL, + `InheritVNCProxyType` tinyint(1) NOT NULL, + `InheritVNCProxyUsername` tinyint(1) NOT NULL, + `InheritVNCSmartSizeMode` tinyint(1) NOT NULL, + `InheritVNCViewOnly` tinyint(1) NOT NULL, + `InheritVmId` tinyint(1) DEFAULT NULL PRIMARY KEY (`ConstantID`), UNIQUE (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=3324 DEFAULT CHARSET=latin1; From 57018bfba79515bc4602a49c36711b9468f5eb75 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 9 Jun 2020 16:19:34 +0200 Subject: [PATCH 12/21] Added missing inheritance properties to SQL scripts, fixes #1783 --- CHANGELOG.md | 1 + mRemoteNG/Documentation/mssql_db_setup.sql | 4 ++++ mRemoteNG/Documentation/mysql_db_setup.sql | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f37de3a46..36645711b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - #1690: Replaced GeckoFX (Firefox) with CefSharp (Chromium) - #1325: Language resource files cleanup ### Fixed +- #1783: Added missing inheritance properties to SQL scripts - #1773: Connection issue with mysql - Missing fields in - #1756: Cannot type any character on MultiSSH toolbar - #1720: Show configuration file name in title of password prompt form diff --git a/mRemoteNG/Documentation/mssql_db_setup.sql b/mRemoteNG/Documentation/mssql_db_setup.sql index f74464f35..93789c89c 100644 --- a/mRemoteNG/Documentation/mssql_db_setup.sql +++ b/mRemoteNG/Documentation/mssql_db_setup.sql @@ -96,6 +96,10 @@ CREATE TABLE [dbo].[tblCons] ( InheritCacheBitmaps bit NOT NULL, InheritColors bit NOT NULL, InheritDescription bit NOT NULL, + InheritDisableCursorBlinking bit NOT NULL, + InheritDisableCursorShadow bit NOT NULL, + InheritDisableFullWindowDrag bit NOT NULL, + InheritDisableMenuAnimations bit NOT NULL, InheritDisplayThemes bit NOT NULL, InheritDisplayWallpaper bit NOT NULL, InheritDomain bit NOT NULL, diff --git a/mRemoteNG/Documentation/mysql_db_setup.sql b/mRemoteNG/Documentation/mysql_db_setup.sql index 3d072ae3e..65cb2876f 100644 --- a/mRemoteNG/Documentation/mysql_db_setup.sql +++ b/mRemoteNG/Documentation/mysql_db_setup.sql @@ -99,6 +99,10 @@ CREATE TABLE `tblCons` ( `InheritCacheBitmaps` tinyint(1) NOT NULL, `InheritColors` tinyint(1) NOT NULL, `InheritDescription` tinyint(1) NOT NULL, + `InheritDisableCursorBlinking` tinyint(1) NOT NULL, + `InheritDisableCursorShadow` tinyint(1) NOT NULL, + `InheritDisableFullWindowDrag` tinyint(1) NOT NULL, + `InheritDisableMenuAnimations` tinyint(1) NOT NULL, `InheritDisplayThemes` tinyint(1) NOT NULL, `InheritDisplayWallpaper` tinyint(1) NOT NULL, `InheritDomain` tinyint(1) NOT NULL, From 46e5d8e669ca7c570b39acd315d957271bb2b53c Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Tue, 9 Jun 2020 16:25:15 +0200 Subject: [PATCH 13/21] renamed SQL property "DomainName" to "Domain" for consistency reasons --- .../ConnectionSerializers/MsSql/DataTableDeserializer.cs | 2 +- .../ConnectionSerializers/MsSql/DataTableSerializer.cs | 6 +++--- mRemoteNG/Documentation/mssql_db_setup.sql | 2 +- mRemoteNG/Documentation/mysql_db_setup.sql | 2 +- .../Config/Serializers/DataTableSerializerTests.cs | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs index e22c5dc0a..3abdc19d6 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs @@ -85,7 +85,7 @@ namespace mRemoteNG.Config.Serializers.MsSql connectionInfo.Icon = (string)dataRow["Icon"]; connectionInfo.Panel = (string)dataRow["Panel"]; connectionInfo.Username = (string)dataRow["Username"]; - connectionInfo.Domain = (string)dataRow["DomainName"]; + connectionInfo.Domain = (string)dataRow["Domain"]; connectionInfo.Password = DecryptValue((string)dataRow["Password"]); connectionInfo.Hostname = (string)dataRow["Hostname"]; connectionInfo.VmId = (string)dataRow["VmId"]; diff --git a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs index 8a79a728d..30909cc8c 100644 --- a/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs +++ b/mRemoteNG/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs @@ -106,7 +106,7 @@ namespace mRemoteNG.Config.Serializers.MsSql dataTable.Columns.Add("Icon", typeof(string)); dataTable.Columns.Add("Panel", typeof(string)); dataTable.Columns.Add("Username", typeof(string)); - dataTable.Columns.Add("DomainName", typeof(string)); + dataTable.Columns.Add("Domain", typeof(string)); dataTable.Columns.Add("Password", typeof(string)); dataTable.Columns.Add("Hostname", typeof(string)); dataTable.Columns.Add("Port", typeof(int)); @@ -266,7 +266,7 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["Icon"].Equals(connectionInfo.Icon) && dataRow["Panel"].Equals(connectionInfo.Panel) && dataRow["Username"].Equals(_saveFilter.SaveUsername ? connectionInfo.Username : "") && - dataRow["DomainName"].Equals(_saveFilter.SaveDomain ? connectionInfo.Domain : ""); + dataRow["Domain"].Equals(_saveFilter.SaveDomain ? connectionInfo.Domain : ""); isFieldNotChange = isFieldNotChange && dataRow["Hostname"].Equals(connectionInfo.Hostname); isFieldNotChange = isFieldNotChange && dataRow["VmId"].Equals(connectionInfo.VmId); @@ -514,7 +514,7 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["Icon"] = connectionInfo.Icon; dataRow["Panel"] = connectionInfo.Panel; dataRow["Username"] = _saveFilter.SaveUsername ? connectionInfo.Username : ""; - dataRow["DomainName"] = _saveFilter.SaveDomain ? connectionInfo.Domain : ""; + dataRow["Domain"] = _saveFilter.SaveDomain ? connectionInfo.Domain : ""; dataRow["Password"] = _saveFilter.SavePassword ? _cryptographyProvider.Encrypt(connectionInfo.Password, _encryptionKey) : ""; diff --git a/mRemoteNG/Documentation/mssql_db_setup.sql b/mRemoteNG/Documentation/mssql_db_setup.sql index 93789c89c..61cab7e41 100644 --- a/mRemoteNG/Documentation/mssql_db_setup.sql +++ b/mRemoteNG/Documentation/mssql_db_setup.sql @@ -34,7 +34,7 @@ CREATE TABLE [dbo].[tblCons] ( DisableMenuAnimations bit NOT NULL, DisplayThemes bit NOT NULL, DisplayWallpaper bit NOT NULL, - DomainName varchar(512), + Domain varchar(512), EnableDesktopComposition bit NOT NULL, EnableFontSmoothing bit NOT NULL, ExtApp varchar(256), diff --git a/mRemoteNG/Documentation/mysql_db_setup.sql b/mRemoteNG/Documentation/mysql_db_setup.sql index 65cb2876f..a42953477 100644 --- a/mRemoteNG/Documentation/mysql_db_setup.sql +++ b/mRemoteNG/Documentation/mysql_db_setup.sql @@ -37,7 +37,7 @@ CREATE TABLE `tblCons` ( `DisableMenuAnimations` tinyint(1) NOT NULL, `DisplayThemes` tinyint(1) NOT NULL, `DisplayWallpaper` tinyint(1) NOT NULL, - `DomainName` varchar(512) DEFAULT NULL, + `Domain` varchar(512) DEFAULT NULL, `EnableDesktopComposition` tinyint(1) NOT NULL, `EnableFontSmoothing` tinyint(1) NOT NULL, `ExtApp` varchar(256) DEFAULT NULL, diff --git a/mRemoteNGTests/Config/Serializers/DataTableSerializerTests.cs b/mRemoteNGTests/Config/Serializers/DataTableSerializerTests.cs index a3ca2738b..1888f2969 100644 --- a/mRemoteNGTests/Config/Serializers/DataTableSerializerTests.cs +++ b/mRemoteNGTests/Config/Serializers/DataTableSerializerTests.cs @@ -56,7 +56,7 @@ namespace mRemoteNGTests.Config.Serializers var model = CreateConnectionTreeModel(); _saveFilter.SaveDomain = true; var dataTable = _dataTableSerializer.Serialize(model); - Assert.That(dataTable.Rows[0]["DomainName"], Is.Not.EqualTo("")); + Assert.That(dataTable.Rows[0]["Domain"], Is.Not.EqualTo("")); } [Test] @@ -94,7 +94,7 @@ namespace mRemoteNGTests.Config.Serializers var model = CreateConnectionTreeModel(); _saveFilter.SaveDomain = false; var dataTable = _dataTableSerializer.Serialize(model); - Assert.That(dataTable.Rows[0]["DomainName"], Is.EqualTo("")); + Assert.That(dataTable.Rows[0]["Domain"], Is.EqualTo("")); } [Test] From f7872d0d84f5b62828226572c7a94289c4dfe7ac Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 11 Jun 2020 15:03:09 +0200 Subject: [PATCH 14/21] added logo --- .github/logo.png | Bin 0 -> 6871 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/logo.png diff --git a/.github/logo.png b/.github/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7cbd122ed52798f3eed9baec4767247da8f06fe2 GIT binary patch literal 6871 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 dGl27sqi}g}w Date: Thu, 11 Jun 2020 15:18:22 +0200 Subject: [PATCH 15/21] updated logo --- .github/logo.png | Bin 6871 -> 35099 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/logo.png b/.github/logo.png index 7cbd122ed52798f3eed9baec4767247da8f06fe2..4d6431ad1b8c8bc0c208820ac33fb3156ffdd33f 100644 GIT binary patch literal 35099 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 z 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 V*v1ycpTqzF002ovPDHLkV1kO|Q#=3w literal 6871 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 dGl27sqi}g}w Date: Thu, 11 Jun 2020 15:22:55 +0200 Subject: [PATCH 16/21] updateed logo --- .github/logo.png | Bin 35099 -> 28658 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/logo.png b/.github/logo.png index 4d6431ad1b8c8bc0c208820ac33fb3156ffdd33f..8fc9affb2d204f836673a01ed03718fb63577aea 100644 GIT binary patch literal 28658 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 z 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 V*v1ycpTqzF002ovPDHLkV1kO|Q#=3w From 76812b3233375d0aacb4862886029e711e3d8d3a Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 11 Jun 2020 15:35:02 +0200 Subject: [PATCH 17/21] Update README.MD --- README.MD | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/README.MD b/README.MD index 877760338..d9fd8d43c 100644 --- a/README.MD +++ b/README.MD @@ -1,4 +1,10 @@ -# Welcome to the mRemoteNG project! +

+ +

+ +

+ mRemoteNG is an open source, multi-protocol, remote connections manager that allows you to view all of your remote connections in a simple, yet powerful tabbed interface +

[![Twitter Follow](https://img.shields.io/twitter/follow/mRemoteNG.svg?style=social&label=Follow)](https://twitter.com/intent/follow?screen_name=mRemoteNG) [![Join the chat at https://gitter.im/mRemoteNG/PublicChat/](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mRemoteNG/PublicChat) @@ -12,18 +18,11 @@ | Update Channel | Build Status | Downloads | | ---------------|--------------|-----------| | Stable | [![Build status](https://ci.appveyor.com/api/projects/status/k0sdbxmq90fgdmj6/branch/master?svg=true)](https://ci.appveyor.com/project/mremoteng/mremoteng/branch/master) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.76.15/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.76.15) | -| Beta | | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.76.15/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.76.15) | -| Development | [![Build status](https://ci.appveyor.com/api/projects/status/k0sdbxmq90fgdmj6/branch/develop?svg=true)](https://ci.appveyor.com/project/mremoteng/mremoteng/branch/develop) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.77.1/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.77.1) | - -mRemoteNG is the next generation of mRemote, a full-featured, multi-tab remote connections manager. +| Prerelease | [![Build status](https://ci.appveyor.com/api/projects/status/k0sdbxmq90fgdmj6/branch/develop?svg=true)](https://ci.appveyor.com/project/mremoteng/mremoteng/branch/develop) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.77.1/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.77.1) | ## Features -mRemoteNG is a fork of mRemote: an open source, tabbed, multi-protocol, remote connections manager. mRemoteNG adds bug fixes and new features to mRemote. - -It allows you to view all of your remote connections in a simple yet powerful tabbed interface. - -mRemoteNG supports the following protocols: +The following protocols are supported: * RDP (Remote Desktop/Terminal Server) * VNC (Virtual Network Computing) @@ -38,9 +37,8 @@ For a detailed feature list and general usage support, refer to the [Documentati ## Installation -mRemoteNG is supported on Windows 7 or later. Before installing make sure you fullfill all the [minimum requirements](https://mremoteng.readthedocs.io/en/latest/installation/minimum_requirements.html). - -mRemoteNG is available as a redistributable msi package, and can be downloaded from the following locations: +Before installing make sure you fullfill all the [minimum requirements](https://mremoteng.readthedocs.io/en/latest/installation/minimum_requirements.html). +We support Microsoft Windows 7 or later. mRemoteNG is available as a redistributable MSI package or as a portable ZIP package, and can be downloaded from the following locations: * [GitHub](https://github.com/mRemoteNG/mRemoteNG/releases) * [Project Website](https://mremoteng.org/download) From a791befd494c93079bc1915c23e64b20e41411be Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 11 Jun 2020 15:59:13 +0200 Subject: [PATCH 18/21] updated badges --- README.MD | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.MD b/README.MD index d9fd8d43c..48d79aea1 100644 --- a/README.MD +++ b/README.MD @@ -5,15 +5,17 @@

mRemoteNG is an open source, multi-protocol, remote connections manager that allows you to view all of your remote connections in a simple, yet powerful tabbed interface

- -[![Twitter Follow](https://img.shields.io/twitter/follow/mRemoteNG.svg?style=social&label=Follow)](https://twitter.com/intent/follow?screen_name=mRemoteNG) -[![Join the chat at https://gitter.im/mRemoteNG/PublicChat/](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mRemoteNG/PublicChat) -[![PayPal](https://img.shields.io/badge/%24-PayPal-blue.svg)](https://www.paypal.me/DavidSparer) + +![Subreddit subscribers](https://img.shields.io/reddit/subreddit-subscribers/mremoteng?label=Reddit&logo=Reddit&style=flat-square) +![Twitter Follow](https://img.shields.io/twitter/follow/mremoteng?color=%231DA1F2&label=Twitter&logo=Twitter&style=flat-square) +![Gitter](https://img.shields.io/gitter/room/mRemoteNG/PublicChat?label=Join%20the%20Chat&logo=Gitter&style=flat-square) +[![PayPal](https://img.shields.io/badge/%24-PayPal-blue.svg?label=Donate&logo=PayPal&style=flat-square)](https://www.paypal.me/DavidSparer) [![Github Releases](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/total.svg?style=flat-square)](https://github.com/mRemoteNG/mRemoteNG/releases/) +![GitHub](https://img.shields.io/github/license/mremoteng/mremoteng?label=License&style=flat-square) -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/529/badge)](https://bestpractices.coreinfrastructure.org/projects/529) -[![Documentation Status](https://readthedocs.org/projects/mremoteng/badge/?version=latest)](https://mremoteng.readthedocs.io/en/latest/?badge=latest) +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/529/badge?style=flat-square)](https://bestpractices.coreinfrastructure.org/projects/529) +[![Documentation Status](https://readthedocs.org/projects/mremoteng/badge/?version=latest?style=flat-square)](https://mremoteng.readthedocs.io/en/latest/?badge=latest) | Update Channel | Build Status | Downloads | | ---------------|--------------|-----------| From 892a9b98fa40e5d4ac672419b72a1485276d4e8f Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 11 Jun 2020 16:18:09 +0200 Subject: [PATCH 19/21] Update README.MD --- README.MD | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/README.MD b/README.MD index 48d79aea1..36e522e35 100644 --- a/README.MD +++ b/README.MD @@ -5,17 +5,39 @@

mRemoteNG is an open source, multi-protocol, remote connections manager that allows you to view all of your remote connections in a simple, yet powerful tabbed interface

- -![Subreddit subscribers](https://img.shields.io/reddit/subreddit-subscribers/mremoteng?label=Reddit&logo=Reddit&style=flat-square) -![Twitter Follow](https://img.shields.io/twitter/follow/mremoteng?color=%231DA1F2&label=Twitter&logo=Twitter&style=flat-square) -![Gitter](https://img.shields.io/gitter/room/mRemoteNG/PublicChat?label=Join%20the%20Chat&logo=Gitter&style=flat-square) -[![PayPal](https://img.shields.io/badge/%24-PayPal-blue.svg?label=Donate&logo=PayPal&style=flat-square)](https://www.paypal.me/DavidSparer) -[![Github Releases](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/total.svg?style=flat-square)](https://github.com/mRemoteNG/mRemoteNG/releases/) -![GitHub](https://img.shields.io/github/license/mremoteng/mremoteng?label=License&style=flat-square) +

+ GitHub All Releases +

-[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/529/badge?style=flat-square)](https://bestpractices.coreinfrastructure.org/projects/529) -[![Documentation Status](https://readthedocs.org/projects/mremoteng/badge/?version=latest?style=flat-square)](https://mremoteng.readthedocs.io/en/latest/?badge=latest) +
+ +

+ + License + + + CII Best Practices + + + Documentation Status + +

+ +--- | Update Channel | Build Status | Downloads | | ---------------|--------------|-----------| @@ -54,4 +76,6 @@ Check out the [Wiki page](https://github.com/mRemoteNG/mRemoteNG/wiki) on how to ### Translate Check out the [Wiki page](https://github.com/mRemoteNG/mRemoteNG/wiki) on how to help make mRemoteNG a polyglot. -[![Developed with ReSharper](https://raw.githubusercontent.com/mRemoteNG/mRemoteNG/develop/.github/icon_ReSharper.png)](https://www.jetbrains.com/resharper/) +

+ Developed with ReSharper +

From 30914437b27a35f99b08a66a763a0d59eecd2819 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 11 Jun 2020 16:26:02 +0200 Subject: [PATCH 20/21] Update README.MD --- README.MD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.MD b/README.MD index 36e522e35..0308308fb 100644 --- a/README.MD +++ b/README.MD @@ -32,8 +32,8 @@ CII Best Practices - - Documentation Status + + Documentation Status

From 3770bf44ed77a04e9ff9041c6e6e7a44cf966b33 Mon Sep 17 00:00:00 2001 From: Faryan Rezagholi Date: Thu, 11 Jun 2020 16:26:41 +0200 Subject: [PATCH 21/21] Update README.MD --- README.MD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.MD b/README.MD index 0308308fb..890243c01 100644 --- a/README.MD +++ b/README.MD @@ -27,10 +27,10 @@

- License + License - CII Best Practices + CII Best Practices Documentation Status

+ + Subreddit subscribers + + + Twitter Follow + + + Gitter + + + PayPal + +