Merge pull request #514 from MihaelaStoica/CP-12164

CA-12164: Server Status Report wizard: Add option to upload the serve…
This commit is contained in:
Gabor Apati-Nagy 2015-06-30 11:58:50 +01:00
commit bebd1583ca
5 changed files with 659 additions and 197 deletions

View File

@ -76,7 +76,8 @@ namespace XenAdmin.Controls
spinnerIcon.StartSpinning(); spinnerIcon.StartSpinning();
var action = new CallHomeAuthenticationAction(Pool, usernameTextBox.Text.Trim(), passwordTextBox.Text.Trim(), var action = new CallHomeAuthenticationAction(Pool, usernameTextBox.Text.Trim(), passwordTextBox.Text.Trim(),
Registry.CallHomeIdentityTokenDomainName, Registry.CallHomeUploadGrantTokenDomainName, Registry.CallHomeUploadTokenDomainName, false); Registry.CallHomeIdentityTokenDomainName, Registry.CallHomeUploadGrantTokenDomainName, Registry.CallHomeUploadTokenDomainName,
true, 0, false);
action.Completed += CallHomeAuthenticationAction_Completed; action.Completed += CallHomeAuthenticationAction_Completed;
authenticateButton.Enabled = false; authenticateButton.Enabled = false;
action.RunAsync(); action.RunAsync();

View File

@ -29,47 +29,94 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BugToolPageDestination)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BugToolPageDestination));
this.labelFileLocation = new System.Windows.Forms.Label();
this.BrowseButton = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.authenticationGroupBox = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.autoHeightLabel2 = new XenAdmin.Controls.Common.AutoHeightLabel();
this.usernameLabel = new System.Windows.Forms.Label();
this.passwordLabel = new System.Windows.Forms.Label();
this.passwordTextBox = new System.Windows.Forms.TextBox();
this.usernameTextBox = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.labelName = new System.Windows.Forms.Label(); this.labelName = new System.Windows.Forms.Label();
this.m_textBoxName = new System.Windows.Forms.TextBox(); this.m_textBoxName = new System.Windows.Forms.TextBox();
this.labelFileLocation = new System.Windows.Forms.Label();
this.m_textBoxLocation = new System.Windows.Forms.TextBox(); this.m_textBoxLocation = new System.Windows.Forms.TextBox();
this.BrowseButton = new System.Windows.Forms.Button();
this.m_ctrlError = new XenAdmin.Controls.Common.PasswordFailure(); this.m_ctrlError = new XenAdmin.Controls.Common.PasswordFailure();
this.uploadCheckBox = new System.Windows.Forms.CheckBox();
this.tableLayoutPanel1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout();
this.authenticationGroupBox.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// labelFileLocation
//
resources.ApplyResources(this.labelFileLocation, "labelFileLocation");
this.labelFileLocation.Name = "labelFileLocation";
//
// BrowseButton
//
resources.ApplyResources(this.BrowseButton, "BrowseButton");
this.BrowseButton.Name = "BrowseButton";
this.BrowseButton.UseVisualStyleBackColor = true;
this.BrowseButton.Click += new System.EventHandler(this.BrowseButton_Click);
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.tableLayoutPanel1.SetColumnSpan(this.label2, 3);
this.label2.Name = "label2";
//
// tableLayoutPanel1 // tableLayoutPanel1
// //
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.authenticationGroupBox, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0); this.tableLayoutPanel1.Controls.Add(this.label2, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.labelName, 0, 1); this.tableLayoutPanel1.Controls.Add(this.labelName, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.m_textBoxName, 1, 1); this.tableLayoutPanel1.Controls.Add(this.m_textBoxName, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.labelFileLocation, 0, 2); this.tableLayoutPanel1.Controls.Add(this.labelFileLocation, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.m_textBoxLocation, 1, 2); this.tableLayoutPanel1.Controls.Add(this.m_textBoxLocation, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.BrowseButton, 2, 2); this.tableLayoutPanel1.Controls.Add(this.BrowseButton, 2, 2);
this.tableLayoutPanel1.Controls.Add(this.m_ctrlError, 1, 3); this.tableLayoutPanel1.Controls.Add(this.m_ctrlError, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.uploadCheckBox, 0, 3);
this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.Name = "tableLayoutPanel1";
// //
// authenticationGroupBox
//
resources.ApplyResources(this.authenticationGroupBox, "authenticationGroupBox");
this.tableLayoutPanel1.SetColumnSpan(this.authenticationGroupBox, 3);
this.authenticationGroupBox.Controls.Add(this.tableLayoutPanel2);
this.authenticationGroupBox.Name = "authenticationGroupBox";
this.authenticationGroupBox.TabStop = false;
//
// tableLayoutPanel2
//
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
this.tableLayoutPanel2.Controls.Add(this.autoHeightLabel2, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.usernameLabel, 0, 1);
this.tableLayoutPanel2.Controls.Add(this.passwordLabel, 0, 2);
this.tableLayoutPanel2.Controls.Add(this.passwordTextBox, 1, 2);
this.tableLayoutPanel2.Controls.Add(this.usernameTextBox, 1, 1);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
//
// autoHeightLabel2
//
resources.ApplyResources(this.autoHeightLabel2, "autoHeightLabel2");
this.tableLayoutPanel2.SetColumnSpan(this.autoHeightLabel2, 3);
this.autoHeightLabel2.Name = "autoHeightLabel2";
//
// usernameLabel
//
resources.ApplyResources(this.usernameLabel, "usernameLabel");
this.usernameLabel.Name = "usernameLabel";
//
// passwordLabel
//
resources.ApplyResources(this.passwordLabel, "passwordLabel");
this.passwordLabel.Name = "passwordLabel";
//
// passwordTextBox
//
resources.ApplyResources(this.passwordTextBox, "passwordTextBox");
this.passwordTextBox.Name = "passwordTextBox";
this.passwordTextBox.UseSystemPasswordChar = true;
this.passwordTextBox.TextChanged += new System.EventHandler(this.credentials_TextChanged);
//
// usernameTextBox
//
resources.ApplyResources(this.usernameTextBox, "usernameTextBox");
this.usernameTextBox.Name = "usernameTextBox";
this.usernameTextBox.TextChanged += new System.EventHandler(this.credentials_TextChanged);
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.tableLayoutPanel1.SetColumnSpan(this.label2, 3);
this.label2.Name = "label2";
//
// labelName // labelName
// //
resources.ApplyResources(this.labelName, "labelName"); resources.ApplyResources(this.labelName, "labelName");
@ -81,17 +128,38 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
this.m_textBoxName.Name = "m_textBoxName"; this.m_textBoxName.Name = "m_textBoxName";
this.m_textBoxName.TextChanged += new System.EventHandler(this.m_textBoxName_TextChanged); this.m_textBoxName.TextChanged += new System.EventHandler(this.m_textBoxName_TextChanged);
// //
// labelFileLocation
//
resources.ApplyResources(this.labelFileLocation, "labelFileLocation");
this.labelFileLocation.Name = "labelFileLocation";
//
// m_textBoxLocation // m_textBoxLocation
// //
resources.ApplyResources(this.m_textBoxLocation, "m_textBoxLocation"); resources.ApplyResources(this.m_textBoxLocation, "m_textBoxLocation");
this.m_textBoxLocation.Name = "m_textBoxLocation"; this.m_textBoxLocation.Name = "m_textBoxLocation";
this.m_textBoxLocation.TextChanged += new System.EventHandler(this.m_textBoxLocation_TextChanged); this.m_textBoxLocation.TextChanged += new System.EventHandler(this.m_textBoxLocation_TextChanged);
// //
// BrowseButton
//
resources.ApplyResources(this.BrowseButton, "BrowseButton");
this.BrowseButton.Name = "BrowseButton";
this.BrowseButton.UseVisualStyleBackColor = true;
this.BrowseButton.Click += new System.EventHandler(this.BrowseButton_Click);
//
// m_ctrlError // m_ctrlError
// //
resources.ApplyResources(this.m_ctrlError, "m_ctrlError"); resources.ApplyResources(this.m_ctrlError, "m_ctrlError");
this.tableLayoutPanel1.SetColumnSpan(this.m_ctrlError, 3);
this.m_ctrlError.Name = "m_ctrlError"; this.m_ctrlError.Name = "m_ctrlError";
// //
// uploadCheckBox
//
resources.ApplyResources(this.uploadCheckBox, "uploadCheckBox");
this.tableLayoutPanel1.SetColumnSpan(this.uploadCheckBox, 3);
this.uploadCheckBox.Name = "uploadCheckBox";
this.uploadCheckBox.UseVisualStyleBackColor = true;
this.uploadCheckBox.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
//
// BugToolPageDestination // BugToolPageDestination
// //
this.Controls.Add(this.tableLayoutPanel1); this.Controls.Add(this.tableLayoutPanel1);
@ -100,19 +168,31 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout(); this.tableLayoutPanel1.PerformLayout();
this.authenticationGroupBox.ResumeLayout(false);
this.authenticationGroupBox.PerformLayout();
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
#endregion #endregion
private System.Windows.Forms.Label labelFileLocation;
private System.Windows.Forms.Button BrowseButton;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label labelName; private System.Windows.Forms.Label labelName;
private System.Windows.Forms.TextBox m_textBoxName; private System.Windows.Forms.TextBox m_textBoxName;
private System.Windows.Forms.TextBox m_textBoxLocation;
private XenAdmin.Controls.Common.PasswordFailure m_ctrlError; private XenAdmin.Controls.Common.PasswordFailure m_ctrlError;
private System.Windows.Forms.CheckBox uploadCheckBox;
private System.Windows.Forms.GroupBox authenticationGroupBox;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Label usernameLabel;
private System.Windows.Forms.Label passwordLabel;
private System.Windows.Forms.TextBox passwordTextBox;
private System.Windows.Forms.TextBox usernameTextBox;
private Controls.Common.AutoHeightLabel autoHeightLabel2;
private System.Windows.Forms.Label labelFileLocation;
private System.Windows.Forms.TextBox m_textBoxLocation;
private System.Windows.Forms.Button BrowseButton;
} }
} }

View File

@ -38,9 +38,11 @@ using System.IO;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using Microsoft.Win32; using Microsoft.Win32;
using XenAdmin.Actions;
using XenAdmin.Controls; using XenAdmin.Controls;
using XenAdmin.Controls.Common; using XenAdmin.Controls.Common;
using XenAdmin.Core; using XenAdmin.Core;
using Registry = XenAdmin.Core.Registry;
namespace XenAdmin.Wizards.BugToolWizardFiles namespace XenAdmin.Wizards.BugToolWizardFiles
@ -49,6 +51,8 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
{ {
private bool m_buttonNextEnabled; private bool m_buttonNextEnabled;
private const int TokenExpiration = 86400; // 24 hours
public BugToolPageDestination() public BugToolPageDestination()
{ {
InitializeComponent(); InitializeComponent();
@ -82,13 +86,14 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
public override void PageLoaded(PageLoadedDirection direction) public override void PageLoaded(PageLoadedDirection direction)
{ {
base.PageLoaded(direction); base.PageLoaded(direction);
PerformCheck(CheckPathValid); EnableDisableAuthenticationControls();
PerformCheck(CheckPathValid, CheckCredentialsEntered);
} }
public override void PageLeave(PageLoadedDirection direction, ref bool cancel) public override void PageLeave(PageLoadedDirection direction, ref bool cancel)
{ {
if (direction == PageLoadedDirection.Forward) if (direction == PageLoadedDirection.Forward)
cancel = !PerformCheck(CheckPathValid); cancel = !PerformCheck(CheckPathValid, CheckCredentialsEntered, CheckUploadAuthentication);
base.PageLeave(direction, ref cancel); base.PageLeave(direction, ref cancel);
} }
@ -106,6 +111,16 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
} }
} }
public bool Upload
{
get
{
return uploadCheckBox.Enabled;
}
}
public string UploadToken { get; private set; }
private bool PerformCheck(params CheckDelegate[] checks) private bool PerformCheck(params CheckDelegate[] checks)
{ {
bool success = m_ctrlError.PerformCheck(checks); bool success = m_ctrlError.PerformCheck(checks);
@ -144,27 +159,88 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
return true; return true;
} }
private bool CheckCredentialsEntered(out string error)
{
error = string.Empty;
if (!uploadCheckBox.Checked)
return true;
if (string.IsNullOrEmpty(usernameTextBox.Text) || string.IsNullOrEmpty(passwordTextBox.Text))
return false;
return true;
}
private bool CheckUploadAuthentication(out string error)
{
error = string.Empty;
if (!uploadCheckBox.Checked)
return true;
if (string.IsNullOrEmpty(usernameTextBox.Text) || string.IsNullOrEmpty(passwordTextBox.Text))
return false;
var action = new CallHomeAuthenticationAction(null, usernameTextBox.Text.Trim(), passwordTextBox.Text.Trim(),
Registry.CallHomeIdentityTokenDomainName, Registry.CallHomeUploadGrantTokenDomainName, Registry.CallHomeUploadTokenDomainName,
false, TokenExpiration, false);
try
{
action.RunExternal(null);
}
catch
{
error = action.Exception != null ? action.Exception.Message : Messages.ERROR_UNKNOWN;
UploadToken = null;
return false;
}
UploadToken = action.UploadToken; // curent upload token
return !string.IsNullOrEmpty(UploadToken);
}
private void EnableDisableAuthenticationControls()
{
if (!Visible)
return;
authenticationGroupBox.Enabled = uploadCheckBox.Checked;
}
#region Control event handlers #region Control event handlers
private void m_textBoxName_TextChanged(object sender, EventArgs e) private void m_textBoxName_TextChanged(object sender, EventArgs e)
{ {
PerformCheck(CheckPathValid); PerformCheck(CheckPathValid, CheckCredentialsEntered);
} }
private void m_textBoxLocation_TextChanged(object sender, EventArgs e) private void m_textBoxLocation_TextChanged(object sender, EventArgs e)
{ {
PerformCheck(CheckPathValid); PerformCheck(CheckPathValid, CheckCredentialsEntered);
} }
private void BrowseButton_Click(object sender, EventArgs e) private void BrowseButton_Click(object sender, EventArgs e)
{ {
using (FolderBrowserDialog dlog = new FolderBrowserDialog { SelectedPath = m_textBoxLocation.Text }) using (FolderBrowserDialog dlog = new FolderBrowserDialog {SelectedPath = m_textBoxLocation.Text})
{ {
if (dlog.ShowDialog() == DialogResult.OK) if (dlog.ShowDialog() == DialogResult.OK)
m_textBoxLocation.Text = dlog.SelectedPath; m_textBoxLocation.Text = dlog.SelectedPath;
} }
} }
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
EnableDisableAuthenticationControls();
PerformCheck(CheckPathValid, CheckCredentialsEntered);
}
private void credentials_TextChanged(object sender, EventArgs e)
{
PerformCheck(CheckPathValid, CheckCredentialsEntered);
}
#endregion #endregion
} }
} }

View File

@ -112,25 +112,361 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="authenticationGroupBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="autoHeightLabel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="autoHeightLabel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="autoHeightLabel2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="autoHeightLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="autoHeightLabel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 6</value>
</data>
<data name="autoHeightLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>548, 26</value>
</data>
<data name="autoHeightLabel2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="autoHeightLabel2.Text" xml:space="preserve">
<value>Enter your MyCitrix credentials. These credentials will only be used to authenticate with the Citrix upload server once and will not be stored on this machine or on your server.</value>
</data>
<data name="&gt;&gt;autoHeightLabel2.Name" xml:space="preserve">
<value>autoHeightLabel2</value>
</data>
<data name="&gt;&gt;autoHeightLabel2.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;autoHeightLabel2.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;autoHeightLabel2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="usernameLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="usernameLabel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="usernameLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="usernameLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="usernameLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 35</value>
</data>
<data name="usernameLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="usernameLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 29</value>
</data>
<data name="usernameLabel.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="usernameLabel.Text" xml:space="preserve">
<value>U&amp;ser name:</value>
</data>
<data name="usernameLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;usernameLabel.Name" xml:space="preserve">
<value>usernameLabel</value>
</data>
<data name="&gt;&gt;usernameLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;usernameLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;usernameLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="passwordLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="passwordLabel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="passwordLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="passwordLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="passwordLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 64</value>
</data>
<data name="passwordLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="passwordLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 29</value>
</data>
<data name="passwordLabel.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="passwordLabel.Text" xml:space="preserve">
<value>P&amp;assword:</value>
</data>
<data name="passwordLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;passwordLabel.Name" xml:space="preserve">
<value>passwordLabel</value>
</data>
<data name="&gt;&gt;passwordLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;passwordLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;passwordLabel.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="passwordTextBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="passwordTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>69, 67</value>
</data>
<data name="passwordTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>246, 23</value>
</data>
<data name="passwordTextBox.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="&gt;&gt;passwordTextBox.Name" xml:space="preserve">
<value>passwordTextBox</value>
</data>
<data name="&gt;&gt;passwordTextBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;passwordTextBox.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;passwordTextBox.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="usernameTextBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="usernameTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>69, 38</value>
</data>
<data name="usernameTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>246, 23</value>
</data>
<data name="usernameTextBox.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;usernameTextBox.Name" xml:space="preserve">
<value>usernameTextBox</value>
</data>
<data name="&gt;&gt;usernameTextBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;usernameTextBox.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;usernameTextBox.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 19</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>554, 93</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Parent" xml:space="preserve">
<value>authenticationGroupBox</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="autoHeightLabel2" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="usernameLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="passwordLabel" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="passwordTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="usernameTextBox" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,20,AutoSize,100,AutoSize,0,AutoSize,20,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="authenticationGroupBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="authenticationGroupBox.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 125</value>
</data>
<data name="authenticationGroupBox.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 6, 3, 3</value>
</data>
<data name="authenticationGroupBox.Size" type="System.Drawing.Size, System.Drawing">
<value>563, 115</value>
</data>
<data name="authenticationGroupBox.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="authenticationGroupBox.Text" xml:space="preserve">
<value>Authentication with Citrix upload server</value>
</data>
<data name="&gt;&gt;authenticationGroupBox.Name" xml:space="preserve">
<value>authenticationGroupBox</value>
</data>
<data name="&gt;&gt;authenticationGroupBox.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;authenticationGroupBox.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;authenticationGroupBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label2.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 12</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>563, 25</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>You are now ready to save your status report. Use the browse button to select a location to save your report.</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelName.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelName.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 31</value>
</data>
<data name="labelName.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="labelName.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 13</value>
</data>
<data name="labelName.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="labelName.Text" xml:space="preserve">
<value>File na&amp;me:</value>
</data>
<data name="&gt;&gt;labelName.Name" xml:space="preserve">
<value>labelName</value>
</data>
<data name="&gt;&gt;labelName.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelName.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelName.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="m_textBoxName.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="m_textBoxName.Location" type="System.Drawing.Point, System.Drawing">
<value>75, 28</value>
</data>
<data name="m_textBoxName.Size" type="System.Drawing.Size, System.Drawing">
<value>410, 20</value>
</data>
<data name="m_textBoxName.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;m_textBoxName.Name" xml:space="preserve">
<value>m_textBoxName</value>
</data>
<data name="&gt;&gt;m_textBoxName.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;m_textBoxName.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;m_textBoxName.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="labelFileLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="labelFileLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value> <value>Left</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelFileLocation.AutoSize" type="System.Boolean, mscorlib"> <data name="labelFileLocation.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<data name="labelFileLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="labelFileLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labelFileLocation.Location" type="System.Drawing.Point, System.Drawing"> <data name="labelFileLocation.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 91</value> <value>3, 66</value>
</data> </data>
<data name="labelFileLocation.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="labelFileLocation.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value> <value>3, 10, 3, 3</value>
@ -151,19 +487,46 @@
<value>labelFileLocation</value> <value>labelFileLocation</value>
</data> </data>
<data name="&gt;&gt;labelFileLocation.Type" xml:space="preserve"> <data name="&gt;&gt;labelFileLocation.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;labelFileLocation.Parent" xml:space="preserve"> <data name="&gt;&gt;labelFileLocation.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
</data> </data>
<data name="&gt;&gt;labelFileLocation.ZOrder" xml:space="preserve"> <data name="&gt;&gt;labelFileLocation.ZOrder" xml:space="preserve">
<value>3</value> <value>4</value>
</data>
<data name="m_textBoxLocation.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="m_textBoxLocation.Location" type="System.Drawing.Point, System.Drawing">
<value>75, 61</value>
</data>
<data name="m_textBoxLocation.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value>
</data>
<data name="m_textBoxLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>410, 20</value>
</data>
<data name="m_textBoxLocation.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;m_textBoxLocation.Name" xml:space="preserve">
<value>m_textBoxLocation</value>
</data>
<data name="&gt;&gt;m_textBoxLocation.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;m_textBoxLocation.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;m_textBoxLocation.ZOrder" xml:space="preserve">
<value>5</value>
</data> </data>
<data name="BrowseButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="BrowseButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="BrowseButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="BrowseButton.Location" type="System.Drawing.Point, System.Drawing">
<value>491, 86</value> <value>491, 61</value>
</data> </data>
<data name="BrowseButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="BrowseButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value> <value>3, 10, 3, 3</value>
@ -181,103 +544,13 @@
<value>BrowseButton</value> <value>BrowseButton</value>
</data> </data>
<data name="&gt;&gt;BrowseButton.Type" xml:space="preserve"> <data name="&gt;&gt;BrowseButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;BrowseButton.Parent" xml:space="preserve"> <data name="&gt;&gt;BrowseButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
</data> </data>
<data name="&gt;&gt;BrowseButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;BrowseButton.ZOrder" xml:space="preserve">
<value>5</value> <value>6</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="labelName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelName.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelName.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 56</value>
</data>
<data name="labelName.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="labelName.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 13</value>
</data>
<data name="labelName.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="labelName.Text" xml:space="preserve">
<value>File na&amp;me:</value>
</data>
<data name="&gt;&gt;labelName.Name" xml:space="preserve">
<value>labelName</value>
</data>
<data name="&gt;&gt;labelName.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelName.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelName.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="m_textBoxName.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="m_textBoxName.Location" type="System.Drawing.Point, System.Drawing">
<value>75, 53</value>
</data>
<data name="m_textBoxName.Size" type="System.Drawing.Size, System.Drawing">
<value>410, 20</value>
</data>
<data name="m_textBoxName.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;m_textBoxName.Name" xml:space="preserve">
<value>m_textBoxName</value>
</data>
<data name="&gt;&gt;m_textBoxName.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;m_textBoxName.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;m_textBoxName.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="m_textBoxLocation.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="m_textBoxLocation.Location" type="System.Drawing.Point, System.Drawing">
<value>75, 86</value>
</data>
<data name="m_textBoxLocation.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value>
</data>
<data name="m_textBoxLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>410, 20</value>
</data>
<data name="m_textBoxLocation.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;m_textBoxLocation.Name" xml:space="preserve">
<value>m_textBoxLocation</value>
</data>
<data name="&gt;&gt;m_textBoxLocation.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;m_textBoxLocation.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;m_textBoxLocation.ZOrder" xml:space="preserve">
<value>4</value>
</data> </data>
<data name="m_ctrlError.AutoSize" type="System.Boolean, mscorlib"> <data name="m_ctrlError.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -292,16 +565,16 @@
<value /> <value />
</data> </data>
<data name="m_ctrlError.Location" type="System.Drawing.Point, System.Drawing"> <data name="m_ctrlError.Location" type="System.Drawing.Point, System.Drawing">
<value>72, 112</value> <value>0, 243</value>
</data> </data>
<data name="m_ctrlError.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="m_ctrlError.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value> <value>0, 0, 0, 0</value>
</data> </data>
<data name="m_ctrlError.Size" type="System.Drawing.Size, System.Drawing"> <data name="m_ctrlError.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value> <value>569, 22</value>
</data> </data>
<data name="m_ctrlError.TabIndex" type="System.Int32, mscorlib"> <data name="m_ctrlError.TabIndex" type="System.Int32, mscorlib">
<value>6</value> <value>10</value>
</data> </data>
<data name="&gt;&gt;m_ctrlError.Name" xml:space="preserve"> <data name="&gt;&gt;m_ctrlError.Name" xml:space="preserve">
<value>m_ctrlError</value> <value>m_ctrlError</value>
@ -313,7 +586,40 @@
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
</data> </data>
<data name="&gt;&gt;m_ctrlError.ZOrder" xml:space="preserve"> <data name="&gt;&gt;m_ctrlError.ZOrder" xml:space="preserve">
<value>6</value> <value>7</value>
</data>
<data name="uploadCheckBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="uploadCheckBox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="uploadCheckBox.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 99</value>
</data>
<data name="uploadCheckBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 12, 3, 6</value>
</data>
<data name="uploadCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 17</value>
</data>
<data name="uploadCheckBox.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="uploadCheckBox.Text" xml:space="preserve">
<value>&amp;Upload the status report to the CIS website</value>
</data>
<data name="&gt;&gt;uploadCheckBox.Name" xml:space="preserve">
<value>uploadCheckBox</value>
</data>
<data name="&gt;&gt;uploadCheckBox.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;uploadCheckBox.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;uploadCheckBox.ZOrder" xml:space="preserve">
<value>8</value>
</data> </data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value> <value>Fill</value>
@ -325,7 +631,7 @@
<value>0, 0, 0, 0</value> <value>0, 0, 0, 0</value>
</data> </data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib"> <data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>5</value> <value>7</value>
</data> </data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 419</value> <value>569, 419</value>
@ -337,7 +643,7 @@
<value>tableLayoutPanel1</value> <value>tableLayoutPanel1</value>
</data> </data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve"> <data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve"> <data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -346,42 +652,9 @@
<value>0</value> <value>0</value>
</data> </data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms"> <data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="label2" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="labelName" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="m_textBoxName" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelFileLocation" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="m_textBoxLocation" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="BrowseButton" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="m_ctrlError" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value> <value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="authenticationGroupBox" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="label2" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="labelName" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="m_textBoxName" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelFileLocation" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="m_textBoxLocation" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="BrowseButton" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="m_ctrlError" Row="5" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="uploadCheckBox" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data> </data>
<data name="label2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Fill</value>
</data>
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label2.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 24</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>563, 50</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>You are now ready to save your status report. Use the browse button to select a location to save your report to and click the finish button to exit the wizard.</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing"> <data name="$this.Size" type="System.Drawing.Size, System.Drawing">

View File

@ -9,32 +9,47 @@ using System.Web.Script.Serialization;
namespace XenAdmin.Actions namespace XenAdmin.Actions
{ {
public class CallHomeAuthenticationAction : PureAsyncAction public class CallHomeAuthenticationAction : AsyncAction
{ {
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private readonly Pool pool; private readonly Pool pool;
private readonly string username; private readonly string username;
private string password; private readonly string password;
private readonly string identityTokenUrl = "/auth/api/create_identity/";
private readonly string uploadGrantTokenUrl = "/feeds/api/create_grant/"; private readonly bool saveTokenAsSecret;
private readonly string uploadTokenUrl = "/feeds/api/create_upload/"; private readonly long tokenExpiration;
private string uploadToken;
private const string identityTokenUrl = "/auth/api/create_identity/";
private const string uploadGrantTokenUrl = "/feeds/api/create_grant/";
private const string uploadTokenUrl = "/feeds/api/create_upload/";
private readonly string identityTokenDomainName = "http://cis-daily.citrite.net"; private readonly string identityTokenDomainName = "http://cis-daily.citrite.net";
private readonly string uploadGrantTokenDomainName = "https://rttf-staging.citrix.com"; private readonly string uploadGrantTokenDomainName = "https://rttf-staging.citrix.com";
private readonly string uploadTokenDomainName = "https://rttf-staging.citrix.com"; private readonly string uploadTokenDomainName = "https://rttf-staging.citrix.com";
private const string productKey = "eb1b224c461038baf1f08dfba6b8d4b4413f96c7"; private const string productKey = "eb1b224c461038baf1f08dfba6b8d4b4413f96c7";
public CallHomeAuthenticationAction(Pool pool, string username, string password, bool suppressHistory) public CallHomeAuthenticationAction(Pool pool, string username, string password, bool saveTokenAsSecret, long tokenExpiration, bool suppressHistory)
: base(pool.Connection, Messages.ACTION_CALLHOME_AUTHENTICATION, Messages.ACTION_CALLHOME_AUTHENTICATION_PROGRESS, suppressHistory) : base(pool != null ? pool.Connection : null, Messages.ACTION_CALLHOME_AUTHENTICATION, Messages.ACTION_CALLHOME_AUTHENTICATION_PROGRESS, suppressHistory)
{ {
this.pool = pool; this.pool = pool;
this.username = username; this.username = username;
this.password = password; this.password = password;
this.saveTokenAsSecret = saveTokenAsSecret;
this.tokenExpiration = tokenExpiration;
#region RBAC Dependencies
if (saveTokenAsSecret)
ApiMethodsToRoleCheck.Add("pool.set_health_check_config");
#endregion
} }
public CallHomeAuthenticationAction(Pool pool, string username, string password, public CallHomeAuthenticationAction(Pool pool, string username, string password,
string identityTokenDomainName, string uploadGrantTokenDomainName, string uploadTokenDomainName, bool suppressHistory) string identityTokenDomainName, string uploadGrantTokenDomainName, string uploadTokenDomainName, bool saveTokenAsSecret, long tokenExpiration, bool suppressHistory)
: this(pool, username, password, suppressHistory) : this(pool, username, password, saveTokenAsSecret, tokenExpiration, suppressHistory)
{ {
if (!string.IsNullOrEmpty(identityTokenDomainName)) if (!string.IsNullOrEmpty(identityTokenDomainName))
this.identityTokenDomainName = identityTokenDomainName; this.identityTokenDomainName = identityTokenDomainName;
@ -46,15 +61,20 @@ namespace XenAdmin.Actions
protected override void Run() protected override void Run()
{ {
Dictionary<string, string> newConfig = pool.gui_config; System.Diagnostics.Trace.Assert(pool != null || !saveTokenAsSecret, "Pool is null! Cannot save token as secret");
try try
{ {
string identityToken = GetIdentityToken(); string identityToken = GetIdentityToken();
string uploadGrantToken = GetUploadGrantToken(identityToken); string uploadGrantToken = GetUploadGrantToken(identityToken);
string uploadToken = GetUploadToken(uploadGrantToken); uploadToken = GetUploadToken(uploadGrantToken);
SetUploadTokenSecret(Connection, newConfig, uploadToken); if (saveTokenAsSecret && pool != null)
Pool.set_gui_config(Connection.Session, pool.opaque_ref, newConfig); {
log.Info("Saving upload token as xapi secret");
Dictionary<string, string> newConfig = pool.health_check_config;
SetTokenSecret(Connection, newConfig, CallHomeSettings.UPLOAD_TOKEN_SECRET, uploadToken);
Pool.set_health_check_config(Connection.Session, pool.opaque_ref, newConfig);
}
} }
catch (Exception e) catch (Exception e)
{ {
@ -63,31 +83,41 @@ namespace XenAdmin.Actions
} }
} }
public string UploadToken
{
get { return uploadToken; }
}
public static void SetUploadTokenSecret(IXenConnection connection, Dictionary<string, string> config, string uploadToken) public static void SetUploadTokenSecret(IXenConnection connection, Dictionary<string, string> config, string uploadToken)
{ {
if (uploadToken == null) SetTokenSecret(connection, config, CallHomeSettings.UPLOAD_TOKEN_SECRET, uploadToken);
}
public static void SetTokenSecret(IXenConnection connection, Dictionary<string, string> config, string tokenKey, string tokenValue)
{
if (tokenValue == null)
{ {
config.Remove(CallHomeSettings.UPLOAD_TOKEN_SECRET); config.Remove(tokenKey);
} }
else if (config.ContainsKey(CallHomeSettings.UPLOAD_TOKEN_SECRET)) else if (config.ContainsKey(tokenKey))
{ {
try try
{ {
string secretRef = Secret.get_by_uuid(connection.Session, config[CallHomeSettings.UPLOAD_TOKEN_SECRET]); string secretRef = Secret.get_by_uuid(connection.Session, config[tokenKey]);
Secret.set_value(connection.Session, secretRef, uploadToken); Secret.set_value(connection.Session, secretRef, tokenValue);
} }
catch (Failure) catch (Failure)
{ {
config[CallHomeSettings.UPLOAD_TOKEN_SECRET] = Secret.CreateSecret(connection.Session, uploadToken); config[tokenKey] = Secret.CreateSecret(connection.Session, tokenValue);
} }
catch (WebException) catch (WebException)
{ {
config[CallHomeSettings.UPLOAD_TOKEN_SECRET] = Secret.CreateSecret(connection.Session, uploadToken); config[tokenKey] = Secret.CreateSecret(connection.Session, tokenValue);
} }
} }
else else
{ {
config[CallHomeSettings.UPLOAD_TOKEN_SECRET] = Secret.CreateSecret(connection.Session, uploadToken); config[tokenKey] = Secret.CreateSecret(connection.Session, tokenValue);
} }
} }
@ -106,7 +136,8 @@ namespace XenAdmin.Actions
{ {
var json = new JavaScriptSerializer().Serialize(new var json = new JavaScriptSerializer().Serialize(new
{ {
identity_token = identityToken identity_token = identityToken,
expiration = tokenExpiration
}); });
var urlString = string.Format("{0}{1}", uploadGrantTokenDomainName, uploadGrantTokenUrl); var urlString = string.Format("{0}{1}", uploadGrantTokenDomainName, uploadGrantTokenUrl);
return GetToken(urlString, json); return GetToken(urlString, json);
@ -117,7 +148,8 @@ namespace XenAdmin.Actions
var json = new JavaScriptSerializer().Serialize(new var json = new JavaScriptSerializer().Serialize(new
{ {
grant_token = grantToken, grant_token = grantToken,
product_key = productKey product_key = productKey,
expiration = tokenExpiration
}); });
var urlString = string.Format("{0}{1}", uploadTokenDomainName, uploadTokenUrl); var urlString = string.Format("{0}{1}", uploadTokenDomainName, uploadTokenUrl);
return GetToken(urlString, json); return GetToken(urlString, json);