diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index e28a4d70..6c449838 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6074,15 +6074,84 @@ GO -- wsp-10269: Changed php extension path in default properties for IIS70 and IIS80 provider update ServiceDefaultProperties -set PhpPath='%PROGRAMFILES(x86)%\PHP\php-cgi.exe' -where ProviderId in(101, 105) +set PropertyValue='%PROGRAMFILES(x86)%\PHP\php-cgi.exe' +where PropertyName='PhpPath' and ProviderId in(101, 105) update ServiceDefaultProperties -set Php4Path='%PROGRAMFILES(x86)%\PHP\ph.exe' -where ProviderId in(101, 105) +set PropertyValue='%PROGRAMFILES(x86)%\PHP\php.exe' +where PropertyName='Php4Path' and ProviderId in(101, 105) GO +-- Exchange2013 Shared and resource mailboxes + +-- Exchange2013 Shared and resource mailboxes Quotas + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Exchange2013.SharedMailboxes') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) +VALUES (429, 12, 30, N'Exchange2013.SharedMailboxes', N'Shared Mailboxes per Organization', 2, 0, NULL, NULL) +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Exchange2013.ResourceMailboxes') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) +VALUES (428, 12, 31, N'Exchange2013.ResourceMailboxes', N'Resource Mailboxes per Organization', 2, 0, NULL, NULL) +END +GO + +-- Exchange2013 Shared and resource mailboxes Organization statistics + +ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics] +( + @ItemID int +) +AS + +DECLARE @ARCHIVESIZE INT +IF -1 in (SELECT B.ArchiveSizeMB FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) +BEGIN + SET @ARCHIVESIZE = -1 +END +ELSE +BEGIN + SET @ARCHIVESIZE = (SELECT SUM(B.ArchiveSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) +END + +IF -1 IN (SELECT B.MailboxSizeMB FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) +BEGIN +SELECT + (SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 1) AND ItemID = @ItemID) AS CreatedMailboxes, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 10) AND ItemID = @ItemID) AS CreatedSharedMailboxes, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 5 OR AccountType = 6) AND ItemID = @ItemID) AS CreatedResourceMailboxes, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 2 AND ItemID = @ItemID) AS CreatedContacts, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 3 AND ItemID = @ItemID) AS CreatedDistributionLists, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders, + (SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains, + (SELECT MIN(B.MailboxSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedDiskSpace, + (SELECT MIN(B.RecoverableItemsSpace) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedLitigationHoldSpace, + @ARCHIVESIZE AS UsedArchingStorage +END +ELSE +BEGIN +SELECT + (SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 1) AND ItemID = @ItemID) AS CreatedMailboxes, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 10) AND ItemID = @ItemID) AS CreatedSharedMailboxes, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 5 OR AccountType = 6) AND ItemID = @ItemID) AS CreatedResourceMailboxes, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 2 AND ItemID = @ItemID) AS CreatedContacts, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 3 AND ItemID = @ItemID) AS CreatedDistributionLists, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders, + (SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains, + (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedDiskSpace, + (SELECT SUM(B.RecoverableItemsSpace) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedLitigationHoldSpace, + @ARCHIVESIZE AS UsedArchingStorage +END + + +RETURN +GO + -- Domain lookup tasks IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP') diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.CsvBulk/ExchangeImport.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.CsvBulk/ExchangeImport.cs index 4988105d..1a7a64ab 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.CsvBulk/ExchangeImport.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.CsvBulk/ExchangeImport.cs @@ -46,7 +46,10 @@ namespace WebsitePanel.Import.CsvBulk { Mailbox, Contact, - User + User, + Room, + Equipment, + SharedMailbox } /// @@ -487,9 +490,12 @@ namespace WebsitePanel.Import.CsvBulk if (!StringEquals(typeName, "Mailbox") && !StringEquals(typeName, "Contact") && - !StringEquals(typeName, "User")) + !StringEquals(typeName, "User")&& + !StringEquals(typeName, "Room")&& + !StringEquals(typeName, "Equipment")&& + !StringEquals(typeName, "SharedMailbox")) { - Log.WriteError(string.Format("Error at line {0}: field 'Type' is invalid. Should be 'Mailbox' or 'Contact' or 'User'", index + 1)); + Log.WriteError(string.Format("Error at line {0}: field 'Type' is invalid. Should be 'Mailbox' or 'Contact' or 'User' or 'Room' or 'Equipment' or 'SharedMailbox'", index + 1)); return false; } @@ -524,7 +530,7 @@ namespace WebsitePanel.Import.CsvBulk if (type == AccountTypes.Mailbox) { //create mailbox using web service - if (!CreateMailbox(index, orgId, displayName, emailAddress, password, firstName, middleName, lastName, + if (!CreateMailbox(ExchangeAccountType.Mailbox, index, orgId, displayName, emailAddress, password, firstName, middleName, lastName, address, city, state, zip, country, jobTitle, company, department, office, businessPhone, fax, homePhone, mobilePhone, pager, webPage, notes, planId)) { @@ -532,6 +538,42 @@ namespace WebsitePanel.Import.CsvBulk } totalMailboxes++; } + if (type == AccountTypes.Room) + { + //create mailbox using web service + if (!CreateMailbox(ExchangeAccountType.Room, index, orgId, displayName, emailAddress, password, firstName, middleName, lastName, + address, city, state, zip, country, jobTitle, company, department, office, + businessPhone, fax, homePhone, mobilePhone, pager, webPage, notes, planId)) + { + return false; + } + totalMailboxes++; + } + if (type == AccountTypes.Equipment) + { + //create mailbox using web service + if (!CreateMailbox(ExchangeAccountType.Equipment, index, orgId, displayName, emailAddress, password, firstName, middleName, lastName, + address, city, state, zip, country, jobTitle, company, department, office, + businessPhone, fax, homePhone, mobilePhone, pager, webPage, notes, planId)) + { + return false; + } + totalMailboxes++; + } + if (type == AccountTypes.SharedMailbox) + { + //create mailbox using web service + if (!CreateMailbox(ExchangeAccountType.SharedMailbox, index, orgId, displayName, emailAddress, password, firstName, middleName, lastName, + address, city, state, zip, country, jobTitle, company, department, office, + businessPhone, fax, homePhone, mobilePhone, pager, webPage, notes, planId)) + { + return false; + } + totalMailboxes++; + } + + + else if (type == AccountTypes.Contact) { //create contact using web service @@ -561,7 +603,7 @@ namespace WebsitePanel.Import.CsvBulk /// /// Creates mailbox /// - private bool CreateMailbox(int index, int orgId, string displayName, string emailAddress, string password, string firstName, string middleName, string lastName, + private bool CreateMailbox(ExchangeAccountType exchangeAccountType, int index, int orgId, string displayName, string emailAddress, string password, string firstName, string middleName, string lastName, string address, string city, string state, string zip, string country, string jobTitle, string company, string department, string office, string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string webPage, string notes, int planId) { @@ -574,7 +616,7 @@ namespace WebsitePanel.Import.CsvBulk //create mailbox //ES.Services.ExchangeServer. string accountName = string.Empty; - int accountId = ES.Services.ExchangeServer.CreateMailbox(orgId, 0, ExchangeAccountType.Mailbox, accountName, displayName, name, domain, password, false, string.Empty, planId, -1, string.Empty, false); + int accountId = ES.Services.ExchangeServer.CreateMailbox(orgId, 0, exchangeAccountType, accountName, displayName, name, domain, password, false, string.Empty, planId, -1, string.Empty, false); if (accountId < 0) { string errorMessage = GetErrorMessage(accountId); diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.Designer.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.Designer.cs index af549f66..d462be62 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.Designer.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.Designer.cs @@ -28,296 +28,319 @@ namespace WebsitePanel.Import.Enterprise /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApplicationForm)); - this.lblSpace = new System.Windows.Forms.Label(); - this.txtSpace = new System.Windows.Forms.TextBox(); - this.btnBrowseSpace = new System.Windows.Forms.Button(); - this.btnBrowseOU = new System.Windows.Forms.Button(); - this.txtOU = new System.Windows.Forms.TextBox(); - this.lblOU = new System.Windows.Forms.Label(); - this.grpOrganization = new System.Windows.Forms.GroupBox(); - this.btnSelectAll = new System.Windows.Forms.Button(); - this.btnDeselectAll = new System.Windows.Forms.Button(); - this.rbCreateAndImport = new System.Windows.Forms.RadioButton(); - this.rbImport = new System.Windows.Forms.RadioButton(); - this.lvUsers = new System.Windows.Forms.ListView(); - this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); - this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); - this.columnHeader3 = new System.Windows.Forms.ColumnHeader(); - this.images = new System.Windows.Forms.ImageList(this.components); - this.txtOrgName = new System.Windows.Forms.TextBox(); - this.lblOrgName = new System.Windows.Forms.Label(); - this.txtOrgId = new System.Windows.Forms.TextBox(); - this.lblOrgId = new System.Windows.Forms.Label(); - this.btnStart = new System.Windows.Forms.Button(); - this.progressBar = new System.Windows.Forms.ProgressBar(); - this.lblMessage = new System.Windows.Forms.Label(); - this.grpOrganization.SuspendLayout(); - this.SuspendLayout(); - // - // lblSpace - // - this.lblSpace.Location = new System.Drawing.Point(15, 15); - this.lblSpace.Name = "lblSpace"; - this.lblSpace.Size = new System.Drawing.Size(125, 23); - this.lblSpace.TabIndex = 0; - this.lblSpace.Text = "Target Hosting Space:"; - // - // txtSpace - // - this.txtSpace.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtSpace.Location = new System.Drawing.Point(146, 12); - this.txtSpace.Name = "txtSpace"; - this.txtSpace.ReadOnly = true; - this.txtSpace.Size = new System.Drawing.Size(429, 20); - this.txtSpace.TabIndex = 1; - this.txtSpace.TextChanged += new System.EventHandler(this.OnDataChanged); - // - // btnBrowseSpace - // - this.btnBrowseSpace.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrowseSpace.Location = new System.Drawing.Point(581, 10); - this.btnBrowseSpace.Name = "btnBrowseSpace"; - this.btnBrowseSpace.Size = new System.Drawing.Size(24, 22); - this.btnBrowseSpace.TabIndex = 2; - this.btnBrowseSpace.Text = "..."; - this.btnBrowseSpace.UseVisualStyleBackColor = true; - this.btnBrowseSpace.Click += new System.EventHandler(this.OnBrowseSpace); - // - // btnBrowseOU - // - this.btnBrowseOU.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrowseOU.Location = new System.Drawing.Point(581, 36); - this.btnBrowseOU.Name = "btnBrowseOU"; - this.btnBrowseOU.Size = new System.Drawing.Size(24, 22); - this.btnBrowseOU.TabIndex = 5; - this.btnBrowseOU.Text = "..."; - this.btnBrowseOU.UseVisualStyleBackColor = true; - this.btnBrowseOU.Click += new System.EventHandler(this.OnBrowseOU); - // - // txtOU - // - this.txtOU.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtOU.Location = new System.Drawing.Point(146, 38); - this.txtOU.Name = "txtOU"; - this.txtOU.ReadOnly = true; - this.txtOU.Size = new System.Drawing.Size(429, 20); - this.txtOU.TabIndex = 4; - this.txtOU.TextChanged += new System.EventHandler(this.OnDataChanged); - // - // lblOU - // - this.lblOU.Location = new System.Drawing.Point(15, 41); - this.lblOU.Name = "lblOU"; - this.lblOU.Size = new System.Drawing.Size(125, 23); - this.lblOU.TabIndex = 3; - this.lblOU.Text = "Organizational Unit:"; - // - // grpOrganization - // - this.grpOrganization.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.grpOrganization.Controls.Add(this.btnSelectAll); - this.grpOrganization.Controls.Add(this.btnDeselectAll); - this.grpOrganization.Controls.Add(this.rbCreateAndImport); - this.grpOrganization.Controls.Add(this.rbImport); - this.grpOrganization.Controls.Add(this.lvUsers); - this.grpOrganization.Controls.Add(this.txtOrgName); - this.grpOrganization.Controls.Add(this.lblOrgName); - this.grpOrganization.Controls.Add(this.txtOrgId); - this.grpOrganization.Controls.Add(this.lblOrgId); - this.grpOrganization.Location = new System.Drawing.Point(15, 67); - this.grpOrganization.Name = "grpOrganization"; - this.grpOrganization.Size = new System.Drawing.Size(590, 328); - this.grpOrganization.TabIndex = 6; - this.grpOrganization.TabStop = false; - // - // btnSelectAll - // - this.btnSelectAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnSelectAll.Location = new System.Drawing.Point(417, 282); - this.btnSelectAll.Name = "btnSelectAll"; - this.btnSelectAll.Size = new System.Drawing.Size(75, 23); - this.btnSelectAll.TabIndex = 7; - this.btnSelectAll.Text = "Select All"; - this.btnSelectAll.UseVisualStyleBackColor = true; - this.btnSelectAll.Click += new System.EventHandler(this.OnSelectAllClick); - // - // btnDeselectAll - // - this.btnDeselectAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnDeselectAll.Location = new System.Drawing.Point(498, 282); - this.btnDeselectAll.Name = "btnDeselectAll"; - this.btnDeselectAll.Size = new System.Drawing.Size(75, 23); - this.btnDeselectAll.TabIndex = 8; - this.btnDeselectAll.Text = "Unselect All"; - this.btnDeselectAll.UseVisualStyleBackColor = true; - this.btnDeselectAll.Click += new System.EventHandler(this.OnDeselectAllClick); - // - // rbCreateAndImport - // - this.rbCreateAndImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.rbCreateAndImport.AutoSize = true; - this.rbCreateAndImport.Checked = true; - this.rbCreateAndImport.Enabled = false; - this.rbCreateAndImport.Location = new System.Drawing.Point(19, 282); - this.rbCreateAndImport.Name = "rbCreateAndImport"; - this.rbCreateAndImport.Size = new System.Drawing.Size(261, 17); - this.rbCreateAndImport.TabIndex = 5; - this.rbCreateAndImport.TabStop = true; - this.rbCreateAndImport.Text = "Create new organization and import selected items"; - this.rbCreateAndImport.UseVisualStyleBackColor = true; - this.rbCreateAndImport.CheckedChanged += new System.EventHandler(this.OnCheckedChanged); - // - // rbImport - // - this.rbImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.rbImport.AutoSize = true; - this.rbImport.Enabled = false; - this.rbImport.Location = new System.Drawing.Point(19, 305); - this.rbImport.Name = "rbImport"; - this.rbImport.Size = new System.Drawing.Size(237, 17); - this.rbImport.TabIndex = 6; - this.rbImport.Text = "Import selected items for existing organization"; - this.rbImport.UseVisualStyleBackColor = true; - // - // lvUsers - // - this.lvUsers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lvUsers.CheckBoxes = true; - this.lvUsers.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApplicationForm)); + this.lblSpace = new System.Windows.Forms.Label(); + this.txtSpace = new System.Windows.Forms.TextBox(); + this.btnBrowseSpace = new System.Windows.Forms.Button(); + this.btnBrowseOU = new System.Windows.Forms.Button(); + this.txtOU = new System.Windows.Forms.TextBox(); + this.lblOU = new System.Windows.Forms.Label(); + this.grpOrganization = new System.Windows.Forms.GroupBox(); + this.cbMailboxPlan = new System.Windows.Forms.ComboBox(); + this.lblMailnoxPlan = new System.Windows.Forms.Label(); + this.btnSelectAll = new System.Windows.Forms.Button(); + this.btnDeselectAll = new System.Windows.Forms.Button(); + this.rbCreateAndImport = new System.Windows.Forms.RadioButton(); + this.rbImport = new System.Windows.Forms.RadioButton(); + this.lvUsers = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.images = new System.Windows.Forms.ImageList(this.components); + this.txtOrgName = new System.Windows.Forms.TextBox(); + this.lblOrgName = new System.Windows.Forms.Label(); + this.txtOrgId = new System.Windows.Forms.TextBox(); + this.lblOrgId = new System.Windows.Forms.Label(); + this.btnStart = new System.Windows.Forms.Button(); + this.progressBar = new System.Windows.Forms.ProgressBar(); + this.lblMessage = new System.Windows.Forms.Label(); + this.grpOrganization.SuspendLayout(); + this.SuspendLayout(); + // + // lblSpace + // + this.lblSpace.Location = new System.Drawing.Point(15, 15); + this.lblSpace.Name = "lblSpace"; + this.lblSpace.Size = new System.Drawing.Size(125, 23); + this.lblSpace.TabIndex = 0; + this.lblSpace.Text = "Target Hosting Space:"; + // + // txtSpace + // + this.txtSpace.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtSpace.Location = new System.Drawing.Point(146, 12); + this.txtSpace.Name = "txtSpace"; + this.txtSpace.ReadOnly = true; + this.txtSpace.Size = new System.Drawing.Size(426, 20); + this.txtSpace.TabIndex = 1; + this.txtSpace.TextChanged += new System.EventHandler(this.OnDataChanged); + // + // btnBrowseSpace + // + this.btnBrowseSpace.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnBrowseSpace.Location = new System.Drawing.Point(578, 10); + this.btnBrowseSpace.Name = "btnBrowseSpace"; + this.btnBrowseSpace.Size = new System.Drawing.Size(24, 22); + this.btnBrowseSpace.TabIndex = 2; + this.btnBrowseSpace.Text = "..."; + this.btnBrowseSpace.UseVisualStyleBackColor = true; + this.btnBrowseSpace.Click += new System.EventHandler(this.OnBrowseSpace); + // + // btnBrowseOU + // + this.btnBrowseOU.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnBrowseOU.Location = new System.Drawing.Point(578, 36); + this.btnBrowseOU.Name = "btnBrowseOU"; + this.btnBrowseOU.Size = new System.Drawing.Size(24, 22); + this.btnBrowseOU.TabIndex = 5; + this.btnBrowseOU.Text = "..."; + this.btnBrowseOU.UseVisualStyleBackColor = true; + this.btnBrowseOU.Click += new System.EventHandler(this.OnBrowseOU); + // + // txtOU + // + this.txtOU.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtOU.Location = new System.Drawing.Point(146, 38); + this.txtOU.Name = "txtOU"; + this.txtOU.ReadOnly = true; + this.txtOU.Size = new System.Drawing.Size(426, 20); + this.txtOU.TabIndex = 4; + this.txtOU.TextChanged += new System.EventHandler(this.OnDataChanged); + // + // lblOU + // + this.lblOU.Location = new System.Drawing.Point(15, 41); + this.lblOU.Name = "lblOU"; + this.lblOU.Size = new System.Drawing.Size(125, 23); + this.lblOU.TabIndex = 3; + this.lblOU.Text = "Organizational Unit:"; + // + // grpOrganization + // + this.grpOrganization.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.grpOrganization.Controls.Add(this.cbMailboxPlan); + this.grpOrganization.Controls.Add(this.lblMailnoxPlan); + this.grpOrganization.Controls.Add(this.btnSelectAll); + this.grpOrganization.Controls.Add(this.btnDeselectAll); + this.grpOrganization.Controls.Add(this.rbCreateAndImport); + this.grpOrganization.Controls.Add(this.rbImport); + this.grpOrganization.Controls.Add(this.lvUsers); + this.grpOrganization.Controls.Add(this.txtOrgName); + this.grpOrganization.Controls.Add(this.lblOrgName); + this.grpOrganization.Controls.Add(this.txtOrgId); + this.grpOrganization.Controls.Add(this.lblOrgId); + this.grpOrganization.Location = new System.Drawing.Point(15, 67); + this.grpOrganization.Name = "grpOrganization"; + this.grpOrganization.Size = new System.Drawing.Size(587, 328); + this.grpOrganization.TabIndex = 6; + this.grpOrganization.TabStop = false; + // + // cbMailboxPlan + // + this.cbMailboxPlan.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.cbMailboxPlan.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbMailboxPlan.FormattingEnabled = true; + this.cbMailboxPlan.Location = new System.Drawing.Point(155, 74); + this.cbMailboxPlan.Name = "cbMailboxPlan"; + this.cbMailboxPlan.Size = new System.Drawing.Size(415, 21); + this.cbMailboxPlan.TabIndex = 10; + // + // lblMailnoxPlan + // + this.lblMailnoxPlan.Location = new System.Drawing.Point(19, 74); + this.lblMailnoxPlan.Name = "lblMailnoxPlan"; + this.lblMailnoxPlan.Size = new System.Drawing.Size(130, 23); + this.lblMailnoxPlan.TabIndex = 9; + this.lblMailnoxPlan.Text = "Default mailbox plan :"; + // + // btnSelectAll + // + this.btnSelectAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSelectAll.Location = new System.Drawing.Point(414, 282); + this.btnSelectAll.Name = "btnSelectAll"; + this.btnSelectAll.Size = new System.Drawing.Size(75, 23); + this.btnSelectAll.TabIndex = 7; + this.btnSelectAll.Text = "Select All"; + this.btnSelectAll.UseVisualStyleBackColor = true; + this.btnSelectAll.Click += new System.EventHandler(this.OnSelectAllClick); + // + // btnDeselectAll + // + this.btnDeselectAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnDeselectAll.Location = new System.Drawing.Point(495, 282); + this.btnDeselectAll.Name = "btnDeselectAll"; + this.btnDeselectAll.Size = new System.Drawing.Size(75, 23); + this.btnDeselectAll.TabIndex = 8; + this.btnDeselectAll.Text = "Unselect All"; + this.btnDeselectAll.UseVisualStyleBackColor = true; + this.btnDeselectAll.Click += new System.EventHandler(this.OnDeselectAllClick); + // + // rbCreateAndImport + // + this.rbCreateAndImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.rbCreateAndImport.AutoSize = true; + this.rbCreateAndImport.Checked = true; + this.rbCreateAndImport.Enabled = false; + this.rbCreateAndImport.Location = new System.Drawing.Point(19, 282); + this.rbCreateAndImport.Name = "rbCreateAndImport"; + this.rbCreateAndImport.Size = new System.Drawing.Size(261, 17); + this.rbCreateAndImport.TabIndex = 5; + this.rbCreateAndImport.TabStop = true; + this.rbCreateAndImport.Text = "Create new organization and import selected items"; + this.rbCreateAndImport.UseVisualStyleBackColor = true; + this.rbCreateAndImport.CheckedChanged += new System.EventHandler(this.OnCheckedChanged); + // + // rbImport + // + this.rbImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.rbImport.AutoSize = true; + this.rbImport.Enabled = false; + this.rbImport.Location = new System.Drawing.Point(19, 305); + this.rbImport.Name = "rbImport"; + this.rbImport.Size = new System.Drawing.Size(237, 17); + this.rbImport.TabIndex = 6; + this.rbImport.Text = "Import selected items for existing organization"; + this.rbImport.UseVisualStyleBackColor = true; + // + // lvUsers + // + this.lvUsers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lvUsers.CheckBoxes = true; + this.lvUsers.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeader1, this.columnHeader2, this.columnHeader3}); - this.lvUsers.FullRowSelect = true; - this.lvUsers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.lvUsers.Location = new System.Drawing.Point(19, 74); - this.lvUsers.MultiSelect = false; - this.lvUsers.Name = "lvUsers"; - this.lvUsers.Size = new System.Drawing.Size(554, 202); - this.lvUsers.SmallImageList = this.images; - this.lvUsers.TabIndex = 4; - this.lvUsers.UseCompatibleStateImageBehavior = false; - this.lvUsers.View = System.Windows.Forms.View.Details; - // - // columnHeader1 - // - this.columnHeader1.Text = "Name"; - this.columnHeader1.Width = 229; - // - // columnHeader2 - // - this.columnHeader2.Text = "Email"; - this.columnHeader2.Width = 163; - // - // columnHeader3 - // - this.columnHeader3.Text = "Type"; - this.columnHeader3.Width = 152; - // - // images - // - this.images.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("images.ImageStream"))); - this.images.TransparentColor = System.Drawing.Color.Transparent; - this.images.Images.SetKeyName(0, "UserSmallIcon.ico"); - this.images.Images.SetKeyName(1, "contact.ico"); - this.images.Images.SetKeyName(2, "DL.ico"); - // - // txtOrgName - // - this.txtOrgName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtOrgName.Location = new System.Drawing.Point(155, 45); - this.txtOrgName.Name = "txtOrgName"; - this.txtOrgName.Size = new System.Drawing.Size(418, 20); - this.txtOrgName.TabIndex = 3; - // - // lblOrgName - // - this.lblOrgName.Location = new System.Drawing.Point(19, 48); - this.lblOrgName.Name = "lblOrgName"; - this.lblOrgName.Size = new System.Drawing.Size(130, 23); - this.lblOrgName.TabIndex = 2; - this.lblOrgName.Text = "Organization Name:"; - // - // txtOrgId - // - this.txtOrgId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txtOrgId.Location = new System.Drawing.Point(155, 19); - this.txtOrgId.Name = "txtOrgId"; - this.txtOrgId.ReadOnly = true; - this.txtOrgId.Size = new System.Drawing.Size(418, 20); - this.txtOrgId.TabIndex = 1; - // - // lblOrgId - // - this.lblOrgId.Location = new System.Drawing.Point(19, 22); - this.lblOrgId.Name = "lblOrgId"; - this.lblOrgId.Size = new System.Drawing.Size(130, 23); - this.lblOrgId.TabIndex = 0; - this.lblOrgId.Text = "Organization Id:"; - // - // btnStart - // - this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnStart.Location = new System.Drawing.Point(527, 461); - this.btnStart.Name = "btnStart"; - this.btnStart.Size = new System.Drawing.Size(75, 23); - this.btnStart.TabIndex = 9; - this.btnStart.Text = "Start"; - this.btnStart.UseVisualStyleBackColor = true; - this.btnStart.Click += new System.EventHandler(this.OnImportClick); - // - // progressBar - // - this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.progressBar.Location = new System.Drawing.Point(15, 427); - this.progressBar.Name = "progressBar"; - this.progressBar.Size = new System.Drawing.Size(587, 23); - this.progressBar.TabIndex = 8; - // - // lblMessage - // - this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lblMessage.Location = new System.Drawing.Point(12, 401); - this.lblMessage.Name = "lblMessage"; - this.lblMessage.Size = new System.Drawing.Size(593, 23); - this.lblMessage.TabIndex = 7; - // - // ApplicationForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(617, 496); - this.Controls.Add(this.lblMessage); - this.Controls.Add(this.progressBar); - this.Controls.Add(this.btnStart); - this.Controls.Add(this.grpOrganization); - this.Controls.Add(this.btnBrowseOU); - this.Controls.Add(this.txtOU); - this.Controls.Add(this.lblOU); - this.Controls.Add(this.btnBrowseSpace); - this.Controls.Add(this.txtSpace); - this.Controls.Add(this.lblSpace); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MinimumSize = new System.Drawing.Size(630, 500); - this.Name = "ApplicationForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "WebsitePanel Enterprise Import Tool"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnFormClosing); - this.grpOrganization.ResumeLayout(false); - this.grpOrganization.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); + this.lvUsers.FullRowSelect = true; + this.lvUsers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lvUsers.Location = new System.Drawing.Point(19, 108); + this.lvUsers.MultiSelect = false; + this.lvUsers.Name = "lvUsers"; + this.lvUsers.Size = new System.Drawing.Size(551, 167); + this.lvUsers.SmallImageList = this.images; + this.lvUsers.TabIndex = 4; + this.lvUsers.UseCompatibleStateImageBehavior = false; + this.lvUsers.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "Name"; + this.columnHeader1.Width = 238; + // + // columnHeader2 + // + this.columnHeader2.Text = "Email"; + this.columnHeader2.Width = 166; + // + // columnHeader3 + // + this.columnHeader3.Text = "Type"; + this.columnHeader3.Width = 124; + // + // images + // + this.images.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("images.ImageStream"))); + this.images.TransparentColor = System.Drawing.Color.Transparent; + this.images.Images.SetKeyName(0, "UserSmallIcon.ico"); + this.images.Images.SetKeyName(1, "contact.ico"); + this.images.Images.SetKeyName(2, "DL.ico"); + // + // txtOrgName + // + this.txtOrgName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtOrgName.Location = new System.Drawing.Point(155, 45); + this.txtOrgName.Name = "txtOrgName"; + this.txtOrgName.Size = new System.Drawing.Size(415, 20); + this.txtOrgName.TabIndex = 3; + // + // lblOrgName + // + this.lblOrgName.Location = new System.Drawing.Point(19, 48); + this.lblOrgName.Name = "lblOrgName"; + this.lblOrgName.Size = new System.Drawing.Size(130, 23); + this.lblOrgName.TabIndex = 2; + this.lblOrgName.Text = "Organization Name:"; + // + // txtOrgId + // + this.txtOrgId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtOrgId.Location = new System.Drawing.Point(155, 19); + this.txtOrgId.Name = "txtOrgId"; + this.txtOrgId.ReadOnly = true; + this.txtOrgId.Size = new System.Drawing.Size(415, 20); + this.txtOrgId.TabIndex = 1; + // + // lblOrgId + // + this.lblOrgId.Location = new System.Drawing.Point(19, 22); + this.lblOrgId.Name = "lblOrgId"; + this.lblOrgId.Size = new System.Drawing.Size(130, 23); + this.lblOrgId.TabIndex = 0; + this.lblOrgId.Text = "Organization Id:"; + // + // btnStart + // + this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnStart.Location = new System.Drawing.Point(524, 461); + this.btnStart.Name = "btnStart"; + this.btnStart.Size = new System.Drawing.Size(75, 23); + this.btnStart.TabIndex = 9; + this.btnStart.Text = "Start"; + this.btnStart.UseVisualStyleBackColor = true; + this.btnStart.Click += new System.EventHandler(this.OnImportClick); + // + // progressBar + // + this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.progressBar.Location = new System.Drawing.Point(15, 427); + this.progressBar.Name = "progressBar"; + this.progressBar.Size = new System.Drawing.Size(584, 23); + this.progressBar.TabIndex = 8; + // + // lblMessage + // + this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lblMessage.Location = new System.Drawing.Point(12, 401); + this.lblMessage.Name = "lblMessage"; + this.lblMessage.Size = new System.Drawing.Size(590, 23); + this.lblMessage.TabIndex = 7; + // + // ApplicationForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(614, 496); + this.Controls.Add(this.lblMessage); + this.Controls.Add(this.progressBar); + this.Controls.Add(this.btnStart); + this.Controls.Add(this.grpOrganization); + this.Controls.Add(this.btnBrowseOU); + this.Controls.Add(this.txtOU); + this.Controls.Add(this.lblOU); + this.Controls.Add(this.btnBrowseSpace); + this.Controls.Add(this.txtSpace); + this.Controls.Add(this.lblSpace); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MinimumSize = new System.Drawing.Size(630, 500); + this.Name = "ApplicationForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "WebsitePanel Enterprise Import Tool"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnFormClosing); + this.grpOrganization.ResumeLayout(false); + this.grpOrganization.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); } @@ -346,6 +369,8 @@ namespace WebsitePanel.Import.Enterprise private System.Windows.Forms.RadioButton rbImport; internal System.Windows.Forms.Button btnSelectAll; internal System.Windows.Forms.Button btnDeselectAll; + private System.Windows.Forms.ComboBox cbMailboxPlan; + private System.Windows.Forms.Label lblMailnoxPlan; } } diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs index fb403a0a..6201cc35 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs @@ -1,4 +1,4 @@ -// Copyright (c) 2011, Outercurve Foundation. +// Copyright (c) 2014, Outercurve Foundation. // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, @@ -129,6 +129,30 @@ namespace WebsitePanel.Import.Enterprise } } + private void BindMailboxPlans(string orgId) + { + cbMailboxPlan.Items.Clear(); + cbMailboxPlan.Items.Add(""); + cbMailboxPlan.SelectedIndex = 0; + + Organization org = OrganizationController.GetOrganizationById(orgId); + + if (org == null) + { + List orgs = ExchangeServerController.GetExchangeOrganizations(1, false); + if (orgs.Count > 0) + org = orgs[0]; + } + + if (org != null) + { + int itemId = org.Id; + List plans = ExchangeServerController.GetExchangeMailboxPlans(itemId, false); + cbMailboxPlan.Items.AddRange(plans.ToArray()); + } + + } + private void LoadOrganizationData(DirectoryEntry parent) { string orgId = (string)parent.Properties["name"].Value; @@ -147,6 +171,9 @@ namespace WebsitePanel.Import.Enterprise rbImport.Checked = false; txtOrgName.Text = orgId; } + + BindMailboxPlans(orgId); + LoadOrganizationAccounts(parent); } @@ -164,34 +191,60 @@ namespace WebsitePanel.Import.Enterprise type = null; email = null; name = (string)child.Properties["name"].Value; + //account type typeProp = child.Properties["msExchRecipientDisplayType"]; + + int typeDetails = 0; + PropertyValueCollection typeDetailsProp = child.Properties["msExchRecipientTypeDetails"]; + if (typeDetailsProp != null) + { + if (typeDetailsProp.Value != null) + { + try + { + object adsLargeInteger = typeDetailsProp.Value; + typeDetails = (Int32)adsLargeInteger.GetType().InvokeMember("LowPart", System.Reflection.BindingFlags.GetProperty, null, adsLargeInteger, null); + } + catch { } // just skip + } + } + switch (child.SchemaClassName) { case "user": email = (string)child.Properties["userPrincipalName"].Value; - if (typeProp == null || typeProp.Value == null) - { - type = "User"; - } - else - { - int mailboxType = (int)typeProp.Value; - switch (mailboxType) - { - case 1073741824: - type = "User Mailbox"; - break; - case 7: - type = "Room Mailbox"; - break; - case 8: - type = "Equipment Mailbox"; - break; - } - } + if (typeDetails == 4) + { + type = "Shared Mailbox"; + } + else + { + + if (typeProp == null || typeProp.Value == null) + { + type = "User"; + } + else + { + int mailboxType = (int)typeProp.Value; + + switch (mailboxType) + { + case 1073741824: + type = "User Mailbox"; + break; + case 7: + type = "Room Mailbox"; + break; + case 8: + type = "Equipment Mailbox"; + break; + } + } + } if (!string.IsNullOrEmpty(type)) { @@ -300,6 +353,16 @@ namespace WebsitePanel.Import.Enterprise Global.OrganizationName = txtOrgName.Text; Global.ImportAccountsOnly = rbImport.Checked; Global.HasErrors = false; + + Global.defaultMailboxPlanId = 0; + if (cbMailboxPlan.SelectedItem!=null) + { + ExchangeMailboxPlan plan = cbMailboxPlan.SelectedItem as ExchangeMailboxPlan; + if (plan != null) + Global.defaultMailboxPlanId = plan.MailboxPlanId; + + } + importer.Initialize(this.username, this); importer.Start(); diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.resx b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.resx index 687492b2..c90fffd6 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.resx +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.resx @@ -112,79 +112,79 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABM - DQAAAk1TRnQBSQFMAgEBAwEAAQwBAAEMAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABI + DQAAAk1TRnQBSQFMAgEBAwEAAVwBAAFcAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABEAMAAQEBAAEgBgABEGIAAa0BsgG1Af8BrQGuAa0B/wGtAa4BrQH/AaUBpgGlAf8BnAGeAaUB/wGc AZoBnAH/AZQBlgGUAf8BjAGOAZQB/wGMAYoBjAH/IAABrQGyAbUB/wGtAa4BrQH/Aa0BrgGtAf8BpQGm - AaUB/wGcAZ4BpQH/AZwBmgGcAf8BlAGWAZQB/wGMAY4BlAH/AYwBigGMAf8BjAFtAWcB/1AAAxgBIQNN - AZEDWAHBA2EB5gFqAWMBVwH8A2EB5gNYAcEDTAGQAygBPSAAAa0BsgG1Hf8BlAGWAZQB/yAAAa0BsgG1 - Hf8BlAGWAZQB/wG1AZIBZwH/AYQBaQFfAf9IAAMDAQQDXAHNAagBkwFHAf0B5gHLAbQB/wHeAbcBkAH/ - AeMBuwGUAf8B4AG6AZQB/wHOAasBiAH/AbgBmQFcAf8DWgHFIAABrQGyAbUF/wHvAesB5wH/Ac4BywHO + AaUB/wGcAZ4BpQH/AZwBmgGcAf8BlAGWAZQB/wGMAY4BlAH/AYwBigGMAf8BjAFjAV0B/1AAAxgBIQNN + AZEDWAHBA2EB5gFgAVkBRQH8A2EB5gNYAcEDTAGQAygBPSAAAa0BsgG1Hf8BlAGWAZQB/yAAAa0BsgG1 + Hf8BlAGWAZQB/wG1AZIBXQH/AYQBXwFVAf9IAAMDAQQDXAHNAagBkwFAAf0B5gHLAbQB/wHeAbcBkAH/ + AeMBuwGUAf8B4AG6AZQB/wHOAasBiAH/AbgBmQFSAf8DWgHFIAABrQGyAbUF/wHvAesB5wH/Ac4BywHO Af8BvQG6Ab0B/wG1AbIBtQn/AZQBkgGUAf8gAAGtAbIBtQX/Ae8B6wHnAf8BzgHLAc4B/wG9AboBvQH/ - AbUBsgG1Cf8BlAGSAZQB/wHGAZ4BbwH/AYwBbQFfAf9IAAMEAQUDWQG+AcYBpQGFAf8B5gHQAb0B/wHi - Ab0BnAH/AeYBvwGXAf8B6AHDAZ8B/wHbAboBmAH/AcABnwFfAf8DXAHMEAABvQHDAbUB/wE8ATsBPAH/ - ATwBOwE8Af8BPAE7ATwB/wGtAbIBtRX/ATwBOwH3Af8BIwEmAdYB/wGUAZIBlAH/ATwBOwE8Af8BPAE7 - ATwB/wE8ATsBPAH/CAABVwGOAW8B/wFGAYoBZwH/AU4BigFnAf8BrQGyAbUV/wE+AT0B9wH/ASUBKAHW + AbUBsgG1Cf8BlAGSAZQB/wHGAZ4BZQH/AYwBYwFVAf9IAAMEAQUDWQG+AcYBpQGFAf8B5gHQAb0B/wHi + Ab0BnAH/AeYBvwGXAf8B6AHDAZ8B/wHbAboBmAH/AcABnwFVAf8DXAHMEAABvQHDAbUB/wEyATEBMgH/ + ATIBMQEyAf8BMgExATIB/wGtAbIBtRX/ATIBMQH3Af8BGQEcAdYB/wGUAZIBlAH/ATIBMQEyAf8BMgEx + ATIB/wEyATEBMgH/CAABTQGOAWUB/wE8AYoBXQH/AUQBigFdAf8BrQGyAbUV/wE0ATMB9wH/ARsBHgHW Af8BlAGSAZQB/wHeAbIBhAH/AZwBkgGEAf9LAAEBA1MBqgHZAbEBkAH/AeYB1AHBAf8B8wHSAbMB/wHq AcEBmAH/Ae0BzAGqAf8B4AHCAaQB/wHDAaMBggH/A14B3RAAAb0BwwG1C/8B9wH/Aa0BugG1Ff8BpQGi - AfcB/wGMAY4B3gH/AZQBkgGUAf8B7wHjAdYC/wH3Ae8B/wGcAZ4BlAH/BAABVwG6AYwB/wFfAcsBnAH/ - AU4BugGMAf8BhAHHAaUB/wGtAboBtRX/AaUBogH3Af8BjAGOAd4B/wGUAZIBlAH/Ac4BpgFvAf9MAAMB - AQIDAQECA2UB5QHQAcMBsgH/AcgBwwG7Af8B1wG3AZcB/wHrAcQBnQH/AeEBvgGbAf8BzgGmAV8B/wNN + AfcB/wGMAY4B3gH/AZQBkgGUAf8B7wHjAdYC/wH3Ae8B/wGcAZ4BlAH/BAABTQG6AYwB/wFVAcsBnAH/ + AUQBugGMAf8BhAHHAaUB/wGtAboBtRX/AaUBogH3Af8BjAGOAd4B/wGUAZIBlAH/Ac4BpgFlAf9MAAMB + AQIDAQECA2UB5QHQAcMBsgH/AcgBwwG7Af8B1wG3AZcB/wHrAcQBnQH/AeEBvgGbAf8BzgGmAVUB/wNN AZEQAAG9AcMBtQX/AfcB7wHnAf8B9wHvAecB/wGtAboBtQH/Aa0BsgG1Af8BrQGyAa0B/wGlAa4BrQH/ AaUBpgGlAf8BnAGiAZwB/wGcAZ4BlAH/AZwBlgGUAf8BlAGWAZQB/wH3Ae8B5wH/AfcB7wHnAf8BnAGe - AZQB/wQAAW8BwwGlAf8BZwG6AZQB/wFGAa4BhAH/AcYB4wHOAf8BrQG6AbUB/wGtAbIBtQH/Aa0BsgGt + AZQB/wQAAWUBwwGlAf8BXQG6AZQB/wE8Aa4BhAH/AcYB4wHOAf8BrQG6AbUB/wGtAbIBtQH/Aa0BsgGt Af8BpQGuAa0B/wGlAaYBpQH/AZwBogGcAf8BnAGeAZwB/wGcAZYBlAH/AZQBkgGUAf9XAAEBAx8BLQNc - AckBAAErAVwB/wEvAUkBgwH/AcYBpgGHAf8DYQHuA04BmAMHAQoQAAG9AcMBtQX/Ae8B3wHWAf8B1gG+ + AckBAAEhAVIB/wElAT8BgwH/AcYBpgGHAf8DYQHuA04BmAMHAQoQAAG9AcMBtQX/Ae8B3wHWAf8B1gG+ Aa0B/wHGAbIBpQH/AcYBsgGlAf8BzgG6AaUB/wHnAd8B1gH/AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/ - AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/AfcB7wHnAf8BnAGeAZQB/wQAAYQBwwGlAf8BbwHPAaUB/wFX - AboBjAH/Ab0B1wHOAf8BpQHDAbUB/wFOAaYBbwH/ASUBhgFGAf8BVwGGAYQB/wE2AVEBhAH/AQABMAFn - Af8BDAE9AW8B/wG9AaoBlAH/VwABAQMAAQEDEAEWA1ABmgEQATUBXAH/AQcBMQFcAf8DVQG1Az8BbAQA + AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/AfcB7wHnAf8BnAGeAZQB/wQAAYQBwwGlAf8BZQHPAaUB/wFN + AboBjAH/Ab0B1wHOAf8BpQHDAbUB/wFEAaYBZQH/ARsBhgE8Af8BTQGGAYQB/wEsAUcBhAH/AQABJgFd + Af8BAgEzAWUB/wG9AaoBlAH/VwABAQMAAQEDEAEWA1ABmgEGASsBUgH/AQABJwFSAf8DVQG1Az8BbAQA AwIBAxAAAb0BwwG1Bf8BxgGuAZwR/wHWAb4BrQH/AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/AfcB7wHn - Af8B9wHvAecB/wH3Ae8B5wH/AfcB7wHnAf8BnAGeAZQB/wgAAYwB2wGlAf8BVwGqAZQB/wFXAYIBvQH/ - AT4BXQFvAf8BVwGWAV8B/wGMAbYBpQH/ATYBYQGcAf8BLQFZAZQB/wE2AV0BjAH/AR0BRQFvAf9YAAMD - AQQDAgEDAyEBMAFYAl8B4wEsAVMBmwH/AScBTAGTAf8BFQE7AYEB/wMkATYYAAG9AcMBtQL/AvcB/wHG + Af8B9wHvAecB/wH3Ae8B5wH/AfcB7wHnAf8BnAGeAZQB/wgAAYwB2wGlAf8BTQGqAZQB/wFNAYIBvQH/ + ATQBUwFlAf8BTQGWAVUB/wGMAbYBpQH/ASwBVwGcAf8BIwFPAZQB/wEsAVMBjAH/ARMBOwFlAf9YAAMD + AQQDAgEDAyEBMAFYAl8B4wEiAUkBmwH/AR0BQgGTAf8BCwExAYEB/wMkATYYAAG9AcMBtQL/AvcB/wHG Aa4BnBH/Ad4BwwG9Af8B9wHvAecB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBsgGl - Af8B9wHvAecB/wGcAZ4BlAH/DAABNgFpAW8B/wFXAYIBvQH/AT4BXQFvAf8D9wH/A/cB/wFvAZ4BxgH/ - AVcBigG1Af8BRgFxAaUB/wE2AV0BjAH/WAADBAEGBAADRwGCA2IB9gFKAZABtgH/ATsBgQGnAf8BIQFJ + Af8B9wHvAecB/wGcAZ4BlAH/DAABLAFfAWUB/wFNAYIBvQH/ATQBUwFlAf8D9wH/A/cB/wFlAZ4BxgH/ + AU0BigG1Af8BPAFnAaUB/wEsAVMBjAH/WAADBAEGBAADRwGCA2IB9gFAAZABtgH/ATEBgQGnAf8BFwE/ AZAB/wNSAaEDBQEHFAABvQHDAbUC/wL3Af8BzgG6AaUR/wHeAcMBvQH/AfcB7wHnAf8B1gHDAbUB/wHW - AccBvQH/AdYBxwG9Af8B1gHHAb0B/wHWAcMBtQH/AfcB7wHnAf8BnAGeAZQB/wgAAWcBhgGUAf8BPgFt - AZwB/wGMAbIB3gH/AYQBqgHWAf8BVwFlAYQB/wGMAZYBpQH/AZQBugHeAf8BhAGuAdYB/wFXAZIBvQH/ - AS0BWQGMAf8BXwFlAWcB/1QAAwQBBgMAAQEDPwFsAVwBbwF2AfgBggGoAc4B/wFKAZEBuAH/ASwBTgGS - Af8BEQEhATEB/wMkATUUAAG9AcMBtQP/AfcB/wHOAcMBtRH/AdYBxwG9Af8B9wHvAecB/wHWAcMBtQH/ - AdYBwwG1Af8B1gHDAbUB/wHWAccBvQH/AdYBwwG1Av8B9wHvAf8BnAGeAZQB/wgAAU4BjgGlAf8BlAG2 - Ad4B/wG1AdsC/wGlAc8C/wFXAXEBnAH/AaUBtgHGAf8BvQHbAv8BnAHHAe8B/wFfAZ4BzgH/AS0BOQFG - Af8BLQEsASUB/1QAAwEBAgMAAQEBwwHQAdoB/wFqAXoBhAH5AZsBvwHlAf8BUwGdAccB/wErAT8BVAH/ - ARMBDwEMAf8DMgFQFAABvQHDAbUF/wHvAd8B1gH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBrgGc - Af8B7wHfAdYB/wH3Ae8B5wH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUC/wH3 - Ae8B/wGcAZYBlAH/CAABXwGeAb0B/wGtAc8B5wH/Ad4B+wL/AaUBywH3Af8BXwGeAc4B/wHeAecB7wH/ - Aa0BvgHWAf8BhAGeAb0B/wFXAYIBnAH/AS0BLAEtAf8BRgFBAT4B/1cAAQEIAAJZAVwB9QFfAZIBpgH/ - AUkBXAGOAf8BLwEyATYB/wEZARgBFwH/AyQBNRQAAb0BwwG1Bf8B9wHvAecC/wHvAecB/wH3Ae8B5wL/ - AfcB7wH/AfcB7wHnAf8B9wHvAecH/wH3Av8C9wH/A/cB/wH3AfMB7wH/AfcB7wHnA/8B9wH/AZwBngGU - Af8IAAFvAaoBvQH/AWcBrgHGAf8BnAHDAc4B/wGUAbYB3gH/AUYBaQGcAf8EAAHGAb4BvQH/AYQBcQFv - Af8BVwFVAU4B/wFXAVEBTgH/XwABAQQAA0wBkgNiAekBQwE/ATwB/ANZAfIDUQGcAwQBBRQAAb0BwwG1 - Hf8BnAGeAZQB/wG9Ab4BtQH/Ab0BvgG1Af8BvQHDAbUB/wG9Ab4BtQH/Ab0BvgG1Af8BvQG+AbUB/wG9 - Ab4BtQH/CAABrQHDAcYB/wGEAccB1gH/AVcBngG1Af8BTgGWAbUB/wEtAV0BbwH/bAADCgENBAADCgEN - BAADFQEdAygBPAMeASscAAG9AcMBtQH/Ab0BwwG1Af8BvQHDAbUB/wG9AcMBtQH/Ab0BwwG1Af8BvQHD - AbUB/wG9AcMBtQH/Ab0BwwG1Af8BvQHDAbUB/ygAAc4C7wH/AaUB4wH3Af8BhAHLAdYB/wFvAbIBvQH/ - /wBlAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAC/wHwAQcB+AEBAgAB4AEP - AfABBwH4AwABwAEPAfABBwH4AwABwAEPAgABwAMAAcABDwIAAYABAQIAAcABDwIAAYABAwIAAeABDwIA - AYABBwIAAcABLwIAAcABDwIAAcABPwIAAeABDwIAAdABHwIAAcABBwIAAcABHwIAAcABBwIAAcABHwIA - AcABBwIAAdgBHwIAAcEBDwIAAegBHwIAAcEB/wIAAdQBfwEAAX8B4QH/AgAG/wIACw== + AccBvQH/AdYBxwG9Af8B1gHHAb0B/wHWAcMBtQH/AfcB7wHnAf8BnAGeAZQB/wgAAV0BhgGUAf8BNAFj + AZwB/wGMAbIB3gH/AYQBqgHWAf8BTQFbAYQB/wGMAZYBpQH/AZQBugHeAf8BhAGuAdYB/wFNAZIBvQH/ + ASMBTwGMAf8BVQFbAV0B/1QAAwQBBgMAAQEDPwFsAVwBXQFrAfgBggGoAc4B/wFAAZEBuAH/ASIBRAGS + Af8BBwEXAScB/wMkATUUAAG9AcMBtQP/AfcB/wHOAcMBtRH/AdYBxwG9Af8B9wHvAecB/wHWAcMBtQH/ + AdYBwwG1Af8B1gHDAbUB/wHWAccBvQH/AdYBwwG1Av8B9wHvAf8BnAGeAZQB/wgAAUQBjgGlAf8BlAG2 + Ad4B/wG1AdsC/wGlAc8C/wFNAWcBnAH/AaUBtgHGAf8BvQHbAv8BnAHHAe8B/wFVAZ4BzgH/ASMBLwE8 + Af8BIwEiARsB/1QAAwEBAgMAAQEBwwHQAdoB/wJqAXEB+QGbAb8B5QH/AUkBnQHHAf8BIQE1AUoB/wEJ + AQUBAgH/AzIBUBQAAb0BwwG1Bf8B7wHfAdYB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUB/wHGAa4BnAH/ + Ae8B3wHWAf8B9wHvAecB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBsgGlAv8B9wHv + Af8BnAGWAZQB/wgAAVUBngG9Af8BrQHPAecB/wHeAfsC/wGlAcsB9wH/AVUBngHOAf8B3gHnAe8B/wGt + Ab4B1gH/AYQBngG9Af8BTQGCAZwB/wEjASIBIwH/ATwBNwE0Af9XAAEBCAADWQH1AVUBkgGmAf8BPwFS + AY4B/wElASgBLAH/AQ8BDgENAf8DJAE1FAABvQHDAbUF/wH3Ae8B5wL/Ae8B5wH/AfcB7wHnAv8B9wHv + Af8B9wHvAecB/wH3Ae8B5wf/AfcC/wL3Af8D9wH/AfcB8wHvAf8B9wHvAecD/wH3Af8BnAGeAZQB/wgA + AWUBqgG9Af8BXQGuAcYB/wGcAcMBzgH/AZQBtgHeAf8BPAFfAZwB/wQAAcYBvgG9Af8BhAFnAWUB/wFN + AUsBRAH/AU0BRwFEAf9fAAEBBAADTAGSA2IB6QE3ATUBMgH8A1kB8gNRAZwDBAEFFAABvQHDAbUd/wGc + AZ4BlAH/Ab0BvgG1Af8BvQG+AbUB/wG9AcMBtQH/Ab0BvgG1Af8BvQG+AbUB/wG9Ab4BtQH/Ab0BvgG1 + Af8IAAGtAcMBxgH/AYQBxwHWAf8BTQGeAbUB/wFEAZYBtQH/ASMBUwFlAf9sAAMKAQ0EAAMKAQ0EAAMV + AR0DKAE8Ax4BKxwAAb0BwwG1Af8BvQHDAbUB/wG9AcMBtQH/Ab0BwwG1Af8BvQHDAbUB/wG9AcMBtQH/ + Ab0BwwG1Af8BvQHDAbUB/wG9AcMBtQH/KAABzgLvAf8BpQHjAfcB/wGEAcsB1gH/AWUBsgG9Af//AGUA + AUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAL/AfABBwH4AQECAAHgAQ8B8AEH + AfgDAAHAAQ8B8AEHAfgDAAHAAQ8CAAHAAwABwAEPAgABgAEBAgABwAEPAgABgAEDAgAB4AEPAgABgAEH + AgABwAEvAgABwAEPAgABwAE/AgAB4AEPAgAB0AEfAgABwAEHAgABwAEfAgABwAEHAgABwAEfAgABwAEH + AgAB2AEfAgABwQEPAgAB6AEfAgABwQH/AgAB1AF/AQABfwHhAf8CAAb/AgAL - + AAABAAoAAAAAAAEACADKTwAApgAAADAwAAABAAgAqA4AAHBQAAAgIAAAAQAIAKgIAAAYXwAAGBgAAAEA diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/Global.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/Global.cs index c2c1a389..539d7e3d 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/Global.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/Global.cs @@ -81,6 +81,7 @@ namespace WebsitePanel.Import.Enterprise public static string ErrorMessage; public static bool ImportAccountsOnly; public static bool HasErrors; + public static int defaultMailboxPlanId; } } diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs index e8f7f563..3068f97d 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs @@ -51,7 +51,6 @@ namespace WebsitePanel.Import.Enterprise private ProgressBar progressBar; private ApplicationForm appForm; private Button btnImport; - private Thread thread; @@ -780,27 +779,53 @@ namespace WebsitePanel.Import.Enterprise return userId; } int mailboxType = (int)type.Value; - ExchangeAccountType accountType = ExchangeAccountType.Undefined; - switch (mailboxType) - { - case 1073741824: - Log.WriteInfo("Account type : mailbox"); - accountType = ExchangeAccountType.Mailbox; - break; - case 7: - Log.WriteInfo("Account type : room"); - accountType = ExchangeAccountType.Room; - break; - case 8: - Log.WriteInfo("Account type : equipment"); - accountType = ExchangeAccountType.Equipment; - break; - default: - Log.WriteInfo("Account type : unknown"); - return userId; - } - UpdateExchangeAccount(userId, accountName, accountType, displayName, email, false, string.Empty, samName, string.Empty); + int mailboxTypeDetails = 0; + PropertyValueCollection typeDetails = entry.Properties["msExchRecipientTypeDetails"]; + if (typeDetails!=null) + { + if (typeDetails.Value != null) + { + try + { + object adsLargeInteger = typeDetails.Value; + mailboxTypeDetails = (Int32)adsLargeInteger.GetType().InvokeMember("LowPart", System.Reflection.BindingFlags.GetProperty, null, adsLargeInteger, null); + } + catch { } // just skip + + } + } + + ExchangeAccountType accountType = ExchangeAccountType.Undefined; + + if (mailboxTypeDetails == 4) + { + Log.WriteInfo("Account type : shared mailbox"); + accountType = ExchangeAccountType.SharedMailbox; + } + else + { + switch (mailboxType) + { + case 1073741824: + Log.WriteInfo("Account type : mailbox"); + accountType = ExchangeAccountType.Mailbox; + break; + case 7: + Log.WriteInfo("Account type : room"); + accountType = ExchangeAccountType.Room; + break; + case 8: + Log.WriteInfo("Account type : equipment"); + accountType = ExchangeAccountType.Equipment; + break; + default: + Log.WriteInfo("Account type : unknown"); + return userId; + } + } + + UpdateExchangeAccount(userId, accountName, accountType, displayName, email, false, string.Empty, samName, string.Empty, Global.defaultMailboxPlanId); string defaultEmail = (string)entry.Properties["extensionAttribute3"].Value; @@ -813,18 +838,16 @@ namespace WebsitePanel.Import.Enterprise if (emailAddress.ToLower().StartsWith("smtp:")) emailAddress = emailAddress.Substring(5); - - if (!emailAddress.Equals(defaultEmail, StringComparison.InvariantCultureIgnoreCase)) + if (EmailAddressExists(emailAddress)) { - if (EmailAddressExists(emailAddress)) - { - Log.WriteInfo(string.Format("Email address {0} already exists. Skipped", emailAddress)); - continue; - } - // register email address - Log.WriteInfo(string.Format("Importing email {0}", emailAddress)); - AddAccountEmailAddress(userId, emailAddress); + if ((!emailAddress.Equals(defaultEmail, StringComparison.InvariantCultureIgnoreCase)) && (!emailAddress.Equals(email, StringComparison.InvariantCultureIgnoreCase))) + Log.WriteInfo(string.Format("Email address {0} already exists. Skipped", emailAddress)); + + continue; } + // register email address + Log.WriteInfo(string.Format("Importing email {0}", emailAddress)); + AddAccountEmailAddress(userId, emailAddress); } } Log.WriteEnd("User imported"); @@ -963,7 +986,7 @@ namespace WebsitePanel.Import.Enterprise private static void UpdateExchangeAccount(int accountId, string accountName, ExchangeAccountType accountType, string displayName, string primaryEmailAddress, bool mailEnabledPublicFolder, - string mailboxManagerActions, string samAccountName, string accountPassword) + string mailboxManagerActions, string samAccountName, string accountPassword, int mailboxPlanId) { DataProvider.UpdateExchangeAccount(accountId, accountName, @@ -973,7 +996,7 @@ namespace WebsitePanel.Import.Enterprise mailEnabledPublicFolder, mailboxManagerActions, samAccountName, - CryptoUtils.Encrypt(accountPassword), 0, -1, string.Empty, false); + CryptoUtils.Encrypt(accountPassword), mailboxPlanId , -1, string.Empty, false); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs index 1d2702c2..2c3ec20d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs @@ -123,6 +123,9 @@ order by rg.groupOrder public const string EXCHANGE2013_ARCHIVINGSTORAGE = "Exchange2013.ArchivingStorage"; // Archiving public const string EXCHANGE2013_ARCHIVINGMAILBOXES = "Exchange2013.ArchivingMailboxes"; + public const string EXCHANGE2013_SHAREDMAILBOXES = "Exchange2013.SharedMailboxes"; // Shared and resource mailboxes + public const string EXCHANGE2013_RESOURCEMAILBOXES = "Exchange2013.ResourceMailboxes"; + public const string MSSQL2000_DATABASES = "MsSQL2000.Databases"; // Databases public const string MSSQL2000_USERS = "MsSQL2000.Users"; // Users public const string MSSQL2000_MAXDATABASESIZE = "MsSQL2000.MaxDatabaseSize"; // Max Database Size diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/ExchangeServer/ExchangeServerController.cs index d0e48fee..df7c368a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/ExchangeServer/ExchangeServerController.cs @@ -193,6 +193,9 @@ namespace WebsitePanel.EnterpriseServer stats.UsedDiskSpace = tempStats.UsedDiskSpace; stats.UsedLitigationHoldSpace = tempStats.UsedLitigationHoldSpace; stats.UsedArchingStorage = tempStats.UsedArchingStorage; + + stats.CreatedSharedMailboxes = tempStats.CreatedSharedMailboxes; + stats.CreatedResourceMailboxes = tempStats.CreatedResourceMailboxes; } else { @@ -221,6 +224,9 @@ namespace WebsitePanel.EnterpriseServer stats.UsedDiskSpace += tempStats.UsedDiskSpace; stats.UsedLitigationHoldSpace += tempStats.UsedLitigationHoldSpace; stats.UsedArchingStorage += tempStats.UsedArchingStorage; + + stats.CreatedSharedMailboxes += tempStats.CreatedSharedMailboxes; + stats.CreatedResourceMailboxes += tempStats.CreatedResourceMailboxes; } } } @@ -241,6 +247,9 @@ namespace WebsitePanel.EnterpriseServer stats.AllocatedLitigationHoldSpace = cntx.Quotas[Quotas.EXCHANGE2007_RECOVERABLEITEMSSPACE].QuotaAllocatedValue; stats.AllocatedArchingStorage = cntx.Quotas[Quotas.EXCHANGE2013_ARCHIVINGSTORAGE].QuotaAllocatedValue; + stats.AllocatedSharedMailboxes = cntx.Quotas[Quotas.EXCHANGE2013_SHAREDMAILBOXES].QuotaAllocatedValue; + stats.AllocatedResourceMailboxes = cntx.Quotas[Quotas.EXCHANGE2013_RESOURCEMAILBOXES].QuotaAllocatedValue; + return stats; } catch (Exception ex) @@ -1665,8 +1674,21 @@ namespace WebsitePanel.EnterpriseServer // check mailbox quota OrganizationStatistics orgStats = GetOrganizationStatistics(itemId); - if ((orgStats.AllocatedMailboxes > -1) && (orgStats.CreatedMailboxes >= orgStats.AllocatedMailboxes)) - return BusinessErrorCodes.ERROR_EXCHANGE_MAILBOXES_QUOTA_LIMIT; + if (accountType == ExchangeAccountType.SharedMailbox) + { + if ((orgStats.AllocatedSharedMailboxes > -1) && (orgStats.CreatedSharedMailboxes >= orgStats.AllocatedSharedMailboxes)) + return BusinessErrorCodes.ERROR_EXCHANGE_MAILBOXES_QUOTA_LIMIT; + } + else if ((accountType == ExchangeAccountType.Room) || (accountType == ExchangeAccountType.Equipment)) + { + if ((orgStats.AllocatedResourceMailboxes > -1) && (orgStats.CreatedResourceMailboxes >= orgStats.AllocatedResourceMailboxes)) + return BusinessErrorCodes.ERROR_EXCHANGE_MAILBOXES_QUOTA_LIMIT; + } + else + { + if ((orgStats.AllocatedMailboxes > -1) && (orgStats.CreatedMailboxes >= orgStats.AllocatedMailboxes)) + return BusinessErrorCodes.ERROR_EXCHANGE_MAILBOXES_QUOTA_LIMIT; + } // place log record diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3a721fdd..d7c0655a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,11 @@ - + - + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAccountType.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAccountType.cs index 88b0ac93..fdeaa6f2 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAccountType.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAccountType.cs @@ -39,7 +39,7 @@ namespace WebsitePanel.Providers.HostedSolution Equipment = 6, User = 7, SecurityGroup = 8, - DefaultSecurityGroup = 9 - + DefaultSecurityGroup = 9, + SharedMailbox = 10 } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxPlan.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxPlan.cs index 03435769..72e529c0 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxPlan.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxPlan.cs @@ -38,6 +38,15 @@ namespace WebsitePanel.Providers.HostedSolution int itemId; int mailboxPlanId; string mailboxPlan; + + public override string ToString() + { + if (mailboxPlan != null) + return mailboxPlan; + + return base.ToString(); + } + int mailboxSizeMB; int maxRecipients; int maxSendMessageSizeKB; @@ -63,7 +72,6 @@ namespace WebsitePanel.Providers.HostedSolution string litigationHoldUrl; string litigationHoldMsg; - public int ItemId { get { return this.itemId; } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatistics.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatistics.cs index b8189f82..6d15b8e2 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatistics.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatistics.cs @@ -341,6 +341,36 @@ namespace WebsitePanel.Providers.HostedSolution get { return usedArchingStorage; } set { usedArchingStorage = value; } } + + int allocatedSharedMailboxes; + public int AllocatedSharedMailboxes + { + get { return allocatedSharedMailboxes; } + set { allocatedSharedMailboxes = value; } + } + + int createdSharedMailboxes; + public int CreatedSharedMailboxes + { + get { return createdSharedMailboxes; } + set { createdSharedMailboxes = value; } + } + + int allocatedResourceMailboxes; + public int AllocatedResourceMailboxes + { + get { return allocatedResourceMailboxes; } + set { allocatedResourceMailboxes = value; } + } + + int createdResourceMailboxes; + public int CreatedResourceMailboxes + { + get { return createdResourceMailboxes; } + set { createdResourceMailboxes = value; } + } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/RemoteDesktopServices/RdsPolicyTypes.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/RemoteDesktopServices/RdsPolicyTypes.cs new file mode 100644 index 00000000..b00fa3a2 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/RemoteDesktopServices/RdsPolicyTypes.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WebsitePanel.Providers.RemoteDesktopServices +{ + public enum RdsPolicyTypes + { + RdCap, + RdRap + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index 4bd21714..43abd255 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -131,6 +131,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Exchange2013/Exchange2013.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Exchange2013/Exchange2013.cs index fa411b12..01909d57 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Exchange2013/Exchange2013.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Exchange2013/Exchange2013.cs @@ -1942,6 +1942,9 @@ namespace WebsitePanel.Providers.HostedSolution cmd.Parameters.Add("Equipment"); else if (accountType == ExchangeAccountType.Room) cmd.Parameters.Add("Room"); + else if (accountType == ExchangeAccountType.SharedMailbox) + cmd.Parameters.Add("Shared"); + result = ExecuteShellCommand(runSpace, cmd); @@ -4790,6 +4793,10 @@ namespace WebsitePanel.Providers.HostedSolution } CheckOrganizationRootPublicFolderPermission(runSpace, organizationId); + + // exchange transport needs access to create new items in order to deliver email + AddPublicFolderClientPermission(runSpace, folder, "Anonymous", "CreateItems"); + } finally { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2010SP2.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2010SP2.cs index fbb33f3a..7ab55d2e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2010SP2.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2010SP2.cs @@ -369,6 +369,8 @@ namespace WebsitePanel.Providers.HostedSolution cmd.Parameters.Add("Equipment"); else if (accountType == ExchangeAccountType.Room) cmd.Parameters.Add("Room"); + else if (accountType == ExchangeAccountType.SharedMailbox) + cmd.Parameters.Add("Shared"); result = ExecuteShellCommand(runSpace, cmd); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.TerminalServices.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.TerminalServices.Windows2012/Windows2012.cs index 934b2239..68de8394 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.TerminalServices.Windows2012/Windows2012.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.TerminalServices.Windows2012/Windows2012.cs @@ -194,19 +194,22 @@ namespace WebsitePanel.Providers.RemoteDesktopServices ActiveDirectoryUtils.CreateGroup(orgPath, GetUsersGroupName(collection.Name)); } + var capPolicyName = GetPolicyName(organizationId, collection.Name, RdsPolicyTypes.RdCap); + var rapPolicyName = GetPolicyName(organizationId, collection.Name, RdsPolicyTypes.RdRap); + foreach (var gateway in Gateways) { if (!CentralNps) { - CreateRdCapForce(runSpace, gateway, collection.Name, new List { GetUsersGroupName(collection.Name) }); + CreateRdCapForce(runSpace, gateway, capPolicyName, collection.Name, new List { GetUsersGroupName(collection.Name) }); } - CreateRdRapForce(runSpace, gateway, collection.Name, new List { GetUsersGroupName(collection.Name) }); + CreateRdRapForce(runSpace, gateway, rapPolicyName, collection.Name, new List { GetUsersGroupName(collection.Name) }); } if (CentralNps) { - CreateCentralNpsPolicy(runSpace, CentralNpsHost, collection.Name, organizationId); + CreateCentralNpsPolicy(runSpace, CentralNpsHost, capPolicyName, collection.Name, organizationId); } //add user group to collection @@ -278,19 +281,22 @@ namespace WebsitePanel.Providers.RemoteDesktopServices ExecuteShellCommand(runSpace, cmd, false); + var capPolicyName = GetPolicyName(organizationId, collectionName, RdsPolicyTypes.RdCap); + var rapPolicyName = GetPolicyName(organizationId, collectionName, RdsPolicyTypes.RdRap); + foreach (var gateway in Gateways) { if (!CentralNps) { - RemoveRdCap(runSpace, gateway, collectionName); + RemoveRdCap(runSpace, gateway, capPolicyName); } - RemoveRdRap(runSpace, gateway, collectionName); + RemoveRdRap(runSpace, gateway, rapPolicyName); } if (CentralNps) { - RemoveNpsPolicy(runSpace, CentralNpsHost, collectionName); + RemoveNpsPolicy(runSpace, CentralNpsHost, capPolicyName); } //Remove security group @@ -537,7 +543,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices #region Gateaway (RD CAP | RD RAP) - internal void CreateCentralNpsPolicy(Runspace runSpace, string centralNpshost, string collectionName, string organizationId) + internal void CreateCentralNpsPolicy(Runspace runSpace, string centralNpshost, string policyName, string collectionName, string organizationId) { var showCmd = new Command("netsh nps show np"); @@ -545,39 +551,39 @@ namespace WebsitePanel.Providers.RemoteDesktopServices var count = showResult.Count(x => Convert.ToString(x).Contains("policy conf")) + 1001; - var groupAd = ActiveDirectoryUtils.GetADObject(GetUsersGroupPath(organizationId, collectionName)); + var userGroupAd = ActiveDirectoryUtils.GetADObject(GetUsersGroupPath(organizationId, collectionName)); - var sid = (byte[])ActiveDirectoryUtils.GetADObjectProperty(groupAd, "objectSid"); + var userGroupSid = (byte[])ActiveDirectoryUtils.GetADObjectProperty(userGroupAd, "objectSid"); - var addCmdString = string.Format(AddNpsString, collectionName.Replace(" ", "_"), count, ConvertByteToStringSid(sid)); + var addCmdString = string.Format(AddNpsString, policyName.Replace(" ", "_"), count, ConvertByteToStringSid(userGroupSid)); Command addCmd = new Command(addCmdString); var result = ExecuteRemoteShellCommand(runSpace, centralNpshost, addCmd); } - internal void RemoveNpsPolicy(Runspace runSpace, string centralNpshost, string collectionName) + internal void RemoveNpsPolicy(Runspace runSpace, string centralNpshost, string policyName) { - var removeCmd = new Command(string.Format("netsh nps delete np {0}", collectionName.Replace(" ", "_"))); + var removeCmd = new Command(string.Format("netsh nps delete np {0}", policyName.Replace(" ", "_"))); var removeResult = ExecuteRemoteShellCommand(runSpace, centralNpshost, removeCmd); } - internal void CreateRdCapForce(Runspace runSpace, string gatewayHost, string name, List groups) + internal void CreateRdCapForce(Runspace runSpace, string gatewayHost, string policyName, string collectionName, List groups) { //New-Item -Path "RDS:\GatewayServer\CAP" -Name "Allow Admins" -UserGroups "Administrators@." -AuthMethod 1 //Set-Item -Path "RDS:\GatewayServer\CAP\Allow Admins\SessionTimeout" -Value 480 -SessionTimeoutAction 0 - if (ItemExistsRemote(runSpace, gatewayHost, Path.Combine(CapPath, name))) + if (ItemExistsRemote(runSpace, gatewayHost, Path.Combine(CapPath, policyName))) { - RemoveRdCap(runSpace, gatewayHost, name); + RemoveRdCap(runSpace, gatewayHost, policyName); } var userGroupParametr = string.Format("@({0})",string.Join(",", groups.Select(x => string.Format("\"{0}@{1}\"", x, RootDomain)).ToArray())); Command rdCapCommand = new Command("New-Item"); rdCapCommand.Parameters.Add("Path", string.Format("\"{0}\"", CapPath)); - rdCapCommand.Parameters.Add("Name", string.Format("\"{0}\"", name)); + rdCapCommand.Parameters.Add("Name", string.Format("\"{0}\"", policyName)); rdCapCommand.Parameters.Add("UserGroups", userGroupParametr); rdCapCommand.Parameters.Add("AuthMethod", 1); @@ -589,22 +595,22 @@ namespace WebsitePanel.Providers.RemoteDesktopServices RemoveItemRemote(runSpace, gatewayHost, string.Format(@"{0}\{1}", CapPath, name), RdsModuleName); } - internal void CreateRdRapForce(Runspace runSpace, string gatewayHost, string name, List groups) + internal void CreateRdRapForce(Runspace runSpace, string gatewayHost, string policyName, string collectionName, List groups) { //New-Item -Path "RDS:\GatewayServer\RAP" -Name "Allow Connections To Everywhere" -UserGroups "Administrators@." -ComputerGroupType 1 //Set-Item -Path "RDS:\GatewayServer\RAP\Allow Connections To Everywhere\PortNumbers" -Value 3389,3390 - if (ItemExistsRemote(runSpace, gatewayHost, Path.Combine(RapPath, name))) + if (ItemExistsRemote(runSpace, gatewayHost, Path.Combine(RapPath, policyName))) { - RemoveRdRap(runSpace, gatewayHost, name); + RemoveRdRap(runSpace, gatewayHost, policyName); } var userGroupParametr = string.Format("@({0})", string.Join(",", groups.Select(x => string.Format("\"{0}@{1}\"", x, RootDomain)).ToArray())); - var computerGroupParametr = string.Format("\"{0}@{1}\"", GetComputersGroupName(name), RootDomain); + var computerGroupParametr = string.Format("\"{0}@{1}\"", GetComputersGroupName(collectionName), RootDomain); Command rdRapCommand = new Command("New-Item"); rdRapCommand.Parameters.Add("Path", string.Format("\"{0}\"", RapPath)); - rdRapCommand.Parameters.Add("Name", string.Format("\"{0}\"", name)); + rdRapCommand.Parameters.Add("Name", string.Format("\"{0}\"", policyName)); rdRapCommand.Parameters.Add("UserGroups", userGroupParametr); rdRapCommand.Parameters.Add("ComputerGroupType", 1); rdRapCommand.Parameters.Add("ComputerGroup", computerGroupParametr); @@ -629,6 +635,8 @@ namespace WebsitePanel.Providers.RemoteDesktopServices ExecuteShellCommand(runSpace, cmd, false); } + + private bool ExistRdsServerInDeployment(Runspace runSpace, RdsServer server) { Command cmd = new Command("Get-RDserver"); @@ -924,6 +932,27 @@ namespace WebsitePanel.Providers.RemoteDesktopServices ExecuteRemoteShellCommand(runSpace, hostname, rdRapCommand, imports); } + private string GetPolicyName(string organizationId, string collectionName, RdsPolicyTypes policyType) + { + string policyName = string.Format("{0}-{1}-", organizationId, collectionName); + + switch (policyType) + { + case RdsPolicyTypes.RdCap: + { + policyName += "RDCAP"; + break; + } + case RdsPolicyTypes.RdRap: + { + policyName += "RDRAP"; + break; + } + } + + return policyName; + } + private string GetComputersGroupName(string collectionName) { return string.Format(RdsGroupFormat, collectionName, Computers.ToLowerInvariant()); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/SSL/SSLModuleService80.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/SSL/SSLModuleService80.cs index 01baf828..1ba070aa 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/SSL/SSLModuleService80.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/SSL/SSLModuleService80.cs @@ -49,14 +49,6 @@ namespace WebsitePanel.Providers.Web.Iis // We need to move it into "WebHosting" store // Get certificate var servercert = GetServerCertificates(StoreName.My.ToString()).Single(c => c.FriendlyName == cert.FriendlyName); - if (UseCCS) - { - // Delete existing certificate, if any. This is needed to install a new binding - if (CheckCertificate(website)) - { - DeleteCertificate(GetCurrentSiteCertificate(website), website); - } - } // Get certificate data - the one we just added to "Personal" store var storeMy = new X509Store(StoreName.My, StoreLocation.LocalMachine); @@ -64,6 +56,7 @@ namespace WebsitePanel.Providers.Web.Iis X509CertificateCollection existCerts2 = storeMy.Certificates.Find(X509FindType.FindBySerialNumber, servercert.SerialNumber, false); var certData = existCerts2[0].Export(X509ContentType.Pfx); storeMy.Close(); + var x509Cert = new X509Certificate2(certData); if (UseCCS) { @@ -74,7 +67,6 @@ namespace WebsitePanel.Providers.Web.Iis { // Add new certificate to "WebHosting" store var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine); - var x509Cert = new X509Certificate2(certData); store.Open(OpenFlags.ReadWrite); store.Add(x509Cert); store.Close(); @@ -85,6 +77,7 @@ namespace WebsitePanel.Providers.Web.Iis X509CertificateCollection existCerts = storeMy.Certificates.Find(X509FindType.FindBySerialNumber, servercert.SerialNumber, false); storeMy.Remove((X509Certificate2)existCerts[0]); storeMy.Close(); + // Fill object with certificate data cert.SerialNumber = servercert.SerialNumber; cert.ValidFrom = servercert.ValidFrom; @@ -99,7 +92,7 @@ namespace WebsitePanel.Providers.Web.Iis DeleteCertificate(GetCurrentSiteCertificate(website), website); } - AddBinding(cert, website); + AddBinding(x509Cert, website); } } catch (Exception ex) @@ -113,8 +106,10 @@ namespace WebsitePanel.Providers.Web.Iis public new List GetServerCertificates() { - // Use Web Hosting store - new for IIS 8.0 - return GetServerCertificates(CertificateStoreName); + // Get certificates from both WebHosting and My (Personal) store + var certificates = GetServerCertificates(CertificateStoreName); + certificates.AddRange(GetServerCertificates(StoreName.My.ToString())); + return certificates; } public new SSLCertificate ImportCertificate(WebSite website) @@ -134,12 +129,12 @@ namespace WebsitePanel.Providers.Web.Iis }; } - return certificate; + return certificate ?? (new SSLCertificate {Success = false, Certificate = "No certificate in binding on server, please remove or edit binding"}); } public new SSLCertificate InstallPfx(byte[] certificate, string password, WebSite website) { - SSLCertificate newcert, oldcert = null; + SSLCertificate newcert = null, oldcert = null; // Ensure we perform operations safely and preserve the original state during all manipulations, save the oldcert if one is used if (CheckCertificate(website)) @@ -170,7 +165,7 @@ namespace WebsitePanel.Providers.Web.Iis writer.Write(certData); writer.Flush(); writer.Close(); - // Certificated saved + // Certificate saved } catch (Exception ex) { @@ -189,7 +184,6 @@ namespace WebsitePanel.Providers.Web.Iis try { store.Open(OpenFlags.ReadWrite); - store.Add(x509Cert); } catch (Exception ex) @@ -205,82 +199,38 @@ namespace WebsitePanel.Providers.Web.Iis } // Step 2: Instantiate a copy of new X.509 certificate - try - { - store.Open(OpenFlags.ReadWrite); - newcert = GetSSLCertificateFromX509Certificate2(x509Cert); - } - catch (Exception ex) - { - if (!UseCCS) - { - // Rollback X.509 store changes - store.Remove(x509Cert); - } - // Log error - Log.WriteError("SSLModuleService could not instantiate a copy of new X.509 certificate. All previous changes have been rolled back.", ex); - // Re-throw - throw; - } - finally - { - store.Close(); - } + try + { + newcert = GetSSLCertificateFromX509Certificate2(x509Cert); + } + catch (Exception ex) + { + HandleExceptionAndRollbackCertificate(store, x509Cert, null, website, "SSLModuleService could not instantiate a copy of new X.509 certificate.", ex); + } - if (!UseCCS) - { - // Step 3: Remove old certificate from the web site if any - try - { - store.Open(OpenFlags.ReadWrite); - // Check if certificate already exists, remove it. - if (oldcert != null) - DeleteCertificate(oldcert, website); - } - catch (Exception ex) - { - // Rollback X.509 store changes - store.Remove(x509Cert); - // Log the error - Log.WriteError( - String.Format("SSLModuleService could not remove existing certificate from '{0}' web site. All changes have been rolled back.", website.Name), ex); - // Re-throw - throw; - } - finally - { - store.Close(); - } - } + // Step 3: Remove old certificate from the web site if any + try + { + // Check if certificate already exists, remove it. + if (oldcert != null) + { + DeleteCertificate(oldcert, website); + } + } + catch (Exception ex) + { + HandleExceptionAndRollbackCertificate(store, x509Cert, null, website, string.Format("SSLModuleService could not remove existing certificate from '{0}' web site.", website.Name), ex); + } - // Step 4: Register new certificate with HTTPS binding on the web site - try - { - //if (!UseCCS) - //{ - // store.Open(OpenFlags.ReadWrite); - //} - - AddBinding(newcert, website); - } - catch (Exception ex) - { - if (!UseCCS) - { - // Install old certificate back if any - store.Open(OpenFlags.ReadWrite); - if (oldcert != null) - InstallCertificate(oldcert, website); - // Rollback X.509 store changes - store.Remove(x509Cert); - store.Close(); - } - // Log the error - Log.WriteError( - String.Format("SSLModuleService could not add new X.509 certificate to '{0}' web site. All changes have been rolled back.", website.Name), ex); - // Re-throw - throw; - } + // Step 4: Register new certificate with HTTPS binding on the web site + try + { + AddBinding(x509Cert, website); + } + catch (Exception ex) + { + HandleExceptionAndRollbackCertificate(store, x509Cert, oldcert, website, String.Format("SSLModuleService could not add new X.509 certificate to '{0}' web site.", website.Name), ex); + } return newcert; } @@ -319,32 +269,47 @@ namespace WebsitePanel.Providers.Web.Iis } - public new void AddBinding(SSLCertificate certificate, WebSite website) + public void AddBinding(X509Certificate2 certificate, WebSite website) { using (var srvman = GetServerManager()) { - var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine); - store.Open(OpenFlags.ReadOnly); - // Look for dedicated ip var dedicatedIp = SiteHasBindingWithDedicatedIp(srvman, website); - var bindingInformation = string.Format("{0}:443:{1}", website.SiteIPAddress, dedicatedIp ? "" : certificate.Hostname); + // Look for all the hostnames this certificate is valid for if we are using SNI + var hostNames = new List(); - Binding siteBinding = UseCCS ? - srvman.Sites[website.SiteId].Bindings.Add(bindingInformation, "https") : - srvman.Sites[website.SiteId].Bindings.Add(bindingInformation, certificate.Hash, store.Name); + if (!dedicatedIp) + { + hostNames.AddRange(certificate.Extensions.Cast() + .Where(e => e.Oid.Value == "2.5.29.17") // Subject Alternative Names + .SelectMany(e => e.Format(true).Split(new[] {"\r\n", "\n", "\n"}, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Split('=')[1]))); + } + + var simpleName = certificate.GetNameInfo(X509NameType.SimpleName, false); + if (hostNames.All(h => h != simpleName)) + { + hostNames.Add(simpleName); + } + + // For every hostname (only one if using old school dedicated IP binding) + foreach (var hostName in hostNames) + { + var bindingInformation = string.Format("{0}:443:{1}", website.SiteIPAddress ?? "*", dedicatedIp ? "" : hostName); + + Binding siteBinding = UseCCS ? + srvman.Sites[website.SiteId].Bindings.Add(bindingInformation, "https") : + srvman.Sites[website.SiteId].Bindings.Add(bindingInformation, certificate.GetCertHash(), CertificateStoreName); - if (UseSNI) - { - siteBinding.SslFlags |= SslFlags.Sni; + if (UseSNI && !dedicatedIp) + { + siteBinding.SslFlags |= SslFlags.Sni; + } + if (UseCCS) + { + siteBinding.SslFlags |= SslFlags.CentralCertStore; + } } - if (UseCCS) - { - siteBinding.SslFlags |= SslFlags.CentralCertStore; - } - - store.Close(); srvman.CommitChanges(); } @@ -352,7 +317,9 @@ namespace WebsitePanel.Providers.Web.Iis public new ResultObject DeleteCertificate(SSLCertificate certificate, WebSite website) { - var result = new ResultObject() { IsSuccess = true }; + // This method removes all https bindings and all certificates associated with them. + // Old implementation (IIS70) removed a single binding (there could not be more than one) and the first certificate that matched via serial number + var result = new ResultObject { IsSuccess = true }; if (certificate == null) { @@ -361,35 +328,70 @@ namespace WebsitePanel.Providers.Web.Iis try { - // Regardless of the CCS setting on the server, we try to find and remove the certificate from both CCS and WebHosting Store. - // This is because we don't know how this was set when the certificate was added + var certificatesAndStoreNames = new List>(); - if (!string.IsNullOrWhiteSpace(CCSUncPath) && Directory.Exists(CCSUncPath)) + // User servermanager to get aLL SSL-bindings on this website and try to remove the certificates used + using (var srvman = GetServerManager()) { - // This is where it will be if CCS is used - var path = GetCCSPath(certificate.Hostname); - if (File.Exists(path)) + + var site = srvman.Sites[website.Name]; + var bindings = site.Bindings.Where(b => b.Protocol == "https"); + + foreach (Binding binding in bindings.ToList()) { - File.Delete(path); + if (binding.SslFlags.HasFlag(SslFlags.CentralCertStore)) + { + if (!string.IsNullOrWhiteSpace(CCSUncPath) && Directory.Exists(CCSUncPath)) + { + // This is where it will be if CCS is used + var path = GetCCSPath(certificate.Hostname); + if (File.Exists(path)) + { + File.Delete(path); + } + + // If binding with hostname, also try to delete with the hostname in the binding + // This is because if SNI is used, several bindings are created for every valid name in the cerificate, but only one name exists in the SSLCertificate + if (!string.IsNullOrEmpty(binding.Host)) + { + path = GetCCSPath(binding.Host); + if (File.Exists(path)) + { + File.Delete(path); + } + } + } + } + else + { + var certificateAndStoreName = new Tuple(binding.CertificateStoreName, binding.CertificateHash); + + if (!string.IsNullOrEmpty(binding.CertificateStoreName) && !certificatesAndStoreNames.Contains(certificateAndStoreName)) + { + certificatesAndStoreNames.Add(certificateAndStoreName); + } + } + + // Remove binding from site + site.Bindings.Remove(binding); } - } - // Now delete all certs with the same serialnumber in WebHosting Store - var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine); - store.Open(OpenFlags.MaxAllowed); + srvman.CommitChanges(); - var certs = store.Certificates.Find(X509FindType.FindBySerialNumber, certificate.SerialNumber, false); - foreach (var cert in certs) - { - store.Remove(cert); - } + foreach (var certificateAndStoreName in certificatesAndStoreNames) + { + // Delete all certs with the same serialnumber in Store + var store = new X509Store(certificateAndStoreName.Item1, StoreLocation.LocalMachine); + store.Open(OpenFlags.MaxAllowed); - store.Close(); + var certs = store.Certificates.Find(X509FindType.FindByThumbprint, BitConverter.ToString(certificateAndStoreName.Item2).Replace("-", ""), false); + foreach (var cert in certs) + { + store.Remove(cert); + } - // Remove binding from site - if (CheckCertificate(website)) - { - RemoveBinding(certificate, website); + store.Close(); + } } } catch (Exception ex) @@ -409,9 +411,7 @@ namespace WebsitePanel.Providers.Web.Iis var site = srvman.Sites[website.SiteId]; var sslBinding = site.Bindings.First(b => b.Protocol == "https"); - X509Certificate2 cert = null; - - // If the certificate is in the central store + // If the certificate is in the central store if (((SslFlags)Enum.Parse(typeof(SslFlags), sslBinding["sslFlags"].ToString())).HasFlag(SslFlags.CentralCertStore)) { // Let's try to match binding host and certificate filename @@ -423,23 +423,19 @@ namespace WebsitePanel.Providers.Web.Iis // Read certificate data from file var certData = new byte[fileStream.Length]; fileStream.Read(certData, 0, (int) fileStream.Length); - cert = new X509Certificate2(certData, CCSCommonPassword); + var cert = new X509Certificate2(certData, CCSCommonPassword); fileStream.Close(); + return GetSSLCertificateFromX509Certificate2(cert); } } else { - var currentHash = sslBinding.CertificateHash; - var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine); - store.Open(OpenFlags.ReadOnly); - - cert = store.Certificates.Cast().Single(c => Convert.ToBase64String(c.GetCertHash()) == Convert.ToBase64String(currentHash)); - - store.Close(); + var currentHash = Convert.ToBase64String(sslBinding.CertificateHash); + return GetServerCertificates().FirstOrDefault(c => Convert.ToBase64String(c.Hash) == currentHash); } - - return GetSSLCertificateFromX509Certificate2(cert); } + + return null; } private static List GetServerCertificates(string certificateStoreName) @@ -504,5 +500,33 @@ namespace WebsitePanel.Providers.Web.Iis return false; } } + + private void HandleExceptionAndRollbackCertificate(X509Store store, X509Certificate2 x509Cert, SSLCertificate oldCert, WebSite webSite, string errorMessage, Exception ex) + { + if (!UseCCS) + { + try + { + // Rollback X.509 store changes + store.Open(OpenFlags.ReadWrite); + store.Remove(x509Cert); + store.Close(); + } + catch (Exception) + { + Log.WriteError("SSLModuleService could not rollback and remove certificate from store", ex); + } + + // Install old certificate back if any + if (oldCert != null) + InstallCertificate(oldCert, webSite); + } + + // Log the error + Log.WriteError(errorMessage + " All changes have been rolled back.", ex); + + // Re-throw + throw ex; + } } } diff --git a/WebsitePanel/Sources/WebsitePanel.SchedulerService/app.config b/WebsitePanel/Sources/WebsitePanel.SchedulerService/app.config index f4df3fb3..259bc157 100644 --- a/WebsitePanel/Sources/WebsitePanel.SchedulerService/app.config +++ b/WebsitePanel/Sources/WebsitePanel.SchedulerService/app.config @@ -1,14 +1,14 @@ - + - + diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/RemoteDesktopServicesProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/RemoteDesktopServicesProxy.cs index 699cb445..e3637eae 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/RemoteDesktopServicesProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/RemoteDesktopServicesProxy.cs @@ -1,35 +1,7 @@ -// Copyright (c) 2014, Outercurve Foundation. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// - Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// - Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// - Neither the name of the Outercurve Foundation nor the names of its -// contributors may be used to endorse or promote products derived from this -// software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.6400 +// Runtime Version:2.0.50727.7905 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -39,1330 +11,1149 @@ // // This source code was auto-generated by wsdl, Version=2.0.50727.3038. // - -using WebsitePanel.Providers.HostedSolution; - namespace WebsitePanel.Providers.RemoteDesktopServices { - using System; - using System.ComponentModel; - using System.Diagnostics; - using System.Web.Services; - using System.Web.Services.Protocols; using System.Xml.Serialization; - + using System.Web.Services; + using System.ComponentModel; + using System.Web.Services.Protocols; + using System; + using System.Diagnostics; + + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "RemoteDesktopServicesSoap", Namespace = "http://smbsaas/websitepanel/server/")] - public partial class RemoteDesktopServices : Microsoft.Web.Services3.WebServicesClientProtocol - { + [System.Web.Services.WebServiceBindingAttribute(Name="RemoteDesktopServicesSoap", Namespace="http://smbsaas/websitepanel/server/")] + public partial class RemoteDesktopServices : Microsoft.Web.Services3.WebServicesClientProtocol { + public ServiceProviderSettingsSoapHeader ServiceProviderSettingsSoapHeaderValue; - + private System.Threading.SendOrPostCallback CreateCollectionOperationCompleted; - + private System.Threading.SendOrPostCallback GetCollectionOperationCompleted; - + private System.Threading.SendOrPostCallback RemoveCollectionOperationCompleted; - + private System.Threading.SendOrPostCallback SetUsersInCollectionOperationCompleted; - + private System.Threading.SendOrPostCallback AddSessionHostServerToCollectionOperationCompleted; - + private System.Threading.SendOrPostCallback AddSessionHostServersToCollectionOperationCompleted; - + private System.Threading.SendOrPostCallback RemoveSessionHostServerFromCollectionOperationCompleted; - + private System.Threading.SendOrPostCallback RemoveSessionHostServersFromCollectionOperationCompleted; - + private System.Threading.SendOrPostCallback GetAvailableRemoteApplicationsOperationCompleted; - + private System.Threading.SendOrPostCallback GetCollectionRemoteApplicationsOperationCompleted; - + private System.Threading.SendOrPostCallback AddRemoteApplicationOperationCompleted; - + private System.Threading.SendOrPostCallback AddRemoteApplicationsOperationCompleted; - + private System.Threading.SendOrPostCallback RemoveRemoteApplicationOperationCompleted; - + private System.Threading.SendOrPostCallback AddSessionHostFeatureToServerOperationCompleted; - + private System.Threading.SendOrPostCallback CheckSessionHostFeatureInstallationOperationCompleted; - + private System.Threading.SendOrPostCallback CheckServerAvailabilityOperationCompleted; - + /// - public RemoteDesktopServices() - { - this.Url = "http://127.0.0.1:9003/RemoteDesktopServices.asmx"; + public RemoteDesktopServices() { + this.Url = "http://localhost:9003/RemoteDesktopServices.asmx"; } - + /// public event CreateCollectionCompletedEventHandler CreateCollectionCompleted; - + /// public event GetCollectionCompletedEventHandler GetCollectionCompleted; - + /// public event RemoveCollectionCompletedEventHandler RemoveCollectionCompleted; - + /// public event SetUsersInCollectionCompletedEventHandler SetUsersInCollectionCompleted; - + /// public event AddSessionHostServerToCollectionCompletedEventHandler AddSessionHostServerToCollectionCompleted; - + /// public event AddSessionHostServersToCollectionCompletedEventHandler AddSessionHostServersToCollectionCompleted; - + /// public event RemoveSessionHostServerFromCollectionCompletedEventHandler RemoveSessionHostServerFromCollectionCompleted; - + /// public event RemoveSessionHostServersFromCollectionCompletedEventHandler RemoveSessionHostServersFromCollectionCompleted; - + /// public event GetAvailableRemoteApplicationsCompletedEventHandler GetAvailableRemoteApplicationsCompleted; - + /// public event GetCollectionRemoteApplicationsCompletedEventHandler GetCollectionRemoteApplicationsCompleted; - + /// public event AddRemoteApplicationCompletedEventHandler AddRemoteApplicationCompleted; - + /// public event AddRemoteApplicationsCompletedEventHandler AddRemoteApplicationsCompleted; - + /// public event RemoveRemoteApplicationCompletedEventHandler RemoveRemoteApplicationCompleted; - + /// public event AddSessionHostFeatureToServerCompletedEventHandler AddSessionHostFeatureToServerCompleted; - + /// public event CheckSessionHostFeatureInstallationCompletedEventHandler CheckSessionHostFeatureInstallationCompleted; - + /// public event CheckServerAvailabilityCompletedEventHandler CheckServerAvailabilityCompleted; - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateCollection", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool CreateCollection(string organizationId, RdsCollection collection) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool CreateCollection(string organizationId, RdsCollection collection) { object[] results = this.Invoke("CreateCollection", new object[] { - organizationId, - collection}); + organizationId, + collection}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginCreateCollection(string organizationId, RdsCollection collection, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCreateCollection(string organizationId, RdsCollection collection, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateCollection", new object[] { - organizationId, - collection}, callback, asyncState); + organizationId, + collection}, callback, asyncState); } - + /// - public bool EndCreateCollection(System.IAsyncResult asyncResult) - { + public bool EndCreateCollection(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void CreateCollectionAsync(string organizationId, RdsCollection collection) - { + public void CreateCollectionAsync(string organizationId, RdsCollection collection) { this.CreateCollectionAsync(organizationId, collection, null); } - + /// - public void CreateCollectionAsync(string organizationId, RdsCollection collection, object userState) - { - if ((this.CreateCollectionOperationCompleted == null)) - { + public void CreateCollectionAsync(string organizationId, RdsCollection collection, object userState) { + if ((this.CreateCollectionOperationCompleted == null)) { this.CreateCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateCollectionOperationCompleted); } this.InvokeAsync("CreateCollection", new object[] { - organizationId, - collection}, this.CreateCollectionOperationCompleted, userState); + organizationId, + collection}, this.CreateCollectionOperationCompleted, userState); } - - private void OnCreateCollectionOperationCompleted(object arg) - { - if ((this.CreateCollectionCompleted != null)) - { + + private void OnCreateCollectionOperationCompleted(object arg) { + if ((this.CreateCollectionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CreateCollectionCompleted(this, new CreateCollectionCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetCollection", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public RdsCollection GetCollection(string collectionName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public RdsCollection GetCollection(string collectionName) { object[] results = this.Invoke("GetCollection", new object[] { - collectionName}); + collectionName}); return ((RdsCollection)(results[0])); } - + /// - public System.IAsyncResult BeginGetCollection(string collectionName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetCollection(string collectionName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetCollection", new object[] { - collectionName}, callback, asyncState); + collectionName}, callback, asyncState); } - + /// - public RdsCollection EndGetCollection(System.IAsyncResult asyncResult) - { + public RdsCollection EndGetCollection(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((RdsCollection)(results[0])); } - + /// - public void GetCollectionAsync(string collectionName) - { + public void GetCollectionAsync(string collectionName) { this.GetCollectionAsync(collectionName, null); } - + /// - public void GetCollectionAsync(string collectionName, object userState) - { - if ((this.GetCollectionOperationCompleted == null)) - { + public void GetCollectionAsync(string collectionName, object userState) { + if ((this.GetCollectionOperationCompleted == null)) { this.GetCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetCollectionOperationCompleted); } this.InvokeAsync("GetCollection", new object[] { - collectionName}, this.GetCollectionOperationCompleted, userState); + collectionName}, this.GetCollectionOperationCompleted, userState); } - - private void OnGetCollectionOperationCompleted(object arg) - { - if ((this.GetCollectionCompleted != null)) - { + + private void OnGetCollectionOperationCompleted(object arg) { + if ((this.GetCollectionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetCollectionCompleted(this, new GetCollectionCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveCollection", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool RemoveCollection(string organizationId, string collectionName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool RemoveCollection(string organizationId, string collectionName) { object[] results = this.Invoke("RemoveCollection", new object[] { - organizationId, - collectionName}); + organizationId, + collectionName}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginRemoveCollection(string organizationId, string collectionName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginRemoveCollection(string organizationId, string collectionName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("RemoveCollection", new object[] { - organizationId, - collectionName}, callback, asyncState); + organizationId, + collectionName}, callback, asyncState); } - + /// - public bool EndRemoveCollection(System.IAsyncResult asyncResult) - { + public bool EndRemoveCollection(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void RemoveCollectionAsync(string organizationId, string collectionName) - { + public void RemoveCollectionAsync(string organizationId, string collectionName) { this.RemoveCollectionAsync(organizationId, collectionName, null); } - + /// - public void RemoveCollectionAsync(string organizationId, string collectionName, object userState) - { - if ((this.RemoveCollectionOperationCompleted == null)) - { + public void RemoveCollectionAsync(string organizationId, string collectionName, object userState) { + if ((this.RemoveCollectionOperationCompleted == null)) { this.RemoveCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveCollectionOperationCompleted); } this.InvokeAsync("RemoveCollection", new object[] { - organizationId, - collectionName}, this.RemoveCollectionOperationCompleted, userState); + organizationId, + collectionName}, this.RemoveCollectionOperationCompleted, userState); } - - private void OnRemoveCollectionOperationCompleted(object arg) - { - if ((this.RemoveCollectionCompleted != null)) - { + + private void OnRemoveCollectionOperationCompleted(object arg) { + if ((this.RemoveCollectionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.RemoveCollectionCompleted(this, new RemoveCollectionCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetUsersInCollection", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool SetUsersInCollection(string organizationId, string collectionName, string[] users) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetUsersInCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool SetUsersInCollection(string organizationId, string collectionName, string[] users) { object[] results = this.Invoke("SetUsersInCollection", new object[] { - organizationId, - collectionName, - users}); + organizationId, + collectionName, + users}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginSetUsersInCollection(string organizationId, string collectionName, string[] users, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginSetUsersInCollection(string organizationId, string collectionName, string[] users, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("SetUsersInCollection", new object[] { - organizationId, - collectionName, - users}, callback, asyncState); + organizationId, + collectionName, + users}, callback, asyncState); } - + /// - public bool EndSetUsersInCollection(System.IAsyncResult asyncResult) - { + public bool EndSetUsersInCollection(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void SetUsersInCollectionAsync(string organizationId, string collectionName, string[] users) - { + public void SetUsersInCollectionAsync(string organizationId, string collectionName, string[] users) { this.SetUsersInCollectionAsync(organizationId, collectionName, users, null); } - + /// - public void SetUsersInCollectionAsync(string organizationId, string collectionName, string[] users, object userState) - { - if ((this.SetUsersInCollectionOperationCompleted == null)) - { + public void SetUsersInCollectionAsync(string organizationId, string collectionName, string[] users, object userState) { + if ((this.SetUsersInCollectionOperationCompleted == null)) { this.SetUsersInCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUsersInCollectionOperationCompleted); } this.InvokeAsync("SetUsersInCollection", new object[] { - organizationId, - collectionName, - users}, this.SetUsersInCollectionOperationCompleted, userState); + organizationId, + collectionName, + users}, this.SetUsersInCollectionOperationCompleted, userState); } - - private void OnSetUsersInCollectionOperationCompleted(object arg) - { - if ((this.SetUsersInCollectionCompleted != null)) - { + + private void OnSetUsersInCollectionOperationCompleted(object arg) { + if ((this.SetUsersInCollectionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.SetUsersInCollectionCompleted(this, new SetUsersInCollectionCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddSessionHostServerToCollection", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void AddSessionHostServerToCollection(string organizationId, string collectionName, RdsServer server) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddSessionHostServerToCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void AddSessionHostServerToCollection(string organizationId, string collectionName, RdsServer server) { this.Invoke("AddSessionHostServerToCollection", new object[] { - organizationId, - collectionName, - server}); + organizationId, + collectionName, + server}); } - + /// - public System.IAsyncResult BeginAddSessionHostServerToCollection(string organizationId, string collectionName, RdsServer server, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginAddSessionHostServerToCollection(string organizationId, string collectionName, RdsServer server, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddSessionHostServerToCollection", new object[] { - organizationId, - collectionName, - server}, callback, asyncState); + organizationId, + collectionName, + server}, callback, asyncState); } - + /// - public void EndAddSessionHostServerToCollection(System.IAsyncResult asyncResult) - { + public void EndAddSessionHostServerToCollection(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void AddSessionHostServerToCollectionAsync(string organizationId, string collectionName, RdsServer server) - { + public void AddSessionHostServerToCollectionAsync(string organizationId, string collectionName, RdsServer server) { this.AddSessionHostServerToCollectionAsync(organizationId, collectionName, server, null); } - + /// - public void AddSessionHostServerToCollectionAsync(string organizationId, string collectionName, RdsServer server, object userState) - { - if ((this.AddSessionHostServerToCollectionOperationCompleted == null)) - { + public void AddSessionHostServerToCollectionAsync(string organizationId, string collectionName, RdsServer server, object userState) { + if ((this.AddSessionHostServerToCollectionOperationCompleted == null)) { this.AddSessionHostServerToCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddSessionHostServerToCollectionOperationCompleted); } this.InvokeAsync("AddSessionHostServerToCollection", new object[] { - organizationId, - collectionName, - server}, this.AddSessionHostServerToCollectionOperationCompleted, userState); + organizationId, + collectionName, + server}, this.AddSessionHostServerToCollectionOperationCompleted, userState); } - - private void OnAddSessionHostServerToCollectionOperationCompleted(object arg) - { - if ((this.AddSessionHostServerToCollectionCompleted != null)) - { + + private void OnAddSessionHostServerToCollectionOperationCompleted(object arg) { + if ((this.AddSessionHostServerToCollectionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.AddSessionHostServerToCollectionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddSessionHostServersToCollection", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void AddSessionHostServersToCollection(string organizationId, string collectionName, RdsServer[] servers) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddSessionHostServersToCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void AddSessionHostServersToCollection(string organizationId, string collectionName, RdsServer[] servers) { this.Invoke("AddSessionHostServersToCollection", new object[] { - organizationId, - collectionName, - servers}); + organizationId, + collectionName, + servers}); } - + /// - public System.IAsyncResult BeginAddSessionHostServersToCollection(string organizationId, string collectionName, RdsServer[] servers, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginAddSessionHostServersToCollection(string organizationId, string collectionName, RdsServer[] servers, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddSessionHostServersToCollection", new object[] { - organizationId, - collectionName, - servers}, callback, asyncState); + organizationId, + collectionName, + servers}, callback, asyncState); } - + /// - public void EndAddSessionHostServersToCollection(System.IAsyncResult asyncResult) - { + public void EndAddSessionHostServersToCollection(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void AddSessionHostServersToCollectionAsync(string organizationId, string collectionName, RdsServer[] servers) - { + public void AddSessionHostServersToCollectionAsync(string organizationId, string collectionName, RdsServer[] servers) { this.AddSessionHostServersToCollectionAsync(organizationId, collectionName, servers, null); } - + /// - public void AddSessionHostServersToCollectionAsync(string organizationId, string collectionName, RdsServer[] servers, object userState) - { - if ((this.AddSessionHostServersToCollectionOperationCompleted == null)) - { + public void AddSessionHostServersToCollectionAsync(string organizationId, string collectionName, RdsServer[] servers, object userState) { + if ((this.AddSessionHostServersToCollectionOperationCompleted == null)) { this.AddSessionHostServersToCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddSessionHostServersToCollectionOperationCompleted); } this.InvokeAsync("AddSessionHostServersToCollection", new object[] { - organizationId, - collectionName, - servers}, this.AddSessionHostServersToCollectionOperationCompleted, userState); + organizationId, + collectionName, + servers}, this.AddSessionHostServersToCollectionOperationCompleted, userState); } - - private void OnAddSessionHostServersToCollectionOperationCompleted(object arg) - { - if ((this.AddSessionHostServersToCollectionCompleted != null)) - { + + private void OnAddSessionHostServersToCollectionOperationCompleted(object arg) { + if ((this.AddSessionHostServersToCollectionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.AddSessionHostServersToCollectionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveSessionHostServerFromCollection", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void RemoveSessionHostServerFromCollection(string organizationId, string collectionName, RdsServer server) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveSessionHostServerFromCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void RemoveSessionHostServerFromCollection(string organizationId, string collectionName, RdsServer server) { this.Invoke("RemoveSessionHostServerFromCollection", new object[] { - organizationId, - collectionName, - server}); + organizationId, + collectionName, + server}); } - + /// - public System.IAsyncResult BeginRemoveSessionHostServerFromCollection(string organizationId, string collectionName, RdsServer server, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginRemoveSessionHostServerFromCollection(string organizationId, string collectionName, RdsServer server, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("RemoveSessionHostServerFromCollection", new object[] { - organizationId, - collectionName, - server}, callback, asyncState); + organizationId, + collectionName, + server}, callback, asyncState); } - + /// - public void EndRemoveSessionHostServerFromCollection(System.IAsyncResult asyncResult) - { + public void EndRemoveSessionHostServerFromCollection(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void RemoveSessionHostServerFromCollectionAsync(string organizationId, string collectionName, RdsServer server) - { + public void RemoveSessionHostServerFromCollectionAsync(string organizationId, string collectionName, RdsServer server) { this.RemoveSessionHostServerFromCollectionAsync(organizationId, collectionName, server, null); } - + /// - public void RemoveSessionHostServerFromCollectionAsync(string organizationId, string collectionName, RdsServer server, object userState) - { - if ((this.RemoveSessionHostServerFromCollectionOperationCompleted == null)) - { + public void RemoveSessionHostServerFromCollectionAsync(string organizationId, string collectionName, RdsServer server, object userState) { + if ((this.RemoveSessionHostServerFromCollectionOperationCompleted == null)) { this.RemoveSessionHostServerFromCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveSessionHostServerFromCollectionOperationCompleted); } this.InvokeAsync("RemoveSessionHostServerFromCollection", new object[] { - organizationId, - collectionName, - server}, this.RemoveSessionHostServerFromCollectionOperationCompleted, userState); + organizationId, + collectionName, + server}, this.RemoveSessionHostServerFromCollectionOperationCompleted, userState); } - - private void OnRemoveSessionHostServerFromCollectionOperationCompleted(object arg) - { - if ((this.RemoveSessionHostServerFromCollectionCompleted != null)) - { + + private void OnRemoveSessionHostServerFromCollectionOperationCompleted(object arg) { + if ((this.RemoveSessionHostServerFromCollectionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.RemoveSessionHostServerFromCollectionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveSessionHostServersFromCollection", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void RemoveSessionHostServersFromCollection(string organizationId, string collectionName, RdsServer[] servers) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveSessionHostServersFromCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void RemoveSessionHostServersFromCollection(string organizationId, string collectionName, RdsServer[] servers) { this.Invoke("RemoveSessionHostServersFromCollection", new object[] { - organizationId, - collectionName, - servers}); + organizationId, + collectionName, + servers}); } - + /// - public System.IAsyncResult BeginRemoveSessionHostServersFromCollection(string organizationId, string collectionName, RdsServer[] servers, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginRemoveSessionHostServersFromCollection(string organizationId, string collectionName, RdsServer[] servers, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("RemoveSessionHostServersFromCollection", new object[] { - organizationId, - collectionName, - servers}, callback, asyncState); + organizationId, + collectionName, + servers}, callback, asyncState); } - + /// - public void EndRemoveSessionHostServersFromCollection(System.IAsyncResult asyncResult) - { + public void EndRemoveSessionHostServersFromCollection(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void RemoveSessionHostServersFromCollectionAsync(string organizationId, string collectionName, RdsServer[] servers) - { + public void RemoveSessionHostServersFromCollectionAsync(string organizationId, string collectionName, RdsServer[] servers) { this.RemoveSessionHostServersFromCollectionAsync(organizationId, collectionName, servers, null); } - + /// - public void RemoveSessionHostServersFromCollectionAsync(string organizationId, string collectionName, RdsServer[] servers, object userState) - { - if ((this.RemoveSessionHostServersFromCollectionOperationCompleted == null)) - { + public void RemoveSessionHostServersFromCollectionAsync(string organizationId, string collectionName, RdsServer[] servers, object userState) { + if ((this.RemoveSessionHostServersFromCollectionOperationCompleted == null)) { this.RemoveSessionHostServersFromCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveSessionHostServersFromCollectionOperationCompleted); } this.InvokeAsync("RemoveSessionHostServersFromCollection", new object[] { - organizationId, - collectionName, - servers}, this.RemoveSessionHostServersFromCollectionOperationCompleted, userState); + organizationId, + collectionName, + servers}, this.RemoveSessionHostServersFromCollectionOperationCompleted, userState); } - - private void OnRemoveSessionHostServersFromCollectionOperationCompleted(object arg) - { - if ((this.RemoveSessionHostServersFromCollectionCompleted != null)) - { + + private void OnRemoveSessionHostServersFromCollectionOperationCompleted(object arg) { + if ((this.RemoveSessionHostServersFromCollectionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.RemoveSessionHostServersFromCollectionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetAvailableRemoteApplications", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public StartMenuApp[] GetAvailableRemoteApplications(string collectionName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetAvailableRemoteApplications", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public StartMenuApp[] GetAvailableRemoteApplications(string collectionName) { object[] results = this.Invoke("GetAvailableRemoteApplications", new object[] { - collectionName}); + collectionName}); return ((StartMenuApp[])(results[0])); } - + /// - public System.IAsyncResult BeginGetAvailableRemoteApplications(string collectionName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetAvailableRemoteApplications(string collectionName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetAvailableRemoteApplications", new object[] { - collectionName}, callback, asyncState); + collectionName}, callback, asyncState); } - + /// - public StartMenuApp[] EndGetAvailableRemoteApplications(System.IAsyncResult asyncResult) - { + public StartMenuApp[] EndGetAvailableRemoteApplications(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((StartMenuApp[])(results[0])); } - + /// - public void GetAvailableRemoteApplicationsAsync(string collectionName) - { + public void GetAvailableRemoteApplicationsAsync(string collectionName) { this.GetAvailableRemoteApplicationsAsync(collectionName, null); } - + /// - public void GetAvailableRemoteApplicationsAsync(string collectionName, object userState) - { - if ((this.GetAvailableRemoteApplicationsOperationCompleted == null)) - { + public void GetAvailableRemoteApplicationsAsync(string collectionName, object userState) { + if ((this.GetAvailableRemoteApplicationsOperationCompleted == null)) { this.GetAvailableRemoteApplicationsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetAvailableRemoteApplicationsOperationCompleted); } this.InvokeAsync("GetAvailableRemoteApplications", new object[] { - collectionName}, this.GetAvailableRemoteApplicationsOperationCompleted, userState); + collectionName}, this.GetAvailableRemoteApplicationsOperationCompleted, userState); } - - private void OnGetAvailableRemoteApplicationsOperationCompleted(object arg) - { - if ((this.GetAvailableRemoteApplicationsCompleted != null)) - { + + private void OnGetAvailableRemoteApplicationsOperationCompleted(object arg) { + if ((this.GetAvailableRemoteApplicationsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetAvailableRemoteApplicationsCompleted(this, new GetAvailableRemoteApplicationsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetCollectionRemoteApplications", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public RemoteApplication[] GetCollectionRemoteApplications(string collectionName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetCollectionRemoteApplications", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public RemoteApplication[] GetCollectionRemoteApplications(string collectionName) { object[] results = this.Invoke("GetCollectionRemoteApplications", new object[] { - collectionName}); + collectionName}); return ((RemoteApplication[])(results[0])); } - + /// - public System.IAsyncResult BeginGetCollectionRemoteApplications(string collectionName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetCollectionRemoteApplications(string collectionName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetCollectionRemoteApplications", new object[] { - collectionName}, callback, asyncState); + collectionName}, callback, asyncState); } - + /// - public RemoteApplication[] EndGetCollectionRemoteApplications(System.IAsyncResult asyncResult) - { + public RemoteApplication[] EndGetCollectionRemoteApplications(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((RemoteApplication[])(results[0])); } - + /// - public void GetCollectionRemoteApplicationsAsync(string collectionName) - { + public void GetCollectionRemoteApplicationsAsync(string collectionName) { this.GetCollectionRemoteApplicationsAsync(collectionName, null); } - + /// - public void GetCollectionRemoteApplicationsAsync(string collectionName, object userState) - { - if ((this.GetCollectionRemoteApplicationsOperationCompleted == null)) - { + public void GetCollectionRemoteApplicationsAsync(string collectionName, object userState) { + if ((this.GetCollectionRemoteApplicationsOperationCompleted == null)) { this.GetCollectionRemoteApplicationsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetCollectionRemoteApplicationsOperationCompleted); } this.InvokeAsync("GetCollectionRemoteApplications", new object[] { - collectionName}, this.GetCollectionRemoteApplicationsOperationCompleted, userState); + collectionName}, this.GetCollectionRemoteApplicationsOperationCompleted, userState); } - - private void OnGetCollectionRemoteApplicationsOperationCompleted(object arg) - { - if ((this.GetCollectionRemoteApplicationsCompleted != null)) - { + + private void OnGetCollectionRemoteApplicationsOperationCompleted(object arg) { + if ((this.GetCollectionRemoteApplicationsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetCollectionRemoteApplicationsCompleted(this, new GetCollectionRemoteApplicationsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddRemoteApplication", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool AddRemoteApplication(string collectionName, RemoteApplication remoteApp) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddRemoteApplication", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool AddRemoteApplication(string collectionName, RemoteApplication remoteApp) { object[] results = this.Invoke("AddRemoteApplication", new object[] { - collectionName, - remoteApp}); + collectionName, + remoteApp}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginAddRemoteApplication(string collectionName, RemoteApplication remoteApp, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginAddRemoteApplication(string collectionName, RemoteApplication remoteApp, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddRemoteApplication", new object[] { - collectionName, - remoteApp}, callback, asyncState); + collectionName, + remoteApp}, callback, asyncState); } - + /// - public bool EndAddRemoteApplication(System.IAsyncResult asyncResult) - { + public bool EndAddRemoteApplication(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void AddRemoteApplicationAsync(string collectionName, RemoteApplication remoteApp) - { + public void AddRemoteApplicationAsync(string collectionName, RemoteApplication remoteApp) { this.AddRemoteApplicationAsync(collectionName, remoteApp, null); } - + /// - public void AddRemoteApplicationAsync(string collectionName, RemoteApplication remoteApp, object userState) - { - if ((this.AddRemoteApplicationOperationCompleted == null)) - { + public void AddRemoteApplicationAsync(string collectionName, RemoteApplication remoteApp, object userState) { + if ((this.AddRemoteApplicationOperationCompleted == null)) { this.AddRemoteApplicationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddRemoteApplicationOperationCompleted); } this.InvokeAsync("AddRemoteApplication", new object[] { - collectionName, - remoteApp}, this.AddRemoteApplicationOperationCompleted, userState); + collectionName, + remoteApp}, this.AddRemoteApplicationOperationCompleted, userState); } - - private void OnAddRemoteApplicationOperationCompleted(object arg) - { - if ((this.AddRemoteApplicationCompleted != null)) - { + + private void OnAddRemoteApplicationOperationCompleted(object arg) { + if ((this.AddRemoteApplicationCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.AddRemoteApplicationCompleted(this, new AddRemoteApplicationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddRemoteApplications", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool AddRemoteApplications(string collectionName, RemoteApplication[] remoteApps) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddRemoteApplications", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool AddRemoteApplications(string collectionName, RemoteApplication[] remoteApps) { object[] results = this.Invoke("AddRemoteApplications", new object[] { - collectionName, - remoteApps}); + collectionName, + remoteApps}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginAddRemoteApplications(string collectionName, RemoteApplication[] remoteApps, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginAddRemoteApplications(string collectionName, RemoteApplication[] remoteApps, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddRemoteApplications", new object[] { - collectionName, - remoteApps}, callback, asyncState); + collectionName, + remoteApps}, callback, asyncState); } - + /// - public bool EndAddRemoteApplications(System.IAsyncResult asyncResult) - { + public bool EndAddRemoteApplications(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void AddRemoteApplicationsAsync(string collectionName, RemoteApplication[] remoteApps) - { + public void AddRemoteApplicationsAsync(string collectionName, RemoteApplication[] remoteApps) { this.AddRemoteApplicationsAsync(collectionName, remoteApps, null); } - + /// - public void AddRemoteApplicationsAsync(string collectionName, RemoteApplication[] remoteApps, object userState) - { - if ((this.AddRemoteApplicationsOperationCompleted == null)) - { + public void AddRemoteApplicationsAsync(string collectionName, RemoteApplication[] remoteApps, object userState) { + if ((this.AddRemoteApplicationsOperationCompleted == null)) { this.AddRemoteApplicationsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddRemoteApplicationsOperationCompleted); } this.InvokeAsync("AddRemoteApplications", new object[] { - collectionName, - remoteApps}, this.AddRemoteApplicationsOperationCompleted, userState); + collectionName, + remoteApps}, this.AddRemoteApplicationsOperationCompleted, userState); } - - private void OnAddRemoteApplicationsOperationCompleted(object arg) - { - if ((this.AddRemoteApplicationsCompleted != null)) - { + + private void OnAddRemoteApplicationsOperationCompleted(object arg) { + if ((this.AddRemoteApplicationsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.AddRemoteApplicationsCompleted(this, new AddRemoteApplicationsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveRemoteApplication", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool RemoveRemoteApplication(string collectionName, RemoteApplication remoteApp) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveRemoteApplication", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool RemoveRemoteApplication(string collectionName, RemoteApplication remoteApp) { object[] results = this.Invoke("RemoveRemoteApplication", new object[] { - collectionName, - remoteApp}); + collectionName, + remoteApp}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginRemoveRemoteApplication(string collectionName, RemoteApplication remoteApp, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginRemoveRemoteApplication(string collectionName, RemoteApplication remoteApp, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("RemoveRemoteApplication", new object[] { - collectionName, - remoteApp}, callback, asyncState); + collectionName, + remoteApp}, callback, asyncState); } - + /// - public bool EndRemoveRemoteApplication(System.IAsyncResult asyncResult) - { + public bool EndRemoveRemoteApplication(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void RemoveRemoteApplicationAsync(string collectionName, RemoteApplication remoteApp) - { + public void RemoveRemoteApplicationAsync(string collectionName, RemoteApplication remoteApp) { this.RemoveRemoteApplicationAsync(collectionName, remoteApp, null); } - + /// - public void RemoveRemoteApplicationAsync(string collectionName, RemoteApplication remoteApp, object userState) - { - if ((this.RemoveRemoteApplicationOperationCompleted == null)) - { + public void RemoveRemoteApplicationAsync(string collectionName, RemoteApplication remoteApp, object userState) { + if ((this.RemoveRemoteApplicationOperationCompleted == null)) { this.RemoveRemoteApplicationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveRemoteApplicationOperationCompleted); } this.InvokeAsync("RemoveRemoteApplication", new object[] { - collectionName, - remoteApp}, this.RemoveRemoteApplicationOperationCompleted, userState); + collectionName, + remoteApp}, this.RemoveRemoteApplicationOperationCompleted, userState); } - - private void OnRemoveRemoteApplicationOperationCompleted(object arg) - { - if ((this.RemoveRemoteApplicationCompleted != null)) - { + + private void OnRemoveRemoteApplicationOperationCompleted(object arg) { + if ((this.RemoveRemoteApplicationCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.RemoveRemoteApplicationCompleted(this, new RemoveRemoteApplicationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddSessionHostFeatureToServer", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool AddSessionHostFeatureToServer(string hostName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddSessionHostFeatureToServer", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool AddSessionHostFeatureToServer(string hostName) { object[] results = this.Invoke("AddSessionHostFeatureToServer", new object[] { - hostName}); + hostName}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginAddSessionHostFeatureToServer(string hostName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginAddSessionHostFeatureToServer(string hostName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddSessionHostFeatureToServer", new object[] { - hostName}, callback, asyncState); + hostName}, callback, asyncState); } - + /// - public bool EndAddSessionHostFeatureToServer(System.IAsyncResult asyncResult) - { + public bool EndAddSessionHostFeatureToServer(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void AddSessionHostFeatureToServerAsync(string hostName) - { + public void AddSessionHostFeatureToServerAsync(string hostName) { this.AddSessionHostFeatureToServerAsync(hostName, null); } - + /// - public void AddSessionHostFeatureToServerAsync(string hostName, object userState) - { - if ((this.AddSessionHostFeatureToServerOperationCompleted == null)) - { + public void AddSessionHostFeatureToServerAsync(string hostName, object userState) { + if ((this.AddSessionHostFeatureToServerOperationCompleted == null)) { this.AddSessionHostFeatureToServerOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddSessionHostFeatureToServerOperationCompleted); } this.InvokeAsync("AddSessionHostFeatureToServer", new object[] { - hostName}, this.AddSessionHostFeatureToServerOperationCompleted, userState); + hostName}, this.AddSessionHostFeatureToServerOperationCompleted, userState); } - - private void OnAddSessionHostFeatureToServerOperationCompleted(object arg) - { - if ((this.AddSessionHostFeatureToServerCompleted != null)) - { + + private void OnAddSessionHostFeatureToServerOperationCompleted(object arg) { + if ((this.AddSessionHostFeatureToServerCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.AddSessionHostFeatureToServerCompleted(this, new AddSessionHostFeatureToServerCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckSessionHostFeatureInstallation", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool CheckSessionHostFeatureInstallation(string hostName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckSessionHostFeatureInstallation", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool CheckSessionHostFeatureInstallation(string hostName) { object[] results = this.Invoke("CheckSessionHostFeatureInstallation", new object[] { - hostName}); + hostName}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginCheckSessionHostFeatureInstallation(string hostName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCheckSessionHostFeatureInstallation(string hostName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CheckSessionHostFeatureInstallation", new object[] { - hostName}, callback, asyncState); + hostName}, callback, asyncState); } - + /// - public bool EndCheckSessionHostFeatureInstallation(System.IAsyncResult asyncResult) - { + public bool EndCheckSessionHostFeatureInstallation(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void CheckSessionHostFeatureInstallationAsync(string hostName) - { + public void CheckSessionHostFeatureInstallationAsync(string hostName) { this.CheckSessionHostFeatureInstallationAsync(hostName, null); } - + /// - public void CheckSessionHostFeatureInstallationAsync(string hostName, object userState) - { - if ((this.CheckSessionHostFeatureInstallationOperationCompleted == null)) - { + public void CheckSessionHostFeatureInstallationAsync(string hostName, object userState) { + if ((this.CheckSessionHostFeatureInstallationOperationCompleted == null)) { this.CheckSessionHostFeatureInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckSessionHostFeatureInstallationOperationCompleted); } this.InvokeAsync("CheckSessionHostFeatureInstallation", new object[] { - hostName}, this.CheckSessionHostFeatureInstallationOperationCompleted, userState); + hostName}, this.CheckSessionHostFeatureInstallationOperationCompleted, userState); } - - private void OnCheckSessionHostFeatureInstallationOperationCompleted(object arg) - { - if ((this.CheckSessionHostFeatureInstallationCompleted != null)) - { + + private void OnCheckSessionHostFeatureInstallationOperationCompleted(object arg) { + if ((this.CheckSessionHostFeatureInstallationCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CheckSessionHostFeatureInstallationCompleted(this, new CheckSessionHostFeatureInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckServerAvailability", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool CheckServerAvailability(string hostName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckServerAvailability", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool CheckServerAvailability(string hostName) { object[] results = this.Invoke("CheckServerAvailability", new object[] { - hostName}); + hostName}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginCheckServerAvailability(string hostName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCheckServerAvailability(string hostName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CheckServerAvailability", new object[] { - hostName}, callback, asyncState); + hostName}, callback, asyncState); } - + /// - public bool EndCheckServerAvailability(System.IAsyncResult asyncResult) - { + public bool EndCheckServerAvailability(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void CheckServerAvailabilityAsync(string hostName) - { + public void CheckServerAvailabilityAsync(string hostName) { this.CheckServerAvailabilityAsync(hostName, null); } - + /// - public void CheckServerAvailabilityAsync(string hostName, object userState) - { - if ((this.CheckServerAvailabilityOperationCompleted == null)) - { + public void CheckServerAvailabilityAsync(string hostName, object userState) { + if ((this.CheckServerAvailabilityOperationCompleted == null)) { this.CheckServerAvailabilityOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckServerAvailabilityOperationCompleted); } this.InvokeAsync("CheckServerAvailability", new object[] { - hostName}, this.CheckServerAvailabilityOperationCompleted, userState); + hostName}, this.CheckServerAvailabilityOperationCompleted, userState); } - - private void OnCheckServerAvailabilityOperationCompleted(object arg) - { - if ((this.CheckServerAvailabilityCompleted != null)) - { + + private void OnCheckServerAvailabilityOperationCompleted(object arg) { + if ((this.CheckServerAvailabilityCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CheckServerAvailabilityCompleted(this, new CheckServerAvailabilityCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - public new void CancelAsync(object userState) - { + public new void CancelAsync(object userState) { base.CancelAsync(userState); } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateCollectionCompletedEventHandler(object sender, CreateCollectionCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class CreateCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class CreateCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal CreateCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal CreateCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetCollectionCompletedEventHandler(object sender, GetCollectionCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public RdsCollection Result - { - get - { + public RdsCollection Result { + get { this.RaiseExceptionIfNecessary(); return ((RdsCollection)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void RemoveCollectionCompletedEventHandler(object sender, RemoveCollectionCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class RemoveCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class RemoveCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal RemoveCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal RemoveCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SetUsersInCollectionCompletedEventHandler(object sender, SetUsersInCollectionCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class SetUsersInCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class SetUsersInCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal SetUsersInCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal SetUsersInCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddSessionHostServerToCollectionCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddSessionHostServersToCollectionCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void RemoveSessionHostServerFromCollectionCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void RemoveSessionHostServersFromCollectionCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetAvailableRemoteApplicationsCompletedEventHandler(object sender, GetAvailableRemoteApplicationsCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetAvailableRemoteApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetAvailableRemoteApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetAvailableRemoteApplicationsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetAvailableRemoteApplicationsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public StartMenuApp[] Result - { - get - { + public StartMenuApp[] Result { + get { this.RaiseExceptionIfNecessary(); return ((StartMenuApp[])(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetCollectionRemoteApplicationsCompletedEventHandler(object sender, GetCollectionRemoteApplicationsCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetCollectionRemoteApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetCollectionRemoteApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetCollectionRemoteApplicationsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetCollectionRemoteApplicationsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public RemoteApplication[] Result - { - get - { + public RemoteApplication[] Result { + get { this.RaiseExceptionIfNecessary(); return ((RemoteApplication[])(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddRemoteApplicationCompletedEventHandler(object sender, AddRemoteApplicationCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class AddRemoteApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class AddRemoteApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal AddRemoteApplicationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal AddRemoteApplicationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddRemoteApplicationsCompletedEventHandler(object sender, AddRemoteApplicationsCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class AddRemoteApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class AddRemoteApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal AddRemoteApplicationsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal AddRemoteApplicationsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void RemoveRemoteApplicationCompletedEventHandler(object sender, RemoveRemoteApplicationCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class RemoveRemoteApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class RemoveRemoteApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal RemoveRemoteApplicationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal RemoveRemoteApplicationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddSessionHostFeatureToServerCompletedEventHandler(object sender, AddSessionHostFeatureToServerCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class AddSessionHostFeatureToServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class AddSessionHostFeatureToServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal AddSessionHostFeatureToServerCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal AddSessionHostFeatureToServerCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckSessionHostFeatureInstallationCompletedEventHandler(object sender, CheckSessionHostFeatureInstallationCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class CheckSessionHostFeatureInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class CheckSessionHostFeatureInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal CheckSessionHostFeatureInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal CheckSessionHostFeatureInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckServerAvailabilityCompletedEventHandler(object sender, CheckServerAvailabilityCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class CheckServerAvailabilityCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class CheckServerAvailabilityCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal CheckServerAvailabilityCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal CheckServerAvailabilityCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - } diff --git a/WebsitePanel/Sources/WebsitePanel.Server/RemoteDesktopServices.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/RemoteDesktopServices.asmx.cs index 96836db9..0bb0fb26 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/RemoteDesktopServices.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/RemoteDesktopServices.asmx.cs @@ -99,7 +99,7 @@ namespace WebsitePanel.Server try { Log.WriteStart("'{0}' RemoveCollection", ProviderSettings.ProviderName); - var result = RDSProvider.RemoveCollection(organizationId,collectionName); + var result = RDSProvider.RemoveCollection(organizationId, collectionName); Log.WriteEnd("'{0}' RemoveCollection", ProviderSettings.ProviderName); return result; } diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Web.config b/WebsitePanel/Sources/WebsitePanel.Server/Web.config index f50b8202..4197b288 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.Server/Web.config @@ -50,7 +50,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index 77a226dd..c8d36c92 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -5593,10 +5593,32 @@ Error creating rds collection. You need to add at least 1 rds server to collection + + Resource Mailboxes per Organization + + + Shared Mailboxes per Organization + + + (room mailbox) + + + (shared mailbox) + + + (equipment mailbox) + + + Domain information has been successfully updated. + + + Web site has been successfully updated. + Check MX and NS on DNS servers Check domain expiration date + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/shared_16.gif b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/shared_16.gif new file mode 100644 index 00000000..17af30c4 Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/shared_16.gif differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css index 68a8e7e1..36f2ac89 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Skin.css @@ -237,6 +237,7 @@ A.Black {color: Black !important; text-decoration: none !important;} .RedStatus {background-image: url(error_bkg.gif); background-repeat: repeat-x;font-size: 8pt; font-weight: bold; color: White; background-color: #ff3300; text-align: center; padding: 6px;} .MessageBox SPAN.description {font-weight: normal !important;} .MessageBox .TechnicalDetails {padding-top: 4px; font-weight: normal !important;} +.TechnicalDetailsTable {background-color: #FFFFFF; color: #222; } .MessageBoxSection {font-size: 8pt; font-weight: bold;} .popupHint {border: 2px solid #C4D6BB;padding: 3px; background-color: #F1F1FF;} .popupComments {border: 2px solid #C4D6BB;font-size: 9px; padding: 3px; background-color: #F1F1FF;} @@ -291,4 +292,5 @@ UL.ActionButtons LI {margin-bottom: 12px;} .enabled {width:20px; height:20px; background: transparent url(../Icons/ok.png) left center no-repeat; border:medium none;} p.warningText {font-size:14px; color:Red; text-align:center;} .Hidden {display: none;} -.LinkText {color:#428bca;} \ No newline at end of file +.LinkText {color:#428bca;} +.WrapText { white-space: normal;} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsEditDomain.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsEditDomain.ascx.resx index f9ef6f4f..72437c36 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsEditDomain.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsEditDomain.ascx.resx @@ -112,24 +112,18 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Save - - - Cancel - Delete if(!confirm('Do you really want to delete this domain?')) return false;ShowProgressDialog('Deleting domain...'); - + ShowProgressDialog('Updating Domain...'); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesEditSite.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesEditSite.ascx.resx index 7ef313a2..21e1cb0e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesEditSite.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesEditSite.ascx.resx @@ -132,9 +132,6 @@ Create Directory - - Cancel - Change Password @@ -150,12 +147,9 @@ Uninstall - + ShowProgressDialog('Updating web site...'); - - Update - Continue Web Site diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx index ab077baa..85fcb516 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx @@ -1,6 +1,7 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainsEditDomain.ascx.cs" Inherits="WebsitePanel.Portal.DomainsEditDomain" %> <%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> <%@ Register Src="UserControls/CollapsiblePanel.ascx" TagPrefix="wsp" TagName="CollapsiblePanel" %> +<%@ Register Src="UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %> @@ -119,9 +120,8 @@
- - +
\ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs index f2249fce..a03b0ac3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs @@ -48,6 +48,9 @@ namespace WebsitePanel.Portal if (!IsPostBack) { BindDomain(); + + if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null) + buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick"); } } @@ -194,15 +197,13 @@ namespace WebsitePanel.Portal ShowResultMessage(result); return; } + ShowSuccessMessage("DOMAIN_UPDATE_DOMAIN"); } catch (Exception ex) { ShowErrorMessage("DOMAIN_UPDATE_DOMAIN", ex); return; } - - // return - RedirectSpaceHomePage(); } private void DeleteDomain() @@ -232,8 +233,10 @@ namespace WebsitePanel.Portal SaveDomain(); } - protected void btnCancel_Click(object sender, EventArgs e) + protected void btnSaveExit_Click(object sender, EventArgs e) { + SaveDomain(); + // return RedirectSpaceHomePage(); } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.designer.cs index 9fc907ea..b80a1857 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.designer.cs @@ -1,10 +1,9 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.3074 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -428,22 +427,13 @@ namespace WebsitePanel.Portal { protected global::System.Web.UI.WebControls.Localize DescribeAllowSubDomains; /// - /// btnSave control. + /// buttonPanel control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Button btnSave; - - /// - /// btnCancel control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnCancel; + protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel; /// /// btnDelete control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx index e37eb045..27d78949 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx @@ -1,4 +1,4 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainsSelectDomainControl.ascx.cs" Inherits="WebsitePanel.Portal.DomainsSelectDomainControl" %> - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.designer.cs index 08309915..40c4eebf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.designer.cs @@ -1,10 +1,9 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.3074 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx index a00e1a83..0d07fca4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx @@ -186,4 +186,7 @@ * + + Shared Mailbox + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx index 9b7b5be3..e3520cf0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx @@ -117,12 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + ShowProgressDialog('Updating mailbox settings...'); - - Save Changes - Disable Mailbox diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx index 9ed871cb..a245ae1d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx @@ -117,12 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + ShowProgressDialog('Updating mailbox settings...'); - - Save Changes - Deliver messages to both forwarding address and mailbox diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMemberOf.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMemberOf.ascx.resx index c243cc33..83035c26 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMemberOf.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMemberOf.ascx.resx @@ -117,12 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ShowProgressDialog('Updating...'); - - - Save Changes - Edit Mailbox diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx index 9c1cac80..109aa29f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx @@ -117,12 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + ShowProgressDialog('Updating mailbox permissions...'); - - Save Changes - diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx index b21e975e..732e6c03 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx @@ -117,12 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + ShowProgressDialog('Updating user settings...'); - - Save Changes - Disable User diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserMemberOf.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserMemberOf.ascx.resx index 81ca9211..5fa94e6c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserMemberOf.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserMemberOf.ascx.resx @@ -117,12 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ShowProgressDialog('Updating...'); - - - Save Changes - Edit User diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.cs index b91a1f73..fb1e73da 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.cs @@ -91,16 +91,37 @@ namespace WebsitePanel.Portal.ExchangeServer if (plans.Length == 0) btnCreate.Enabled = false; + bool allowResourceMailbox = false; + if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER)) { if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1) { locSubscriberNumber.Visible = txtSubscriberNumber.Visible = valRequireSubscriberNumber.Enabled = false; - rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("RoomMailbox.Text"), "5")); - rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("EquipmentMailbox.Text"), "6")); + allowResourceMailbox = true; } } + if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2013_RESOURCEMAILBOXES)) + { + if (cntx.Quotas[Quotas.EXCHANGE2013_RESOURCEMAILBOXES].QuotaAllocatedValue != 0) + allowResourceMailbox = true; + } + + + if (allowResourceMailbox) + { + rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("RoomMailbox.Text"), "5")); + rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("EquipmentMailbox.Text"), "6")); + } + + if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2013_SHAREDMAILBOXES)) + { + if (cntx.Quotas[Quotas.EXCHANGE2013_SHAREDMAILBOXES].QuotaAllocatedValue != 0) + rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("SharedMailbox.Text"), "10")); + } + + rowRetentionPolicy.Visible = Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, cntx); } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx index 77f97218..d323d473 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx @@ -7,8 +7,9 @@ <%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> <%@ Register Src="UserControls/MailboxPlanSelector.ascx" TagName="MailboxPlanSelector" TagPrefix="wsp" %> <%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %> +<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %> -<%-- < wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/> --%> +
@@ -157,10 +158,8 @@
- - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs index d79d614f..ff2dc086 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.cs @@ -81,6 +81,9 @@ namespace WebsitePanel.Portal.ExchangeServer } secRetentionPolicy.Visible = Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, Cntx); + + if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null) + buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick"); } int planId = -1; @@ -183,6 +186,15 @@ namespace WebsitePanel.Portal.ExchangeServer } imgVipUser.Visible = account.IsVIP && Cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels); + if (account.AccountType == ExchangeAccountType.SharedMailbox) + litDisplayName.Text += GetSharedLocalizedString("SharedMailbox.Text"); + + if (account.AccountType == ExchangeAccountType.Room) + litDisplayName.Text += GetSharedLocalizedString("RoomMailbox.Text"); + + if (account.AccountType == ExchangeAccountType.Equipment) + litDisplayName.Text += GetSharedLocalizedString("EquipmentMailbox.Text"); + } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.designer.cs index 9f3029a2..be14fb27 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx.designer.cs @@ -12,6 +12,15 @@ namespace WebsitePanel.Portal.ExchangeServer { public partial class ExchangeMailboxGeneralSettings { + /// + /// asyncTasks control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; + /// /// Image1 control. /// @@ -382,22 +391,13 @@ namespace WebsitePanel.Portal.ExchangeServer { protected global::System.Web.UI.WebControls.Label lblExchangeGuid; /// - /// btnSave control. + /// buttonPanel control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Button btnSave; - - /// - /// btnSaveExit control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnSaveExit; + protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel; /// /// ValidationSummary1 control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx index ed7b7c73..b7d2386b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx @@ -8,6 +8,7 @@ <%@ Register Src="UserControls/AccountsList.ascx" TagName="AccountsList" TagPrefix="wsp" %> <%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %> <%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> +<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %> @@ -110,9 +111,8 @@
- - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx.cs index 51c04f98..73d11805 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx.cs @@ -49,6 +49,9 @@ namespace WebsitePanel.Portal.ExchangeServer if (!IsPostBack) { BindSettings(); + + if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null) + buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick"); } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx.designer.cs index 1ed59e75..f396c6b4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx.designer.cs @@ -247,22 +247,13 @@ namespace WebsitePanel.Portal.ExchangeServer { protected global::System.Web.UI.WebControls.CheckBox chkPmmAllowed; /// - /// btnSave control. + /// buttonPanel control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Button btnSave; - - /// - /// btnSaveExit control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnSaveExit; + protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel; /// /// ValidationSummary1 control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx index 452914dc..0e144703 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx @@ -7,6 +7,7 @@ <%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> <%@ Register Src="UserControls/MailboxPlanSelector.ascx" TagName="MailboxPlanSelector" TagPrefix="wsp" %> <%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %> +<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %> @@ -43,10 +44,8 @@
- - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx.designer.cs index 03c07ca6..91c01a76 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx.designer.cs @@ -103,22 +103,13 @@ namespace WebsitePanel.Portal.ExchangeServer { protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList groups; /// - /// btnSave control. + /// buttonPanel control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Button btnSave; - - /// - /// btnSaveExit control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnSaveExit; + protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel; /// /// ValidationSummary1 control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx index b296eac7..589f69f6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx @@ -6,6 +6,7 @@ <%@ Register Src="UserControls/MailboxTabs.ascx" TagName="MailboxTabs" TagPrefix="wsp" %> <%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %> <%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> +<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %> @@ -44,9 +45,8 @@
- - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx.cs index 171f26cd..6a63fbe4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx.cs @@ -37,8 +37,13 @@ namespace WebsitePanel.Portal.ExchangeServer protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) + { BindPermissions(); + if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null) + buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick"); + } + } @@ -67,6 +72,19 @@ namespace WebsitePanel.Portal.ExchangeServer litDisplayName.Text = mailbox.DisplayName; sendAsPermission.SetAccounts(mailbox.SendAsAccounts); fullAccessPermission.SetAccounts(mailbox.FullAccessAccounts); + + // get account meta + ExchangeAccount account = ES.Services.ExchangeServer.GetAccount(PanelRequest.ItemID, PanelRequest.AccountID); + + if (account.AccountType == ExchangeAccountType.SharedMailbox) + litDisplayName.Text += GetSharedLocalizedString("SharedMailbox.Text"); + + if (account.AccountType == ExchangeAccountType.Room) + litDisplayName.Text += GetSharedLocalizedString("RoomMailbox.Text"); + + if (account.AccountType == ExchangeAccountType.Equipment) + litDisplayName.Text += GetSharedLocalizedString("EquipmentMailbox.Text"); + } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx.designer.cs index 0c1e2494..886b9614 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx.designer.cs @@ -139,21 +139,12 @@ namespace WebsitePanel.Portal.ExchangeServer { protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList fullAccessPermission; /// - /// btnSave control. + /// buttonPanel control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Button btnSave; - - /// - /// btnSaveExit control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnSaveExit; + protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx index 40852b11..aba30904 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx @@ -25,6 +25,9 @@
+ + + 10 @@ -105,7 +108,7 @@ OnSelected="odsAccountsPaged_Selected"> - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.cs index 1874f821..09f60d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.cs @@ -60,6 +60,10 @@ namespace WebsitePanel.Portal.ExchangeServer if (!IsPostBack) { + chkMailboxes.Checked = true; + chkResourceMailboxes.Checked = true; + chkSharedMailboxes.Checked = true; + BindStats(); } @@ -147,6 +151,7 @@ namespace WebsitePanel.Portal.ExchangeServer { ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId; string imgName = "mailbox_16.gif"; + if (accountType == ExchangeAccountType.Contact) imgName = "contact_16.gif"; else if (accountType == ExchangeAccountType.DistributionList) @@ -155,6 +160,8 @@ namespace WebsitePanel.Portal.ExchangeServer imgName = "room_16.gif"; else if (accountType == ExchangeAccountType.Equipment) imgName = "equipment_16.gif"; + else if (accountType == ExchangeAccountType.SharedMailbox) + imgName = "shared_16.gif"; if (vip && cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels)) imgName = "vip_user_16.png"; @@ -246,5 +253,25 @@ namespace WebsitePanel.Portal.ExchangeServer return serviceLevel; } + + protected void chkMailboxes_CheckedChanged(object sender, EventArgs e) + { + List accountTypes = new List(); + + if ((!chkMailboxes.Checked)&&(!chkSharedMailboxes.Checked)&&(!chkResourceMailboxes.Checked)) + chkMailboxes.Checked = true; + + if (chkMailboxes.Checked) + accountTypes.Add("1"); + + if (chkSharedMailboxes.Checked) + accountTypes.Add("10"); + + if (chkResourceMailboxes.Checked) + accountTypes.AddRange(new string[] {"5","6"}); + + odsAccountsPaged.SelectParameters["accountTypes"].DefaultValue = string.Join(",", accountTypes); + } + } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.designer.cs index 6e9b50b4..1bde4051 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.designer.cs @@ -66,6 +66,33 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::System.Web.UI.WebControls.Panel SearchPanel; + /// + /// chkMailboxes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkMailboxes; + + /// + /// chkResourceMailboxes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkResourceMailboxes; + + /// + /// chkSharedMailboxes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkSharedMailboxes; + /// /// ddlPageSize control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx index 9f9e8388..2817164c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx @@ -89,6 +89,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.cs index 1bc84bc7..1de0159c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.cs @@ -54,6 +54,14 @@ namespace WebsitePanel.Portal.ExchangeServer lnkMailboxes.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "mailboxes", "SpaceID=" + PanelSecurity.PackageId.ToString()); + + lnkSharedMailboxes.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "mailboxes", + "SpaceID=" + PanelSecurity.PackageId.ToString()); + + lnkResourceMailboxes.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "mailboxes", + "SpaceID=" + PanelSecurity.PackageId.ToString()); + + lnkContacts.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "contacts", "SpaceID=" + PanelSecurity.PackageId.ToString()); @@ -77,6 +85,13 @@ namespace WebsitePanel.Portal.ExchangeServer mailboxesStats.QuotaValue = exchangeOrgStats.AllocatedMailboxes; if (exchangeOrgStats.AllocatedMailboxes != -1) mailboxesStats.QuotaAvailable = exchangeTenantStats.AllocatedMailboxes - exchangeTenantStats.CreatedMailboxes; + mailboxesSharedStats.QuotaUsedValue = exchangeOrgStats.CreatedSharedMailboxes; + mailboxesSharedStats.QuotaValue = exchangeOrgStats.AllocatedSharedMailboxes; + if (exchangeOrgStats.AllocatedSharedMailboxes != -1) mailboxesSharedStats.QuotaAvailable = exchangeTenantStats.AllocatedSharedMailboxes - exchangeTenantStats.CreatedSharedMailboxes; + + mailboxesResourceStats.QuotaUsedValue = exchangeOrgStats.CreatedResourceMailboxes; + mailboxesResourceStats.QuotaValue = exchangeOrgStats.AllocatedResourceMailboxes; + if (exchangeOrgStats.AllocatedResourceMailboxes != -1) mailboxesResourceStats.QuotaAvailable = exchangeTenantStats.AllocatedResourceMailboxes - exchangeTenantStats.CreatedResourceMailboxes; if (exchangeTenantStats.AllocatedContacts == 0) this.rowContacts.Style.Add("display", "none"); else diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.designer.cs index 062c57df..2a160e51 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.designer.cs @@ -201,6 +201,42 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::WebsitePanel.Portal.QuotaViewer mailboxesStats; + /// + /// lnkSharedMailboxes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink lnkSharedMailboxes; + + /// + /// mailboxesSharedStats control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.QuotaViewer mailboxesSharedStats; + + /// + /// lnkResourceMailboxes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink lnkResourceMailboxes; + + /// + /// mailboxesResourceStats control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.QuotaViewer mailboxesResourceStats; + /// /// rowContacts control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx index cd770aea..a2d2032b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx @@ -13,6 +13,7 @@ <%@ Register src="UserControls/UserTabs.ascx" tagname="UserTabs" tagprefix="uc1" %> <%@ Register src="UserControls/MailboxTabs.ascx" tagname="MailboxTabs" tagprefix="uc1" %> +<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %> @@ -283,10 +284,8 @@
- - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs index 865e8665..028a2e4d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs @@ -49,6 +49,9 @@ namespace WebsitePanel.Portal.HostedSolution MailboxTabsId.Visible = (PanelRequest.Context == "Mailbox"); UserTabsId.Visible = (PanelRequest.Context == "User"); + + if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null) + buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick"); } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs index fef1a739..7c18c1d8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs @@ -769,22 +769,13 @@ namespace WebsitePanel.Portal.HostedSolution { protected global::System.Web.UI.WebControls.Label lblUserDomainName; /// - /// btnSave control. + /// buttonPanel control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Button btnSave; - - /// - /// btnSaveExit control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnSaveExit; + protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel; /// /// ValidationSummary1 control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx index a92bde4a..179955d0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx @@ -15,6 +15,7 @@ <%@ Register src="UserControls/UserTabs.ascx" tagname="UserTabs" tagprefix="uc1" %> <%@ Register src="UserControls/MailboxTabs.ascx" tagname="MailboxTabs" tagprefix="uc1" %> +<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %> @@ -54,10 +55,8 @@
- - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx.designer.cs index 89567bb0..a1f28695 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx.designer.cs @@ -112,22 +112,13 @@ namespace WebsitePanel.Portal.HostedSolution { protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList groups; /// - /// btnSave control. + /// buttonPanel control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Button btnSave; - - /// - /// btnSaveExit control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnSaveExit; + protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel; /// /// ValidationSummary1 control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IceWarp_Settings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IceWarp_Settings.ascx.resx index 9b5d5338..465f32a9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IceWarp_Settings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IceWarp_Settings.ascx.resx @@ -123,16 +123,31 @@ + + Global max message size: + + + Public IP Address: + Public IP Address: + + 0 means unlimited + + + Can be overridden on domain level if you check 'Override global limits' + + + Must be a value between 0 and 99, 0 means disabled + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/RDS_Settings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/RDS_Settings.ascx.resx new file mode 100644 index 00000000..f3221c01 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/RDS_Settings.ascx.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add + + + No gateway serves have been added yet. + + + Server Name + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_EditAccount.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_EditAccount.ascx index aeae00bc..fd2050e6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_EditAccount.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_EditAccount.ascx @@ -76,7 +76,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_EditAccount.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_EditAccount.ascx.cs index f047b103..a7dfa4ab 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_EditAccount.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_EditAccount.ascx.cs @@ -37,8 +37,11 @@ namespace WebsitePanel.Portal.ProviderControls { // Hide some form items when creating a new account passwordRow.Visible = (PanelRequest.ItemID > 0); + AutoresponderPanel.Visible = (PanelRequest.ItemID > 0); secAutoresponder.Visible = (PanelRequest.ItemID > 0); + ForwardingPanel.Visible = (PanelRequest.ItemID > 0); secForwarding.Visible = (PanelRequest.ItemID > 0); + OlderMailsPanel.Visible = (PanelRequest.ItemID > 0); secOlderMails.Visible = (PanelRequest.ItemID > 0); } @@ -109,10 +112,10 @@ namespace WebsitePanel.Portal.ProviderControls item.IsDomainAdmin = cbDomainAdmin.Checked; item.DeleteOlder = cbDeleteOlder.Checked; - item.DeleteOlderDays = Convert.ToInt32(txtDeleteOlderDays.Text); + item.DeleteOlderDays = string.IsNullOrWhiteSpace(txtDeleteOlderDays.Text) ? 0 : Convert.ToInt32(txtDeleteOlderDays.Text); item.ForwardOlder = cbForwardOlder.Checked; - item.ForwardOlderDays = Convert.ToInt32(txtForwardOlderDays.Text); + item.ForwardOlderDays = string.IsNullOrWhiteSpace(txtForwardOlderDays.Text) ? 0 : Convert.ToInt32(txtForwardOlderDays.Text); item.ForwardOlderTo = txtForwardOlderTo.Text; } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_Settings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_Settings.ascx index d603cc96..0645454c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_Settings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_Settings.ascx @@ -1,6 +1,6 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="IceWarp_Settings.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.IceWarp_Settings" %> <%@ Register Src="../UserControls/SelectIPAddress.ascx" TagName="SelectIPAddress" TagPrefix="uc1" %> - +
+ + + + @@ -53,9 +58,9 @@
@@ -14,9 +14,14 @@ - - + + +
@@ -43,9 +48,9 @@ - + - +
- - - + + +
\ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_Settings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_Settings.ascx.designer.cs index 7348a746..04a643f7 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_Settings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IceWarp_Settings.ascx.designer.cs @@ -49,13 +49,22 @@ namespace WebsitePanel.Portal.ProviderControls { protected global::System.Web.UI.WebControls.TextBox txtMaxMessageSizeInMB; /// - /// Label1 control. + /// txtMaxMessageSizeInMBRequired control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Label Label1; + protected global::System.Web.UI.WebControls.RequiredFieldValidator txtMaxMessageSizeInMBRequired; + + /// + /// MaxMessageSizeInMB control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label MaxMessageSizeInMB; /// /// cbUseDomainDiskQuota control. @@ -130,12 +139,12 @@ namespace WebsitePanel.Portal.ProviderControls { protected global::System.Web.UI.WebControls.TextBox txtWarnMailboxUsage; /// - /// RequiredFieldValidator1 control. + /// txtWarnMailboxUsageRequired control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1; + protected global::System.Web.UI.WebControls.RequiredFieldValidator txtWarnMailboxUsageRequired; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/MSFTP70_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/MSFTP70_Settings.ascx.cs index 3c4767a5..94206b77 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/MSFTP70_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/MSFTP70_Settings.ascx.cs @@ -121,7 +121,14 @@ namespace WebsitePanel.Portal.ProviderControls ddlSite.Items.Add(item); } - ddlSite_SelectedIndexChanged(this, null); + if (ddlSite.Items.Count == 0) + { + ddlSite.Items.Add(new ListItem("Default FTP Site (not yet created)", "Default FTP Site")); + } + else + { + ddlSite_SelectedIndexChanged(this, null); + } } protected void ddlSite_SelectedIndexChanged(object sender, EventArgs e) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx index eb1de52b..879afc47 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx @@ -9,15 +9,6 @@ - - - - - - - - - @@ -52,4 +43,33 @@ + + + + + + +
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx.cs index 0eaea7f4..2a5aa27b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx.cs @@ -27,6 +27,8 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; +using System.Collections.Generic; +using System.Web.UI.WebControls; using WebsitePanel.EnterpriseServer; using WebsitePanel.Providers.Common; @@ -39,10 +41,26 @@ namespace WebsitePanel.Portal.ProviderControls } + public string GWServers + { + get + { + return ViewState["GWServers"] != null ? ViewState["GWServers"].ToString() : string.Empty; + } + set + { + ViewState["GWServers"] = value; + } + } + public void BindSettings(System.Collections.Specialized.StringDictionary settings) { txtConnectionBroker.Text = settings["ConnectionBroker"]; - txtGateway.Text = settings["GWServrsList"]; + + GWServers = settings["GWServrsList"]; + + UpdateLyncServersGrid(); + txtRootOU.Text = settings["RootOU"]; txtPrimaryDomainController.Text = settings["PrimaryDomainController"]; @@ -63,11 +81,12 @@ namespace WebsitePanel.Portal.ProviderControls public void SaveSettings(System.Collections.Specialized.StringDictionary settings) { settings["ConnectionBroker"] = txtConnectionBroker.Text; - settings["GWServrsList"] = txtGateway.Text; settings["RootOU"] = txtRootOU.Text; settings["PrimaryDomainController"] = txtPrimaryDomainController.Text; settings["UseCentralNPS"] = chkUseCentralNPS.Checked.ToString(); settings["CentralNPS"] = chkUseCentralNPS.Checked ? txtCentralNPS.Text : string.Empty; + + settings["GWServrsList"] = GWServers; } protected void chkUseCentralNPS_CheckedChanged(object sender, EventArgs e) @@ -75,6 +94,61 @@ namespace WebsitePanel.Portal.ProviderControls txtCentralNPS.Enabled = chkUseCentralNPS.Checked; txtCentralNPS.Text = chkUseCentralNPS.Checked ? txtCentralNPS.Text : string.Empty; } - + + protected void btnAddGWServer_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(GWServers)) + GWServers += ";"; + + GWServers += txtAddGWServer.Text; + + txtAddGWServer.Text = string.Empty; + + UpdateLyncServersGrid(); + } + + public List GetServices(string data) + { + if (string.IsNullOrEmpty(data)) + return null; + List list = new List(); + string[] serversNames = data.Split(';'); + foreach (string current in serversNames) + { + list.Add(new GWServer { ServerName = current }); + } + + return list; + } + + private void UpdateLyncServersGrid() + { + gvGWServers.DataSource = GetServices(GWServers); + gvGWServers.DataBind(); + } + + protected void gvGWServers_RowCommand(object sender, GridViewCommandEventArgs e) + { + if (e.CommandName == "RemoveServer") + { + string str = string.Empty; + List servers = GetServices(GWServers); + foreach (GWServer current in servers) + { + if (current.ServerName == e.CommandArgument.ToString()) + continue; + + str += current.ServerName + ";"; + } + + GWServers = str.TrimEnd(';'); + UpdateLyncServersGrid(); + } + } + } + + public class GWServer + { + public string ServerName { get; set; } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx.designer.cs index e3f1f911..e1c47f7a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/RDS_Settings.ascx.designer.cs @@ -39,33 +39,6 @@ namespace WebsitePanel.Portal.ProviderControls { /// protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2; - /// - /// lblGateway control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblGateway; - - /// - /// txtGateway control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtGateway; - - /// - /// RequiredFieldValidator3 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator3; - /// /// lblRootOU control. /// @@ -155,5 +128,41 @@ namespace WebsitePanel.Portal.ProviderControls { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtCentralNPS; + + /// + /// locGWServers control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locGWServers; + + /// + /// txtAddGWServer control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtAddGWServer; + + /// + /// btnAddGWServer control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnAddGWServer; + + /// + /// gvGWServers control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvGWServers; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/AssignedRDSServers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/AssignedRDSServers.ascx index eab349e5..c1956968 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/AssignedRDSServers.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/AssignedRDSServers.ascx @@ -55,9 +55,10 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/AssignedRDSServers.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/AssignedRDSServers.ascx.cs index af6144d6..906f8182 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/AssignedRDSServers.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/AssignedRDSServers.ascx.cs @@ -32,6 +32,7 @@ using WebsitePanel.EnterpriseServer; using WebsitePanel.Providers.Common; using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.OS; +using WebsitePanel.Providers.RemoteDesktopServices; using WebsitePanel.WebPortal; namespace WebsitePanel.Portal.RDS @@ -67,6 +68,13 @@ namespace WebsitePanel.Portal.RDS try { + RdsServer rdsServer = ES.Services.RDS.GetRdsServer(rdsServerId); + if (rdsServer.RdsCollectionId != null) + { + messageBox.ShowErrorMessage("RDS_UNASSIGN_SERVER_FROM_ORG_SERVER_IS_IN_COLLECTION"); + return; + } + ResultObject result = ES.Services.RDS.RemoveRdsServerFromOrganization(rdsServerId); if (!result.IsSuccess) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSCreateCollection.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSCreateCollection.ascx index 7047502f..a90b852a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSCreateCollection.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSCreateCollection.ascx @@ -24,7 +24,7 @@ - + @@ -37,7 +37,7 @@
- +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/App_LocalResources/RDSCollectionApps.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/App_LocalResources/RDSCollectionApps.ascx.resx index aebc0900..0adb8a73 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/App_LocalResources/RDSCollectionApps.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/App_LocalResources/RDSCollectionApps.ascx.resx @@ -117,12 +117,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ShowProgressDialog('Getting Remote Apps ...'); + Add... + + CloseProgressDialog(); + Add Apps + + CloseProgressDialog(); + Cancel diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/App_LocalResources/RDSCollectionServers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/App_LocalResources/RDSCollectionServers.ascx.resx index 814527a9..58c6ab6f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/App_LocalResources/RDSCollectionServers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/App_LocalResources/RDSCollectionServers.ascx.resx @@ -117,12 +117,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ShowProgressDialog('Getting RDS Servers ...'); + Add... + + CloseProgressDialog(); + Add Servers + + CloseProgressDialog(); + Cancel diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/RDSCollectionServers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/RDSCollectionServers.ascx index 272374a6..84ee87c1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/RDSCollectionServers.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/UserControls/RDSCollectionServers.ascx @@ -94,7 +94,7 @@