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();
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;
authenticateButton.Enabled = false;
action.RunAsync();

View File

@ -29,47 +29,94 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
private void InitializeComponent()
{
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.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.m_textBoxName = new System.Windows.Forms.TextBox();
this.labelFileLocation = new System.Windows.Forms.Label();
this.m_textBoxLocation = new System.Windows.Forms.TextBox();
this.BrowseButton = new System.Windows.Forms.Button();
this.m_ctrlError = new XenAdmin.Controls.Common.PasswordFailure();
this.uploadCheckBox = new System.Windows.Forms.CheckBox();
this.tableLayoutPanel1.SuspendLayout();
this.authenticationGroupBox.SuspendLayout();
this.tableLayoutPanel2.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
//
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.labelName, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.m_textBoxName, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.labelFileLocation, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.m_textBoxLocation, 1, 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";
//
// 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
//
resources.ApplyResources(this.labelName, "labelName");
@ -81,17 +128,38 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
this.m_textBoxName.Name = "m_textBoxName";
this.m_textBoxName.TextChanged += new System.EventHandler(this.m_textBoxName_TextChanged);
//
// labelFileLocation
//
resources.ApplyResources(this.labelFileLocation, "labelFileLocation");
this.labelFileLocation.Name = "labelFileLocation";
//
// m_textBoxLocation
//
resources.ApplyResources(this.m_textBoxLocation, "m_textBoxLocation");
this.m_textBoxLocation.Name = "m_textBoxLocation";
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
//
resources.ApplyResources(this.m_ctrlError, "m_ctrlError");
this.tableLayoutPanel1.SetColumnSpan(this.m_ctrlError, 3);
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
//
this.Controls.Add(this.tableLayoutPanel1);
@ -100,19 +168,31 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
resources.ApplyResources(this, "$this");
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.authenticationGroupBox.ResumeLayout(false);
this.authenticationGroupBox.PerformLayout();
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label labelFileLocation;
private System.Windows.Forms.Button BrowseButton;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label labelName;
private System.Windows.Forms.TextBox m_textBoxName;
private System.Windows.Forms.TextBox m_textBoxLocation;
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.Windows.Forms;
using Microsoft.Win32;
using XenAdmin.Actions;
using XenAdmin.Controls;
using XenAdmin.Controls.Common;
using XenAdmin.Core;
using Registry = XenAdmin.Core.Registry;
namespace XenAdmin.Wizards.BugToolWizardFiles
@ -48,6 +50,8 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
public partial class BugToolPageDestination : XenTabPage
{
private bool m_buttonNextEnabled;
private const int TokenExpiration = 86400; // 24 hours
public BugToolPageDestination()
{
@ -82,13 +86,14 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
public override void PageLoaded(PageLoadedDirection direction)
{
base.PageLoaded(direction);
PerformCheck(CheckPathValid);
EnableDisableAuthenticationControls();
PerformCheck(CheckPathValid, CheckCredentialsEntered);
}
public override void PageLeave(PageLoadedDirection direction, ref bool cancel)
{
if (direction == PageLoadedDirection.Forward)
cancel = !PerformCheck(CheckPathValid);
cancel = !PerformCheck(CheckPathValid, CheckCredentialsEntered, CheckUploadAuthentication);
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)
{
bool success = m_ctrlError.PerformCheck(checks);
@ -144,27 +159,88 @@ namespace XenAdmin.Wizards.BugToolWizardFiles
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
private void m_textBoxName_TextChanged(object sender, EventArgs e)
{
PerformCheck(CheckPathValid);
PerformCheck(CheckPathValid, CheckCredentialsEntered);
}
private void m_textBoxLocation_TextChanged(object sender, EventArgs e)
{
PerformCheck(CheckPathValid);
PerformCheck(CheckPathValid, CheckCredentialsEntered);
}
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)
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
}
}

View File

@ -112,25 +112,361 @@
<value>2.0</value>
</resheader>
<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 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>
<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">
<value>Left</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelFileLocation.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelFileLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</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">
<value>3, 91</value>
<value>3, 66</value>
</data>
<data name="labelFileLocation.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value>
@ -151,19 +487,46 @@
<value>labelFileLocation</value>
</data>
<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 name="&gt;&gt;labelFileLocation.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<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 name="BrowseButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BrowseButton.Location" type="System.Drawing.Point, System.Drawing">
<value>491, 86</value>
<value>491, 61</value>
</data>
<data name="BrowseButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 3</value>
@ -181,103 +544,13 @@
<value>BrowseButton</value>
</data>
<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 name="&gt;&gt;BrowseButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;BrowseButton.ZOrder" xml:space="preserve">
<value>5</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>
<value>6</value>
</data>
<data name="m_ctrlError.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -292,16 +565,16 @@
<value />
</data>
<data name="m_ctrlError.Location" type="System.Drawing.Point, System.Drawing">
<value>72, 112</value>
<value>0, 243</value>
</data>
<data name="m_ctrlError.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="m_ctrlError.Size" type="System.Drawing.Size, System.Drawing">
<value>416, 22</value>
<value>569, 22</value>
</data>
<data name="m_ctrlError.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
<value>10</value>
</data>
<data name="&gt;&gt;m_ctrlError.Name" xml:space="preserve">
<value>m_ctrlError</value>
@ -313,7 +586,40 @@
<value>tableLayoutPanel1</value>
</data>
<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 name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@ -325,7 +631,7 @@
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>5</value>
<value>7</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>569, 419</value>
@ -337,7 +643,7 @@
<value>tableLayoutPanel1</value>
</data>
<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 name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
@ -346,42 +652,9 @@
<value>0</value>
</data>
<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 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, 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">
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">

View File

@ -9,32 +9,47 @@ using System.Web.Script.Serialization;
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 readonly Pool pool;
private readonly string username;
private string password;
private readonly string identityTokenUrl = "/auth/api/create_identity/";
private readonly string uploadGrantTokenUrl = "/feeds/api/create_grant/";
private readonly string uploadTokenUrl = "/feeds/api/create_upload/";
private readonly string password;
private readonly bool saveTokenAsSecret;
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 uploadGrantTokenDomainName = "https://rttf-staging.citrix.com";
private readonly string uploadTokenDomainName = "https://rttf-staging.citrix.com";
private const string productKey = "eb1b224c461038baf1f08dfba6b8d4b4413f96c7";
public CallHomeAuthenticationAction(Pool pool, string username, string password, bool suppressHistory)
: base(pool.Connection, Messages.ACTION_CALLHOME_AUTHENTICATION, Messages.ACTION_CALLHOME_AUTHENTICATION_PROGRESS, suppressHistory)
public CallHomeAuthenticationAction(Pool pool, string username, string password, bool saveTokenAsSecret, long tokenExpiration, bool suppressHistory)
: base(pool != null ? pool.Connection : null, Messages.ACTION_CALLHOME_AUTHENTICATION, Messages.ACTION_CALLHOME_AUTHENTICATION_PROGRESS, suppressHistory)
{
this.pool = pool;
this.username = username;
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,
string identityTokenDomainName, string uploadGrantTokenDomainName, string uploadTokenDomainName, bool suppressHistory)
: this(pool, username, password, suppressHistory)
public CallHomeAuthenticationAction(Pool pool, string username, string password,
string identityTokenDomainName, string uploadGrantTokenDomainName, string uploadTokenDomainName, bool saveTokenAsSecret, long tokenExpiration, bool suppressHistory)
: this(pool, username, password, saveTokenAsSecret, tokenExpiration, suppressHistory)
{
if (!string.IsNullOrEmpty(identityTokenDomainName))
this.identityTokenDomainName = identityTokenDomainName;
@ -46,15 +61,20 @@ namespace XenAdmin.Actions
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
{
string identityToken = GetIdentityToken();
string uploadGrantToken = GetUploadGrantToken(identityToken);
string uploadToken = GetUploadToken(uploadGrantToken);
uploadToken = GetUploadToken(uploadGrantToken);
SetUploadTokenSecret(Connection, newConfig, uploadToken);
Pool.set_gui_config(Connection.Session, pool.opaque_ref, newConfig);
if (saveTokenAsSecret && pool != null)
{
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)
{
@ -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)
{
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
{
string secretRef = Secret.get_by_uuid(connection.Session, config[CallHomeSettings.UPLOAD_TOKEN_SECRET]);
Secret.set_value(connection.Session, secretRef, uploadToken);
string secretRef = Secret.get_by_uuid(connection.Session, config[tokenKey]);
Secret.set_value(connection.Session, secretRef, tokenValue);
}
catch (Failure)
{
config[CallHomeSettings.UPLOAD_TOKEN_SECRET] = Secret.CreateSecret(connection.Session, uploadToken);
config[tokenKey] = Secret.CreateSecret(connection.Session, tokenValue);
}
catch (WebException)
{
config[CallHomeSettings.UPLOAD_TOKEN_SECRET] = Secret.CreateSecret(connection.Session, uploadToken);
config[tokenKey] = Secret.CreateSecret(connection.Session, tokenValue);
}
}
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
{
identity_token = identityToken
identity_token = identityToken,
expiration = tokenExpiration
});
var urlString = string.Format("{0}{1}", uploadGrantTokenDomainName, uploadGrantTokenUrl);
return GetToken(urlString, json);
@ -117,7 +148,8 @@ namespace XenAdmin.Actions
var json = new JavaScriptSerializer().Serialize(new
{
grant_token = grantToken,
product_key = productKey
product_key = productKey,
expiration = tokenExpiration
});
var urlString = string.Format("{0}{1}", uploadTokenDomainName, uploadTokenUrl);
return GetToken(urlString, json);