diff --git a/mRemoteV1/UI/Controls/CredentialRecordComboBox.Designer.cs b/mRemoteV1/UI/Controls/CredentialRecordComboBox.Designer.cs new file mode 100644 index 000000000..2c9dbf369 --- /dev/null +++ b/mRemoteV1/UI/Controls/CredentialRecordComboBox.Designer.cs @@ -0,0 +1,36 @@ +namespace mRemoteNG.UI.Controls +{ + partial class CredentialRecordComboBox + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + 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() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/mRemoteV1/UI/Controls/CredentialRecordComboBox.cs b/mRemoteV1/UI/Controls/CredentialRecordComboBox.cs new file mode 100644 index 000000000..4e93a2011 --- /dev/null +++ b/mRemoteV1/UI/Controls/CredentialRecordComboBox.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; +using mRemoteNG.Credential; + +namespace mRemoteNG.UI.Controls +{ + public partial class CredentialRecordComboBox : ComboBox + { + public IEnumerable CredentialRecords { get; set; } + + public CredentialRecordComboBox() + { + InitializeComponent(); + PopulateItems(CredentialRecords); + } + + private void PopulateItems(IEnumerable credentialRecords) + { + if (credentialRecords == null) return; + Items.Clear(); + foreach (var credential in credentialRecords) + Items.Add(credential); + } + } +} \ No newline at end of file diff --git a/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.Designer.cs index ce40764a3..aa2a83978 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.Designer.cs @@ -38,17 +38,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.numRdpReconnectionCount = new System.Windows.Forms.NumericUpDown(); this.chkSingleClickOnConnectionOpensIt = new System.Windows.Forms.CheckBox(); this.chkHostnameLikeDisplayName = new System.Windows.Forms.CheckBox(); - this.pnlDefaultCredentials = new System.Windows.Forms.Panel(); - this.radCredentialsCustom = new System.Windows.Forms.RadioButton(); - this.lblDefaultCredentials = new System.Windows.Forms.Label(); - this.radCredentialsNoInfo = new System.Windows.Forms.RadioButton(); - this.radCredentialsWindows = new System.Windows.Forms.RadioButton(); - this.txtCredentialsDomain = new System.Windows.Forms.TextBox(); - this.lblCredentialsUsername = new System.Windows.Forms.Label(); - this.txtCredentialsPassword = new System.Windows.Forms.TextBox(); - this.lblCredentialsPassword = new System.Windows.Forms.Label(); - this.txtCredentialsUsername = new System.Windows.Forms.TextBox(); - this.lblCredentialsDomain = new System.Windows.Forms.Label(); this.chkSingleClickOnOpenedConnectionSwitchesToIt = new System.Windows.Forms.CheckBox(); this.pnlAutoSave = new System.Windows.Forms.Panel(); this.lblAutoSave1 = new System.Windows.Forms.Label(); @@ -63,7 +52,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.pnlRdpReconnectionCount.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numRDPConTimeout)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numRdpReconnectionCount)).BeginInit(); - this.pnlDefaultCredentials.SuspendLayout(); this.pnlAutoSave.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numAutoSave)).BeginInit(); this.pnlConfirmCloseConnection.SuspendLayout(); @@ -159,123 +147,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.chkHostnameLikeDisplayName.Text = "Set hostname like display name when creating new connections"; this.chkHostnameLikeDisplayName.UseVisualStyleBackColor = true; // - // pnlDefaultCredentials - // - this.pnlDefaultCredentials.Controls.Add(this.radCredentialsCustom); - this.pnlDefaultCredentials.Controls.Add(this.lblDefaultCredentials); - this.pnlDefaultCredentials.Controls.Add(this.radCredentialsNoInfo); - this.pnlDefaultCredentials.Controls.Add(this.radCredentialsWindows); - this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsDomain); - this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsUsername); - this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsPassword); - this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsPassword); - this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsUsername); - this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsDomain); - this.pnlDefaultCredentials.Location = new System.Drawing.Point(3, 139); - this.pnlDefaultCredentials.Name = "pnlDefaultCredentials"; - this.pnlDefaultCredentials.Size = new System.Drawing.Size(596, 175); - this.pnlDefaultCredentials.TabIndex = 12; - // - // radCredentialsCustom - // - this.radCredentialsCustom.AutoSize = true; - this.radCredentialsCustom.Location = new System.Drawing.Point(16, 69); - this.radCredentialsCustom.Name = "radCredentialsCustom"; - this.radCredentialsCustom.Size = new System.Drawing.Size(87, 17); - this.radCredentialsCustom.TabIndex = 3; - this.radCredentialsCustom.Text = "the following:"; - this.radCredentialsCustom.UseVisualStyleBackColor = true; - this.radCredentialsCustom.CheckedChanged += new System.EventHandler(this.radCredentialsCustom_CheckedChanged); - // - // lblDefaultCredentials - // - this.lblDefaultCredentials.AutoSize = true; - this.lblDefaultCredentials.Location = new System.Drawing.Point(3, 9); - this.lblDefaultCredentials.Name = "lblDefaultCredentials"; - this.lblDefaultCredentials.Size = new System.Drawing.Size(257, 13); - this.lblDefaultCredentials.TabIndex = 0; - this.lblDefaultCredentials.Text = "For empty Username, Password or Domain fields use:"; - // - // radCredentialsNoInfo - // - this.radCredentialsNoInfo.AutoSize = true; - this.radCredentialsNoInfo.Checked = true; - this.radCredentialsNoInfo.Location = new System.Drawing.Point(16, 31); - this.radCredentialsNoInfo.Name = "radCredentialsNoInfo"; - this.radCredentialsNoInfo.Size = new System.Drawing.Size(91, 17); - this.radCredentialsNoInfo.TabIndex = 1; - this.radCredentialsNoInfo.TabStop = true; - this.radCredentialsNoInfo.Text = "no information"; - this.radCredentialsNoInfo.UseVisualStyleBackColor = true; - // - // radCredentialsWindows - // - this.radCredentialsWindows.AutoSize = true; - this.radCredentialsWindows.Location = new System.Drawing.Point(16, 50); - this.radCredentialsWindows.Name = "radCredentialsWindows"; - this.radCredentialsWindows.Size = new System.Drawing.Size(227, 17); - this.radCredentialsWindows.TabIndex = 2; - this.radCredentialsWindows.Text = "my current credentials (windows logon info)"; - this.radCredentialsWindows.UseVisualStyleBackColor = true; - // - // txtCredentialsDomain - // - this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtCredentialsDomain.Enabled = false; - this.txtCredentialsDomain.Location = new System.Drawing.Point(140, 147); - this.txtCredentialsDomain.Name = "txtCredentialsDomain"; - this.txtCredentialsDomain.Size = new System.Drawing.Size(150, 20); - this.txtCredentialsDomain.TabIndex = 9; - // - // lblCredentialsUsername - // - this.lblCredentialsUsername.Enabled = false; - this.lblCredentialsUsername.Location = new System.Drawing.Point(37, 95); - this.lblCredentialsUsername.Name = "lblCredentialsUsername"; - this.lblCredentialsUsername.Size = new System.Drawing.Size(97, 13); - this.lblCredentialsUsername.TabIndex = 4; - this.lblCredentialsUsername.Text = "Username:"; - this.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // txtCredentialsPassword - // - this.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtCredentialsPassword.Enabled = false; - this.txtCredentialsPassword.Location = new System.Drawing.Point(140, 120); - this.txtCredentialsPassword.Name = "txtCredentialsPassword"; - this.txtCredentialsPassword.Size = new System.Drawing.Size(150, 20); - this.txtCredentialsPassword.TabIndex = 7; - this.txtCredentialsPassword.UseSystemPasswordChar = true; - // - // lblCredentialsPassword - // - this.lblCredentialsPassword.Enabled = false; - this.lblCredentialsPassword.Location = new System.Drawing.Point(34, 123); - this.lblCredentialsPassword.Name = "lblCredentialsPassword"; - this.lblCredentialsPassword.Size = new System.Drawing.Size(100, 13); - this.lblCredentialsPassword.TabIndex = 6; - this.lblCredentialsPassword.Text = "Password:"; - this.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // txtCredentialsUsername - // - this.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtCredentialsUsername.Enabled = false; - this.txtCredentialsUsername.Location = new System.Drawing.Point(140, 93); - this.txtCredentialsUsername.Name = "txtCredentialsUsername"; - this.txtCredentialsUsername.Size = new System.Drawing.Size(150, 20); - this.txtCredentialsUsername.TabIndex = 5; - // - // lblCredentialsDomain - // - this.lblCredentialsDomain.Enabled = false; - this.lblCredentialsDomain.Location = new System.Drawing.Point(34, 150); - this.lblCredentialsDomain.Name = "lblCredentialsDomain"; - this.lblCredentialsDomain.Size = new System.Drawing.Size(100, 13); - this.lblCredentialsDomain.TabIndex = 8; - this.lblCredentialsDomain.Text = "Domain:"; - this.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight; - // // chkSingleClickOnOpenedConnectionSwitchesToIt // this.chkSingleClickOnOpenedConnectionSwitchesToIt.AutoSize = true; @@ -334,7 +205,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnMultiple); this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnExit); this.pnlConfirmCloseConnection.Controls.Add(this.radCloseWarnNever); - this.pnlConfirmCloseConnection.Location = new System.Drawing.Point(3, 320); + this.pnlConfirmCloseConnection.Location = new System.Drawing.Point(3, 139); this.pnlConfirmCloseConnection.Name = "pnlConfirmCloseConnection"; this.pnlConfirmCloseConnection.Size = new System.Drawing.Size(596, 137); this.pnlConfirmCloseConnection.TabIndex = 13; @@ -399,7 +270,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.Controls.Add(this.pnlRdpReconnectionCount); this.Controls.Add(this.chkSingleClickOnConnectionOpensIt); this.Controls.Add(this.chkHostnameLikeDisplayName); - this.Controls.Add(this.pnlDefaultCredentials); this.Controls.Add(this.chkSingleClickOnOpenedConnectionSwitchesToIt); this.Controls.Add(this.pnlAutoSave); this.Controls.Add(this.pnlConfirmCloseConnection); @@ -409,8 +279,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages this.pnlRdpReconnectionCount.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.numRDPConTimeout)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numRdpReconnectionCount)).EndInit(); - this.pnlDefaultCredentials.ResumeLayout(false); - this.pnlDefaultCredentials.PerformLayout(); this.pnlAutoSave.ResumeLayout(false); this.pnlAutoSave.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numAutoSave)).EndInit(); @@ -424,17 +292,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages internal System.Windows.Forms.Label lblRdpReconnectionCount; internal System.Windows.Forms.CheckBox chkSingleClickOnConnectionOpensIt; internal System.Windows.Forms.CheckBox chkHostnameLikeDisplayName; - internal System.Windows.Forms.Panel pnlDefaultCredentials; - internal System.Windows.Forms.RadioButton radCredentialsCustom; - internal System.Windows.Forms.Label lblDefaultCredentials; - internal System.Windows.Forms.RadioButton radCredentialsNoInfo; - internal System.Windows.Forms.RadioButton radCredentialsWindows; - internal System.Windows.Forms.TextBox txtCredentialsDomain; - internal System.Windows.Forms.Label lblCredentialsUsername; - internal System.Windows.Forms.TextBox txtCredentialsPassword; - internal System.Windows.Forms.Label lblCredentialsPassword; - internal System.Windows.Forms.TextBox txtCredentialsUsername; - internal System.Windows.Forms.Label lblCredentialsDomain; internal System.Windows.Forms.CheckBox chkSingleClickOnOpenedConnectionSwitchesToIt; internal System.Windows.Forms.Panel pnlAutoSave; internal System.Windows.Forms.Label lblAutoSave1; diff --git a/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.cs b/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.cs index d53b791a6..bb668660b 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.cs @@ -1,7 +1,5 @@ using System; -using mRemoteNG.App; using mRemoteNG.Config; -using mRemoteNG.Security.SymmetricEncryption; namespace mRemoteNG.UI.Forms.OptionsPages { @@ -33,14 +31,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages lblAutoSave1.Text = Language.strAutoSaveEvery; lblAutoSave2.Text = Language.strAutoSaveMins; - lblDefaultCredentials.Text = Language.strEmptyUsernamePasswordDomainFields; - radCredentialsNoInfo.Text = Language.strNoInformation; - radCredentialsWindows.Text = Language.strMyCurrentWindowsCreds; - radCredentialsCustom.Text = Language.strTheFollowing; - lblCredentialsUsername.Text = Language.strLabelUsername; - lblCredentialsPassword.Text = Language.strLabelPassword; - lblCredentialsDomain.Text = Language.strLabelDomain; - lblClosingConnections.Text = Language.strLabelClosingConnections; radCloseWarnAll.Text = Language.strRadioCloseWarnAll; radCloseWarnMultiple.Text = Language.strRadioCloseWarnMultiple; @@ -62,26 +52,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages numAutoSave.Value = Convert.ToDecimal(Settings.Default.AutoSaveEveryMinutes); - // ReSharper disable once StringLiteralTypo - // ReSharper disable once SwitchStatementMissingSomeCases - switch (Settings.Default.EmptyCredentials) - { - case "noinfo": - radCredentialsNoInfo.Checked = true; - break; - case "windows": - radCredentialsWindows.Checked = true; - break; - case "custom": - radCredentialsCustom.Checked = true; - break; - } - - txtCredentialsUsername.Text = Settings.Default.DefaultUsername; - var cryptographyProvider = new LegacyRijndaelCryptographyProvider(); - txtCredentialsPassword.Text = cryptographyProvider.Decrypt(Settings.Default.DefaultPassword, Runtime.EncryptionKey); - txtCredentialsDomain.Text = Settings.Default.DefaultDomain; - switch (Settings.Default.ConfirmCloseConnection) { case (int) ConfirmCloseEnum.Never: @@ -120,25 +90,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages FrmMain.Default.tmrAutoSave.Enabled = false; } - if (radCredentialsNoInfo.Checked) - { - // ReSharper disable once StringLiteralTypo - Settings.Default.EmptyCredentials = "noinfo"; - } - else if (radCredentialsWindows.Checked) - { - Settings.Default.EmptyCredentials = "windows"; - } - else if (radCredentialsCustom.Checked) - { - Settings.Default.EmptyCredentials = "custom"; - } - - Settings.Default.DefaultUsername = txtCredentialsUsername.Text; - var cryptographyProvider = new LegacyRijndaelCryptographyProvider(); - Settings.Default.DefaultPassword = cryptographyProvider.Encrypt(txtCredentialsPassword.Text, Runtime.EncryptionKey); - Settings.Default.DefaultDomain = txtCredentialsDomain.Text; - if (radCloseWarnAll.Checked) { Settings.Default.ConfirmCloseConnection = (int) ConfirmCloseEnum.All; @@ -159,14 +110,6 @@ namespace mRemoteNG.UI.Forms.OptionsPages Settings.Default.Save(); } - private void radCredentialsCustom_CheckedChanged(object sender, EventArgs e) - { - lblCredentialsUsername.Enabled = radCredentialsCustom.Checked; - lblCredentialsPassword.Enabled = radCredentialsCustom.Checked; - lblCredentialsDomain.Enabled = radCredentialsCustom.Checked; - txtCredentialsUsername.Enabled = radCredentialsCustom.Checked; - txtCredentialsPassword.Enabled = radCredentialsCustom.Checked; - txtCredentialsDomain.Enabled = radCredentialsCustom.Checked; - } + } } \ No newline at end of file diff --git a/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs b/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs index 9ae68f8fa..8ca85422e 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs @@ -30,6 +30,18 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CredentialsPage)); this.checkBoxUnlockOnStartup = new System.Windows.Forms.CheckBox(); + this.pnlDefaultCredentials = new System.Windows.Forms.Panel(); + this.radCredentialsCustom = new System.Windows.Forms.RadioButton(); + this.lblDefaultCredentials = new System.Windows.Forms.Label(); + this.radCredentialsNoInfo = new System.Windows.Forms.RadioButton(); + this.radCredentialsWindows = new System.Windows.Forms.RadioButton(); + this.txtCredentialsDomain = new System.Windows.Forms.TextBox(); + this.lblCredentialsUsername = new System.Windows.Forms.Label(); + this.txtCredentialsPassword = new System.Windows.Forms.TextBox(); + this.lblCredentialsPassword = new System.Windows.Forms.Label(); + this.txtCredentialsUsername = new System.Windows.Forms.TextBox(); + this.lblCredentialsDomain = new System.Windows.Forms.Label(); + this.pnlDefaultCredentials.SuspendLayout(); this.SuspendLayout(); // // checkBoxUnlockOnStartup @@ -42,14 +54,134 @@ this.checkBoxUnlockOnStartup.Text = "Prompt to unlock credential repositories on startup"; this.checkBoxUnlockOnStartup.UseVisualStyleBackColor = true; // + // pnlDefaultCredentials + // + this.pnlDefaultCredentials.Controls.Add(this.radCredentialsCustom); + this.pnlDefaultCredentials.Controls.Add(this.lblDefaultCredentials); + this.pnlDefaultCredentials.Controls.Add(this.radCredentialsNoInfo); + this.pnlDefaultCredentials.Controls.Add(this.radCredentialsWindows); + this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsDomain); + this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsUsername); + this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsPassword); + this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsPassword); + this.pnlDefaultCredentials.Controls.Add(this.txtCredentialsUsername); + this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsDomain); + this.pnlDefaultCredentials.Location = new System.Drawing.Point(3, 38); + this.pnlDefaultCredentials.Name = "pnlDefaultCredentials"; + this.pnlDefaultCredentials.Size = new System.Drawing.Size(596, 175); + this.pnlDefaultCredentials.TabIndex = 13; + // + // radCredentialsCustom + // + this.radCredentialsCustom.AutoSize = true; + this.radCredentialsCustom.Location = new System.Drawing.Point(16, 69); + this.radCredentialsCustom.Name = "radCredentialsCustom"; + this.radCredentialsCustom.Size = new System.Drawing.Size(87, 17); + this.radCredentialsCustom.TabIndex = 3; + this.radCredentialsCustom.Text = "the following:"; + this.radCredentialsCustom.UseVisualStyleBackColor = true; + this.radCredentialsCustom.CheckedChanged += new System.EventHandler(this.radCredentialsCustom_CheckedChanged); + // + // lblDefaultCredentials + // + this.lblDefaultCredentials.AutoSize = true; + this.lblDefaultCredentials.Location = new System.Drawing.Point(3, 9); + this.lblDefaultCredentials.Name = "lblDefaultCredentials"; + this.lblDefaultCredentials.Size = new System.Drawing.Size(257, 13); + this.lblDefaultCredentials.TabIndex = 0; + this.lblDefaultCredentials.Text = "For empty Username, Password or Domain fields use:"; + // + // radCredentialsNoInfo + // + this.radCredentialsNoInfo.AutoSize = true; + this.radCredentialsNoInfo.Checked = true; + this.radCredentialsNoInfo.Location = new System.Drawing.Point(16, 31); + this.radCredentialsNoInfo.Name = "radCredentialsNoInfo"; + this.radCredentialsNoInfo.Size = new System.Drawing.Size(91, 17); + this.radCredentialsNoInfo.TabIndex = 1; + this.radCredentialsNoInfo.TabStop = true; + this.radCredentialsNoInfo.Text = "no information"; + this.radCredentialsNoInfo.UseVisualStyleBackColor = true; + // + // radCredentialsWindows + // + this.radCredentialsWindows.AutoSize = true; + this.radCredentialsWindows.Location = new System.Drawing.Point(16, 50); + this.radCredentialsWindows.Name = "radCredentialsWindows"; + this.radCredentialsWindows.Size = new System.Drawing.Size(227, 17); + this.radCredentialsWindows.TabIndex = 2; + this.radCredentialsWindows.Text = "my current credentials (windows logon info)"; + this.radCredentialsWindows.UseVisualStyleBackColor = true; + // + // txtCredentialsDomain + // + this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtCredentialsDomain.Enabled = false; + this.txtCredentialsDomain.Location = new System.Drawing.Point(140, 147); + this.txtCredentialsDomain.Name = "txtCredentialsDomain"; + this.txtCredentialsDomain.Size = new System.Drawing.Size(150, 20); + this.txtCredentialsDomain.TabIndex = 9; + // + // lblCredentialsUsername + // + this.lblCredentialsUsername.Enabled = false; + this.lblCredentialsUsername.Location = new System.Drawing.Point(37, 95); + this.lblCredentialsUsername.Name = "lblCredentialsUsername"; + this.lblCredentialsUsername.Size = new System.Drawing.Size(97, 13); + this.lblCredentialsUsername.TabIndex = 4; + this.lblCredentialsUsername.Text = "Username:"; + this.lblCredentialsUsername.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // txtCredentialsPassword + // + this.txtCredentialsPassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtCredentialsPassword.Enabled = false; + this.txtCredentialsPassword.Location = new System.Drawing.Point(140, 120); + this.txtCredentialsPassword.Name = "txtCredentialsPassword"; + this.txtCredentialsPassword.Size = new System.Drawing.Size(150, 20); + this.txtCredentialsPassword.TabIndex = 7; + this.txtCredentialsPassword.UseSystemPasswordChar = true; + // + // lblCredentialsPassword + // + this.lblCredentialsPassword.Enabled = false; + this.lblCredentialsPassword.Location = new System.Drawing.Point(34, 123); + this.lblCredentialsPassword.Name = "lblCredentialsPassword"; + this.lblCredentialsPassword.Size = new System.Drawing.Size(100, 13); + this.lblCredentialsPassword.TabIndex = 6; + this.lblCredentialsPassword.Text = "Password:"; + this.lblCredentialsPassword.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // txtCredentialsUsername + // + this.txtCredentialsUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtCredentialsUsername.Enabled = false; + this.txtCredentialsUsername.Location = new System.Drawing.Point(140, 93); + this.txtCredentialsUsername.Name = "txtCredentialsUsername"; + this.txtCredentialsUsername.Size = new System.Drawing.Size(150, 20); + this.txtCredentialsUsername.TabIndex = 5; + // + // lblCredentialsDomain + // + this.lblCredentialsDomain.Enabled = false; + this.lblCredentialsDomain.Location = new System.Drawing.Point(34, 150); + this.lblCredentialsDomain.Name = "lblCredentialsDomain"; + this.lblCredentialsDomain.Size = new System.Drawing.Size(100, 13); + this.lblCredentialsDomain.TabIndex = 8; + this.lblCredentialsDomain.Text = "Domain:"; + this.lblCredentialsDomain.TextAlign = System.Drawing.ContentAlignment.TopRight; + // // CredentialsPage // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pnlDefaultCredentials); this.Controls.Add(this.checkBoxUnlockOnStartup); this.Name = "CredentialsPage"; this.PageIcon = ((System.Drawing.Icon)(resources.GetObject("$this.PageIcon"))); this.Size = new System.Drawing.Size(610, 489); + this.pnlDefaultCredentials.ResumeLayout(false); + this.pnlDefaultCredentials.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -58,5 +190,16 @@ #endregion private System.Windows.Forms.CheckBox checkBoxUnlockOnStartup; + internal System.Windows.Forms.Panel pnlDefaultCredentials; + internal System.Windows.Forms.RadioButton radCredentialsCustom; + internal System.Windows.Forms.Label lblDefaultCredentials; + internal System.Windows.Forms.RadioButton radCredentialsNoInfo; + internal System.Windows.Forms.RadioButton radCredentialsWindows; + internal System.Windows.Forms.TextBox txtCredentialsDomain; + internal System.Windows.Forms.Label lblCredentialsUsername; + internal System.Windows.Forms.TextBox txtCredentialsPassword; + internal System.Windows.Forms.Label lblCredentialsPassword; + internal System.Windows.Forms.TextBox txtCredentialsUsername; + internal System.Windows.Forms.Label lblCredentialsDomain; } } diff --git a/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.cs b/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.cs index 80eb75b54..9b57fd6c0 100644 --- a/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.cs +++ b/mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.cs @@ -1,4 +1,8 @@ -namespace mRemoteNG.UI.Forms.OptionsPages +using System; +using mRemoteNG.App; +using mRemoteNG.Security.SymmetricEncryption; + +namespace mRemoteNG.UI.Forms.OptionsPages { public partial class CredentialsPage : OptionsPage { @@ -16,18 +20,74 @@ { base.ApplyLanguage(); checkBoxUnlockOnStartup.Text = Language.PromptUnlockCredReposOnStartup; + + lblDefaultCredentials.Text = Language.strEmptyUsernamePasswordDomainFields; + radCredentialsNoInfo.Text = Language.strNoInformation; + radCredentialsWindows.Text = Language.strMyCurrentWindowsCreds; + radCredentialsCustom.Text = Language.strTheFollowing; + lblCredentialsUsername.Text = Language.strLabelUsername; + lblCredentialsPassword.Text = Language.strLabelPassword; + lblCredentialsDomain.Text = Language.strLabelDomain; } public override void LoadSettings() { base.SaveSettings(); checkBoxUnlockOnStartup.Checked = Settings.Default.PromptUnlockCredReposOnStartup; + + // ReSharper disable once SwitchStatementMissingSomeCases + switch (Settings.Default.EmptyCredentials) + { + case "noinfo": + radCredentialsNoInfo.Checked = true; + break; + case "windows": + radCredentialsWindows.Checked = true; + break; + case "custom": + radCredentialsCustom.Checked = true; + break; + } + + txtCredentialsUsername.Text = Settings.Default.DefaultUsername; + var cryptographyProvider = new LegacyRijndaelCryptographyProvider(); + txtCredentialsPassword.Text = cryptographyProvider.Decrypt(Settings.Default.DefaultPassword, Runtime.EncryptionKey); + txtCredentialsDomain.Text = Settings.Default.DefaultDomain; } public override void SaveSettings() { Settings.Default.PromptUnlockCredReposOnStartup = checkBoxUnlockOnStartup.Checked; + + if (radCredentialsNoInfo.Checked) + { + Settings.Default.EmptyCredentials = "noinfo"; + } + else if (radCredentialsWindows.Checked) + { + Settings.Default.EmptyCredentials = "windows"; + } + else if (radCredentialsCustom.Checked) + { + Settings.Default.EmptyCredentials = "custom"; + } + + Settings.Default.DefaultUsername = txtCredentialsUsername.Text; + var cryptographyProvider = new LegacyRijndaelCryptographyProvider(); + Settings.Default.DefaultPassword = cryptographyProvider.Encrypt(txtCredentialsPassword.Text, Runtime.EncryptionKey); + Settings.Default.DefaultDomain = txtCredentialsDomain.Text; + Settings.Default.Save(); } + + private void radCredentialsCustom_CheckedChanged(object sender, EventArgs e) + { + lblCredentialsUsername.Enabled = radCredentialsCustom.Checked; + lblCredentialsPassword.Enabled = radCredentialsCustom.Checked; + lblCredentialsDomain.Enabled = radCredentialsCustom.Checked; + txtCredentialsUsername.Enabled = radCredentialsCustom.Checked; + txtCredentialsPassword.Enabled = radCredentialsCustom.Checked; + txtCredentialsDomain.Enabled = radCredentialsCustom.Checked; + } } } \ No newline at end of file diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 889904130..328f433b9 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -316,6 +316,12 @@ ConnectionTree.cs + + Component + + + CredentialRecordComboBox.cs + Component