Merge
This commit is contained in:
commit
1fbacb828c
101 changed files with 2617 additions and 1781 deletions
|
@ -6074,15 +6074,84 @@ GO
|
||||||
|
|
||||||
-- wsp-10269: Changed php extension path in default properties for IIS70 and IIS80 provider
|
-- wsp-10269: Changed php extension path in default properties for IIS70 and IIS80 provider
|
||||||
update ServiceDefaultProperties
|
update ServiceDefaultProperties
|
||||||
set PhpPath='%PROGRAMFILES(x86)%\PHP\php-cgi.exe'
|
set PropertyValue='%PROGRAMFILES(x86)%\PHP\php-cgi.exe'
|
||||||
where ProviderId in(101, 105)
|
where PropertyName='PhpPath' and ProviderId in(101, 105)
|
||||||
|
|
||||||
update ServiceDefaultProperties
|
update ServiceDefaultProperties
|
||||||
set Php4Path='%PROGRAMFILES(x86)%\PHP\ph.exe'
|
set PropertyValue='%PROGRAMFILES(x86)%\PHP\php.exe'
|
||||||
where ProviderId in(101, 105)
|
where PropertyName='Php4Path' and ProviderId in(101, 105)
|
||||||
|
|
||||||
GO
|
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
|
-- Domain lookup tasks
|
||||||
|
|
||||||
IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP')
|
IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP')
|
||||||
|
|
|
@ -46,7 +46,10 @@ namespace WebsitePanel.Import.CsvBulk
|
||||||
{
|
{
|
||||||
Mailbox,
|
Mailbox,
|
||||||
Contact,
|
Contact,
|
||||||
User
|
User,
|
||||||
|
Room,
|
||||||
|
Equipment,
|
||||||
|
SharedMailbox
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -487,9 +490,12 @@ namespace WebsitePanel.Import.CsvBulk
|
||||||
|
|
||||||
if (!StringEquals(typeName, "Mailbox") &&
|
if (!StringEquals(typeName, "Mailbox") &&
|
||||||
!StringEquals(typeName, "Contact") &&
|
!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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,7 +530,7 @@ namespace WebsitePanel.Import.CsvBulk
|
||||||
if (type == AccountTypes.Mailbox)
|
if (type == AccountTypes.Mailbox)
|
||||||
{
|
{
|
||||||
//create mailbox using web service
|
//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,
|
address, city, state, zip, country, jobTitle, company, department, office,
|
||||||
businessPhone, fax, homePhone, mobilePhone, pager, webPage, notes, planId))
|
businessPhone, fax, homePhone, mobilePhone, pager, webPage, notes, planId))
|
||||||
{
|
{
|
||||||
|
@ -532,6 +538,42 @@ namespace WebsitePanel.Import.CsvBulk
|
||||||
}
|
}
|
||||||
totalMailboxes++;
|
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)
|
else if (type == AccountTypes.Contact)
|
||||||
{
|
{
|
||||||
//create contact using web service
|
//create contact using web service
|
||||||
|
@ -561,7 +603,7 @@ namespace WebsitePanel.Import.CsvBulk
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates mailbox
|
/// Creates mailbox
|
||||||
/// </summary>
|
/// </summary>
|
||||||
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 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)
|
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
|
//create mailbox
|
||||||
//ES.Services.ExchangeServer.
|
//ES.Services.ExchangeServer.
|
||||||
string accountName = string.Empty;
|
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)
|
if (accountId < 0)
|
||||||
{
|
{
|
||||||
string errorMessage = GetErrorMessage(accountId);
|
string errorMessage = GetErrorMessage(accountId);
|
||||||
|
|
|
@ -28,296 +28,319 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
this.components = new System.ComponentModel.Container();
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApplicationForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApplicationForm));
|
||||||
this.lblSpace = new System.Windows.Forms.Label();
|
this.lblSpace = new System.Windows.Forms.Label();
|
||||||
this.txtSpace = new System.Windows.Forms.TextBox();
|
this.txtSpace = new System.Windows.Forms.TextBox();
|
||||||
this.btnBrowseSpace = new System.Windows.Forms.Button();
|
this.btnBrowseSpace = new System.Windows.Forms.Button();
|
||||||
this.btnBrowseOU = new System.Windows.Forms.Button();
|
this.btnBrowseOU = new System.Windows.Forms.Button();
|
||||||
this.txtOU = new System.Windows.Forms.TextBox();
|
this.txtOU = new System.Windows.Forms.TextBox();
|
||||||
this.lblOU = new System.Windows.Forms.Label();
|
this.lblOU = new System.Windows.Forms.Label();
|
||||||
this.grpOrganization = new System.Windows.Forms.GroupBox();
|
this.grpOrganization = new System.Windows.Forms.GroupBox();
|
||||||
this.btnSelectAll = new System.Windows.Forms.Button();
|
this.cbMailboxPlan = new System.Windows.Forms.ComboBox();
|
||||||
this.btnDeselectAll = new System.Windows.Forms.Button();
|
this.lblMailnoxPlan = new System.Windows.Forms.Label();
|
||||||
this.rbCreateAndImport = new System.Windows.Forms.RadioButton();
|
this.btnSelectAll = new System.Windows.Forms.Button();
|
||||||
this.rbImport = new System.Windows.Forms.RadioButton();
|
this.btnDeselectAll = new System.Windows.Forms.Button();
|
||||||
this.lvUsers = new System.Windows.Forms.ListView();
|
this.rbCreateAndImport = new System.Windows.Forms.RadioButton();
|
||||||
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
|
this.rbImport = new System.Windows.Forms.RadioButton();
|
||||||
this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
|
this.lvUsers = new System.Windows.Forms.ListView();
|
||||||
this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
|
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
this.images = new System.Windows.Forms.ImageList(this.components);
|
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
this.txtOrgName = new System.Windows.Forms.TextBox();
|
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
this.lblOrgName = new System.Windows.Forms.Label();
|
this.images = new System.Windows.Forms.ImageList(this.components);
|
||||||
this.txtOrgId = new System.Windows.Forms.TextBox();
|
this.txtOrgName = new System.Windows.Forms.TextBox();
|
||||||
this.lblOrgId = new System.Windows.Forms.Label();
|
this.lblOrgName = new System.Windows.Forms.Label();
|
||||||
this.btnStart = new System.Windows.Forms.Button();
|
this.txtOrgId = new System.Windows.Forms.TextBox();
|
||||||
this.progressBar = new System.Windows.Forms.ProgressBar();
|
this.lblOrgId = new System.Windows.Forms.Label();
|
||||||
this.lblMessage = new System.Windows.Forms.Label();
|
this.btnStart = new System.Windows.Forms.Button();
|
||||||
this.grpOrganization.SuspendLayout();
|
this.progressBar = new System.Windows.Forms.ProgressBar();
|
||||||
this.SuspendLayout();
|
this.lblMessage = new System.Windows.Forms.Label();
|
||||||
//
|
this.grpOrganization.SuspendLayout();
|
||||||
// lblSpace
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
this.lblSpace.Location = new System.Drawing.Point(15, 15);
|
// lblSpace
|
||||||
this.lblSpace.Name = "lblSpace";
|
//
|
||||||
this.lblSpace.Size = new System.Drawing.Size(125, 23);
|
this.lblSpace.Location = new System.Drawing.Point(15, 15);
|
||||||
this.lblSpace.TabIndex = 0;
|
this.lblSpace.Name = "lblSpace";
|
||||||
this.lblSpace.Text = "Target Hosting Space:";
|
this.lblSpace.Size = new System.Drawing.Size(125, 23);
|
||||||
//
|
this.lblSpace.TabIndex = 0;
|
||||||
// txtSpace
|
this.lblSpace.Text = "Target Hosting Space:";
|
||||||
//
|
//
|
||||||
this.txtSpace.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
// txtSpace
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
//
|
||||||
this.txtSpace.Location = new System.Drawing.Point(146, 12);
|
this.txtSpace.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
this.txtSpace.Name = "txtSpace";
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.txtSpace.ReadOnly = true;
|
this.txtSpace.Location = new System.Drawing.Point(146, 12);
|
||||||
this.txtSpace.Size = new System.Drawing.Size(429, 20);
|
this.txtSpace.Name = "txtSpace";
|
||||||
this.txtSpace.TabIndex = 1;
|
this.txtSpace.ReadOnly = true;
|
||||||
this.txtSpace.TextChanged += new System.EventHandler(this.OnDataChanged);
|
this.txtSpace.Size = new System.Drawing.Size(426, 20);
|
||||||
//
|
this.txtSpace.TabIndex = 1;
|
||||||
// btnBrowseSpace
|
this.txtSpace.TextChanged += new System.EventHandler(this.OnDataChanged);
|
||||||
//
|
//
|
||||||
this.btnBrowseSpace.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
// btnBrowseSpace
|
||||||
this.btnBrowseSpace.Location = new System.Drawing.Point(581, 10);
|
//
|
||||||
this.btnBrowseSpace.Name = "btnBrowseSpace";
|
this.btnBrowseSpace.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnBrowseSpace.Size = new System.Drawing.Size(24, 22);
|
this.btnBrowseSpace.Location = new System.Drawing.Point(578, 10);
|
||||||
this.btnBrowseSpace.TabIndex = 2;
|
this.btnBrowseSpace.Name = "btnBrowseSpace";
|
||||||
this.btnBrowseSpace.Text = "...";
|
this.btnBrowseSpace.Size = new System.Drawing.Size(24, 22);
|
||||||
this.btnBrowseSpace.UseVisualStyleBackColor = true;
|
this.btnBrowseSpace.TabIndex = 2;
|
||||||
this.btnBrowseSpace.Click += new System.EventHandler(this.OnBrowseSpace);
|
this.btnBrowseSpace.Text = "...";
|
||||||
//
|
this.btnBrowseSpace.UseVisualStyleBackColor = true;
|
||||||
// btnBrowseOU
|
this.btnBrowseSpace.Click += new System.EventHandler(this.OnBrowseSpace);
|
||||||
//
|
//
|
||||||
this.btnBrowseOU.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
// btnBrowseOU
|
||||||
this.btnBrowseOU.Location = new System.Drawing.Point(581, 36);
|
//
|
||||||
this.btnBrowseOU.Name = "btnBrowseOU";
|
this.btnBrowseOU.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnBrowseOU.Size = new System.Drawing.Size(24, 22);
|
this.btnBrowseOU.Location = new System.Drawing.Point(578, 36);
|
||||||
this.btnBrowseOU.TabIndex = 5;
|
this.btnBrowseOU.Name = "btnBrowseOU";
|
||||||
this.btnBrowseOU.Text = "...";
|
this.btnBrowseOU.Size = new System.Drawing.Size(24, 22);
|
||||||
this.btnBrowseOU.UseVisualStyleBackColor = true;
|
this.btnBrowseOU.TabIndex = 5;
|
||||||
this.btnBrowseOU.Click += new System.EventHandler(this.OnBrowseOU);
|
this.btnBrowseOU.Text = "...";
|
||||||
//
|
this.btnBrowseOU.UseVisualStyleBackColor = true;
|
||||||
// txtOU
|
this.btnBrowseOU.Click += new System.EventHandler(this.OnBrowseOU);
|
||||||
//
|
//
|
||||||
this.txtOU.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
// txtOU
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
//
|
||||||
this.txtOU.Location = new System.Drawing.Point(146, 38);
|
this.txtOU.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
this.txtOU.Name = "txtOU";
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.txtOU.ReadOnly = true;
|
this.txtOU.Location = new System.Drawing.Point(146, 38);
|
||||||
this.txtOU.Size = new System.Drawing.Size(429, 20);
|
this.txtOU.Name = "txtOU";
|
||||||
this.txtOU.TabIndex = 4;
|
this.txtOU.ReadOnly = true;
|
||||||
this.txtOU.TextChanged += new System.EventHandler(this.OnDataChanged);
|
this.txtOU.Size = new System.Drawing.Size(426, 20);
|
||||||
//
|
this.txtOU.TabIndex = 4;
|
||||||
// lblOU
|
this.txtOU.TextChanged += new System.EventHandler(this.OnDataChanged);
|
||||||
//
|
//
|
||||||
this.lblOU.Location = new System.Drawing.Point(15, 41);
|
// lblOU
|
||||||
this.lblOU.Name = "lblOU";
|
//
|
||||||
this.lblOU.Size = new System.Drawing.Size(125, 23);
|
this.lblOU.Location = new System.Drawing.Point(15, 41);
|
||||||
this.lblOU.TabIndex = 3;
|
this.lblOU.Name = "lblOU";
|
||||||
this.lblOU.Text = "Organizational Unit:";
|
this.lblOU.Size = new System.Drawing.Size(125, 23);
|
||||||
//
|
this.lblOU.TabIndex = 3;
|
||||||
// grpOrganization
|
this.lblOU.Text = "Organizational Unit:";
|
||||||
//
|
//
|
||||||
this.grpOrganization.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
// grpOrganization
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
//
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
this.grpOrganization.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
this.grpOrganization.Controls.Add(this.btnSelectAll);
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
this.grpOrganization.Controls.Add(this.btnDeselectAll);
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.grpOrganization.Controls.Add(this.rbCreateAndImport);
|
this.grpOrganization.Controls.Add(this.cbMailboxPlan);
|
||||||
this.grpOrganization.Controls.Add(this.rbImport);
|
this.grpOrganization.Controls.Add(this.lblMailnoxPlan);
|
||||||
this.grpOrganization.Controls.Add(this.lvUsers);
|
this.grpOrganization.Controls.Add(this.btnSelectAll);
|
||||||
this.grpOrganization.Controls.Add(this.txtOrgName);
|
this.grpOrganization.Controls.Add(this.btnDeselectAll);
|
||||||
this.grpOrganization.Controls.Add(this.lblOrgName);
|
this.grpOrganization.Controls.Add(this.rbCreateAndImport);
|
||||||
this.grpOrganization.Controls.Add(this.txtOrgId);
|
this.grpOrganization.Controls.Add(this.rbImport);
|
||||||
this.grpOrganization.Controls.Add(this.lblOrgId);
|
this.grpOrganization.Controls.Add(this.lvUsers);
|
||||||
this.grpOrganization.Location = new System.Drawing.Point(15, 67);
|
this.grpOrganization.Controls.Add(this.txtOrgName);
|
||||||
this.grpOrganization.Name = "grpOrganization";
|
this.grpOrganization.Controls.Add(this.lblOrgName);
|
||||||
this.grpOrganization.Size = new System.Drawing.Size(590, 328);
|
this.grpOrganization.Controls.Add(this.txtOrgId);
|
||||||
this.grpOrganization.TabIndex = 6;
|
this.grpOrganization.Controls.Add(this.lblOrgId);
|
||||||
this.grpOrganization.TabStop = false;
|
this.grpOrganization.Location = new System.Drawing.Point(15, 67);
|
||||||
//
|
this.grpOrganization.Name = "grpOrganization";
|
||||||
// btnSelectAll
|
this.grpOrganization.Size = new System.Drawing.Size(587, 328);
|
||||||
//
|
this.grpOrganization.TabIndex = 6;
|
||||||
this.btnSelectAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.grpOrganization.TabStop = false;
|
||||||
this.btnSelectAll.Location = new System.Drawing.Point(417, 282);
|
//
|
||||||
this.btnSelectAll.Name = "btnSelectAll";
|
// cbMailboxPlan
|
||||||
this.btnSelectAll.Size = new System.Drawing.Size(75, 23);
|
//
|
||||||
this.btnSelectAll.TabIndex = 7;
|
this.cbMailboxPlan.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
this.btnSelectAll.Text = "Select All";
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnSelectAll.UseVisualStyleBackColor = true;
|
this.cbMailboxPlan.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.btnSelectAll.Click += new System.EventHandler(this.OnSelectAllClick);
|
this.cbMailboxPlan.FormattingEnabled = true;
|
||||||
//
|
this.cbMailboxPlan.Location = new System.Drawing.Point(155, 74);
|
||||||
// btnDeselectAll
|
this.cbMailboxPlan.Name = "cbMailboxPlan";
|
||||||
//
|
this.cbMailboxPlan.Size = new System.Drawing.Size(415, 21);
|
||||||
this.btnDeselectAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.cbMailboxPlan.TabIndex = 10;
|
||||||
this.btnDeselectAll.Location = new System.Drawing.Point(498, 282);
|
//
|
||||||
this.btnDeselectAll.Name = "btnDeselectAll";
|
// lblMailnoxPlan
|
||||||
this.btnDeselectAll.Size = new System.Drawing.Size(75, 23);
|
//
|
||||||
this.btnDeselectAll.TabIndex = 8;
|
this.lblMailnoxPlan.Location = new System.Drawing.Point(19, 74);
|
||||||
this.btnDeselectAll.Text = "Unselect All";
|
this.lblMailnoxPlan.Name = "lblMailnoxPlan";
|
||||||
this.btnDeselectAll.UseVisualStyleBackColor = true;
|
this.lblMailnoxPlan.Size = new System.Drawing.Size(130, 23);
|
||||||
this.btnDeselectAll.Click += new System.EventHandler(this.OnDeselectAllClick);
|
this.lblMailnoxPlan.TabIndex = 9;
|
||||||
//
|
this.lblMailnoxPlan.Text = "Default mailbox plan :";
|
||||||
// rbCreateAndImport
|
//
|
||||||
//
|
// btnSelectAll
|
||||||
this.rbCreateAndImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
//
|
||||||
this.rbCreateAndImport.AutoSize = true;
|
this.btnSelectAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.rbCreateAndImport.Checked = true;
|
this.btnSelectAll.Location = new System.Drawing.Point(414, 282);
|
||||||
this.rbCreateAndImport.Enabled = false;
|
this.btnSelectAll.Name = "btnSelectAll";
|
||||||
this.rbCreateAndImport.Location = new System.Drawing.Point(19, 282);
|
this.btnSelectAll.Size = new System.Drawing.Size(75, 23);
|
||||||
this.rbCreateAndImport.Name = "rbCreateAndImport";
|
this.btnSelectAll.TabIndex = 7;
|
||||||
this.rbCreateAndImport.Size = new System.Drawing.Size(261, 17);
|
this.btnSelectAll.Text = "Select All";
|
||||||
this.rbCreateAndImport.TabIndex = 5;
|
this.btnSelectAll.UseVisualStyleBackColor = true;
|
||||||
this.rbCreateAndImport.TabStop = true;
|
this.btnSelectAll.Click += new System.EventHandler(this.OnSelectAllClick);
|
||||||
this.rbCreateAndImport.Text = "Create new organization and import selected items";
|
//
|
||||||
this.rbCreateAndImport.UseVisualStyleBackColor = true;
|
// btnDeselectAll
|
||||||
this.rbCreateAndImport.CheckedChanged += new System.EventHandler(this.OnCheckedChanged);
|
//
|
||||||
//
|
this.btnDeselectAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
// rbImport
|
this.btnDeselectAll.Location = new System.Drawing.Point(495, 282);
|
||||||
//
|
this.btnDeselectAll.Name = "btnDeselectAll";
|
||||||
this.rbImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnDeselectAll.Size = new System.Drawing.Size(75, 23);
|
||||||
this.rbImport.AutoSize = true;
|
this.btnDeselectAll.TabIndex = 8;
|
||||||
this.rbImport.Enabled = false;
|
this.btnDeselectAll.Text = "Unselect All";
|
||||||
this.rbImport.Location = new System.Drawing.Point(19, 305);
|
this.btnDeselectAll.UseVisualStyleBackColor = true;
|
||||||
this.rbImport.Name = "rbImport";
|
this.btnDeselectAll.Click += new System.EventHandler(this.OnDeselectAllClick);
|
||||||
this.rbImport.Size = new System.Drawing.Size(237, 17);
|
//
|
||||||
this.rbImport.TabIndex = 6;
|
// rbCreateAndImport
|
||||||
this.rbImport.Text = "Import selected items for existing organization";
|
//
|
||||||
this.rbImport.UseVisualStyleBackColor = true;
|
this.rbCreateAndImport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
//
|
this.rbCreateAndImport.AutoSize = true;
|
||||||
// lvUsers
|
this.rbCreateAndImport.Checked = true;
|
||||||
//
|
this.rbCreateAndImport.Enabled = false;
|
||||||
this.lvUsers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
this.rbCreateAndImport.Location = new System.Drawing.Point(19, 282);
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
this.rbCreateAndImport.Name = "rbCreateAndImport";
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
this.rbCreateAndImport.Size = new System.Drawing.Size(261, 17);
|
||||||
this.lvUsers.CheckBoxes = true;
|
this.rbCreateAndImport.TabIndex = 5;
|
||||||
this.lvUsers.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
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.columnHeader1,
|
||||||
this.columnHeader2,
|
this.columnHeader2,
|
||||||
this.columnHeader3});
|
this.columnHeader3});
|
||||||
this.lvUsers.FullRowSelect = true;
|
this.lvUsers.FullRowSelect = true;
|
||||||
this.lvUsers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
this.lvUsers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||||
this.lvUsers.Location = new System.Drawing.Point(19, 74);
|
this.lvUsers.Location = new System.Drawing.Point(19, 108);
|
||||||
this.lvUsers.MultiSelect = false;
|
this.lvUsers.MultiSelect = false;
|
||||||
this.lvUsers.Name = "lvUsers";
|
this.lvUsers.Name = "lvUsers";
|
||||||
this.lvUsers.Size = new System.Drawing.Size(554, 202);
|
this.lvUsers.Size = new System.Drawing.Size(551, 167);
|
||||||
this.lvUsers.SmallImageList = this.images;
|
this.lvUsers.SmallImageList = this.images;
|
||||||
this.lvUsers.TabIndex = 4;
|
this.lvUsers.TabIndex = 4;
|
||||||
this.lvUsers.UseCompatibleStateImageBehavior = false;
|
this.lvUsers.UseCompatibleStateImageBehavior = false;
|
||||||
this.lvUsers.View = System.Windows.Forms.View.Details;
|
this.lvUsers.View = System.Windows.Forms.View.Details;
|
||||||
//
|
//
|
||||||
// columnHeader1
|
// columnHeader1
|
||||||
//
|
//
|
||||||
this.columnHeader1.Text = "Name";
|
this.columnHeader1.Text = "Name";
|
||||||
this.columnHeader1.Width = 229;
|
this.columnHeader1.Width = 238;
|
||||||
//
|
//
|
||||||
// columnHeader2
|
// columnHeader2
|
||||||
//
|
//
|
||||||
this.columnHeader2.Text = "Email";
|
this.columnHeader2.Text = "Email";
|
||||||
this.columnHeader2.Width = 163;
|
this.columnHeader2.Width = 166;
|
||||||
//
|
//
|
||||||
// columnHeader3
|
// columnHeader3
|
||||||
//
|
//
|
||||||
this.columnHeader3.Text = "Type";
|
this.columnHeader3.Text = "Type";
|
||||||
this.columnHeader3.Width = 152;
|
this.columnHeader3.Width = 124;
|
||||||
//
|
//
|
||||||
// images
|
// images
|
||||||
//
|
//
|
||||||
this.images.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("images.ImageStream")));
|
this.images.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("images.ImageStream")));
|
||||||
this.images.TransparentColor = System.Drawing.Color.Transparent;
|
this.images.TransparentColor = System.Drawing.Color.Transparent;
|
||||||
this.images.Images.SetKeyName(0, "UserSmallIcon.ico");
|
this.images.Images.SetKeyName(0, "UserSmallIcon.ico");
|
||||||
this.images.Images.SetKeyName(1, "contact.ico");
|
this.images.Images.SetKeyName(1, "contact.ico");
|
||||||
this.images.Images.SetKeyName(2, "DL.ico");
|
this.images.Images.SetKeyName(2, "DL.ico");
|
||||||
//
|
//
|
||||||
// txtOrgName
|
// txtOrgName
|
||||||
//
|
//
|
||||||
this.txtOrgName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.txtOrgName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.txtOrgName.Location = new System.Drawing.Point(155, 45);
|
this.txtOrgName.Location = new System.Drawing.Point(155, 45);
|
||||||
this.txtOrgName.Name = "txtOrgName";
|
this.txtOrgName.Name = "txtOrgName";
|
||||||
this.txtOrgName.Size = new System.Drawing.Size(418, 20);
|
this.txtOrgName.Size = new System.Drawing.Size(415, 20);
|
||||||
this.txtOrgName.TabIndex = 3;
|
this.txtOrgName.TabIndex = 3;
|
||||||
//
|
//
|
||||||
// lblOrgName
|
// lblOrgName
|
||||||
//
|
//
|
||||||
this.lblOrgName.Location = new System.Drawing.Point(19, 48);
|
this.lblOrgName.Location = new System.Drawing.Point(19, 48);
|
||||||
this.lblOrgName.Name = "lblOrgName";
|
this.lblOrgName.Name = "lblOrgName";
|
||||||
this.lblOrgName.Size = new System.Drawing.Size(130, 23);
|
this.lblOrgName.Size = new System.Drawing.Size(130, 23);
|
||||||
this.lblOrgName.TabIndex = 2;
|
this.lblOrgName.TabIndex = 2;
|
||||||
this.lblOrgName.Text = "Organization Name:";
|
this.lblOrgName.Text = "Organization Name:";
|
||||||
//
|
//
|
||||||
// txtOrgId
|
// txtOrgId
|
||||||
//
|
//
|
||||||
this.txtOrgId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.txtOrgId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.txtOrgId.Location = new System.Drawing.Point(155, 19);
|
this.txtOrgId.Location = new System.Drawing.Point(155, 19);
|
||||||
this.txtOrgId.Name = "txtOrgId";
|
this.txtOrgId.Name = "txtOrgId";
|
||||||
this.txtOrgId.ReadOnly = true;
|
this.txtOrgId.ReadOnly = true;
|
||||||
this.txtOrgId.Size = new System.Drawing.Size(418, 20);
|
this.txtOrgId.Size = new System.Drawing.Size(415, 20);
|
||||||
this.txtOrgId.TabIndex = 1;
|
this.txtOrgId.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// lblOrgId
|
// lblOrgId
|
||||||
//
|
//
|
||||||
this.lblOrgId.Location = new System.Drawing.Point(19, 22);
|
this.lblOrgId.Location = new System.Drawing.Point(19, 22);
|
||||||
this.lblOrgId.Name = "lblOrgId";
|
this.lblOrgId.Name = "lblOrgId";
|
||||||
this.lblOrgId.Size = new System.Drawing.Size(130, 23);
|
this.lblOrgId.Size = new System.Drawing.Size(130, 23);
|
||||||
this.lblOrgId.TabIndex = 0;
|
this.lblOrgId.TabIndex = 0;
|
||||||
this.lblOrgId.Text = "Organization Id:";
|
this.lblOrgId.Text = "Organization Id:";
|
||||||
//
|
//
|
||||||
// btnStart
|
// btnStart
|
||||||
//
|
//
|
||||||
this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
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.Location = new System.Drawing.Point(524, 461);
|
||||||
this.btnStart.Name = "btnStart";
|
this.btnStart.Name = "btnStart";
|
||||||
this.btnStart.Size = new System.Drawing.Size(75, 23);
|
this.btnStart.Size = new System.Drawing.Size(75, 23);
|
||||||
this.btnStart.TabIndex = 9;
|
this.btnStart.TabIndex = 9;
|
||||||
this.btnStart.Text = "Start";
|
this.btnStart.Text = "Start";
|
||||||
this.btnStart.UseVisualStyleBackColor = true;
|
this.btnStart.UseVisualStyleBackColor = true;
|
||||||
this.btnStart.Click += new System.EventHandler(this.OnImportClick);
|
this.btnStart.Click += new System.EventHandler(this.OnImportClick);
|
||||||
//
|
//
|
||||||
// progressBar
|
// progressBar
|
||||||
//
|
//
|
||||||
this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.progressBar.Location = new System.Drawing.Point(15, 427);
|
this.progressBar.Location = new System.Drawing.Point(15, 427);
|
||||||
this.progressBar.Name = "progressBar";
|
this.progressBar.Name = "progressBar";
|
||||||
this.progressBar.Size = new System.Drawing.Size(587, 23);
|
this.progressBar.Size = new System.Drawing.Size(584, 23);
|
||||||
this.progressBar.TabIndex = 8;
|
this.progressBar.TabIndex = 8;
|
||||||
//
|
//
|
||||||
// lblMessage
|
// lblMessage
|
||||||
//
|
//
|
||||||
this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
this.lblMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.lblMessage.Location = new System.Drawing.Point(12, 401);
|
this.lblMessage.Location = new System.Drawing.Point(12, 401);
|
||||||
this.lblMessage.Name = "lblMessage";
|
this.lblMessage.Name = "lblMessage";
|
||||||
this.lblMessage.Size = new System.Drawing.Size(593, 23);
|
this.lblMessage.Size = new System.Drawing.Size(590, 23);
|
||||||
this.lblMessage.TabIndex = 7;
|
this.lblMessage.TabIndex = 7;
|
||||||
//
|
//
|
||||||
// ApplicationForm
|
// ApplicationForm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(617, 496);
|
this.ClientSize = new System.Drawing.Size(614, 496);
|
||||||
this.Controls.Add(this.lblMessage);
|
this.Controls.Add(this.lblMessage);
|
||||||
this.Controls.Add(this.progressBar);
|
this.Controls.Add(this.progressBar);
|
||||||
this.Controls.Add(this.btnStart);
|
this.Controls.Add(this.btnStart);
|
||||||
this.Controls.Add(this.grpOrganization);
|
this.Controls.Add(this.grpOrganization);
|
||||||
this.Controls.Add(this.btnBrowseOU);
|
this.Controls.Add(this.btnBrowseOU);
|
||||||
this.Controls.Add(this.txtOU);
|
this.Controls.Add(this.txtOU);
|
||||||
this.Controls.Add(this.lblOU);
|
this.Controls.Add(this.lblOU);
|
||||||
this.Controls.Add(this.btnBrowseSpace);
|
this.Controls.Add(this.btnBrowseSpace);
|
||||||
this.Controls.Add(this.txtSpace);
|
this.Controls.Add(this.txtSpace);
|
||||||
this.Controls.Add(this.lblSpace);
|
this.Controls.Add(this.lblSpace);
|
||||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
this.MinimumSize = new System.Drawing.Size(630, 500);
|
this.MinimumSize = new System.Drawing.Size(630, 500);
|
||||||
this.Name = "ApplicationForm";
|
this.Name = "ApplicationForm";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "WebsitePanel Enterprise Import Tool";
|
this.Text = "WebsitePanel Enterprise Import Tool";
|
||||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnFormClosing);
|
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnFormClosing);
|
||||||
this.grpOrganization.ResumeLayout(false);
|
this.grpOrganization.ResumeLayout(false);
|
||||||
this.grpOrganization.PerformLayout();
|
this.grpOrganization.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,6 +369,8 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
private System.Windows.Forms.RadioButton rbImport;
|
private System.Windows.Forms.RadioButton rbImport;
|
||||||
internal System.Windows.Forms.Button btnSelectAll;
|
internal System.Windows.Forms.Button btnSelectAll;
|
||||||
internal System.Windows.Forms.Button btnDeselectAll;
|
internal System.Windows.Forms.Button btnDeselectAll;
|
||||||
|
private System.Windows.Forms.ComboBox cbMailboxPlan;
|
||||||
|
private System.Windows.Forms.Label lblMailnoxPlan;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2011, Outercurve Foundation.
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without modification,
|
// 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("<not set>");
|
||||||
|
cbMailboxPlan.SelectedIndex = 0;
|
||||||
|
|
||||||
|
Organization org = OrganizationController.GetOrganizationById(orgId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
List<Organization> orgs = ExchangeServerController.GetExchangeOrganizations(1, false);
|
||||||
|
if (orgs.Count > 0)
|
||||||
|
org = orgs[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (org != null)
|
||||||
|
{
|
||||||
|
int itemId = org.Id;
|
||||||
|
List<ExchangeMailboxPlan> plans = ExchangeServerController.GetExchangeMailboxPlans(itemId, false);
|
||||||
|
cbMailboxPlan.Items.AddRange(plans.ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void LoadOrganizationData(DirectoryEntry parent)
|
private void LoadOrganizationData(DirectoryEntry parent)
|
||||||
{
|
{
|
||||||
string orgId = (string)parent.Properties["name"].Value;
|
string orgId = (string)parent.Properties["name"].Value;
|
||||||
|
@ -147,6 +171,9 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
rbImport.Checked = false;
|
rbImport.Checked = false;
|
||||||
txtOrgName.Text = orgId;
|
txtOrgName.Text = orgId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BindMailboxPlans(orgId);
|
||||||
|
|
||||||
LoadOrganizationAccounts(parent);
|
LoadOrganizationAccounts(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,34 +191,60 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
type = null;
|
type = null;
|
||||||
email = null;
|
email = null;
|
||||||
name = (string)child.Properties["name"].Value;
|
name = (string)child.Properties["name"].Value;
|
||||||
|
|
||||||
//account type
|
//account type
|
||||||
typeProp = child.Properties["msExchRecipientDisplayType"];
|
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)
|
switch (child.SchemaClassName)
|
||||||
{
|
{
|
||||||
case "user":
|
case "user":
|
||||||
email = (string)child.Properties["userPrincipalName"].Value;
|
email = (string)child.Properties["userPrincipalName"].Value;
|
||||||
if (typeProp == null || typeProp.Value == null)
|
|
||||||
{
|
|
||||||
type = "User";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int mailboxType = (int)typeProp.Value;
|
|
||||||
|
|
||||||
switch (mailboxType)
|
if (typeDetails == 4)
|
||||||
{
|
{
|
||||||
case 1073741824:
|
type = "Shared Mailbox";
|
||||||
type = "User Mailbox";
|
}
|
||||||
break;
|
else
|
||||||
case 7:
|
{
|
||||||
type = "Room Mailbox";
|
|
||||||
break;
|
if (typeProp == null || typeProp.Value == null)
|
||||||
case 8:
|
{
|
||||||
type = "Equipment Mailbox";
|
type = "User";
|
||||||
break;
|
}
|
||||||
}
|
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))
|
if (!string.IsNullOrEmpty(type))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -300,6 +353,16 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
Global.OrganizationName = txtOrgName.Text;
|
Global.OrganizationName = txtOrgName.Text;
|
||||||
Global.ImportAccountsOnly = rbImport.Checked;
|
Global.ImportAccountsOnly = rbImport.Checked;
|
||||||
Global.HasErrors = false;
|
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.Initialize(this.username, this);
|
||||||
importer.Start();
|
importer.Start();
|
||||||
|
|
||||||
|
|
|
@ -112,79 +112,79 @@
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<metadata name="images.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="images.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="images.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
<data name="images.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>
|
<value>
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABM
|
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABI
|
||||||
DQAAAk1TRnQBSQFMAgEBAwEAAQwBAAEMAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
DQAAAk1TRnQBSQFMAgEBAwEAAVwBAAFcAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||||
AwABEAMAAQEBAAEgBgABEGIAAa0BsgG1Af8BrQGuAa0B/wGtAa4BrQH/AaUBpgGlAf8BnAGeAaUB/wGc
|
AwABEAMAAQEBAAEgBgABEGIAAa0BsgG1Af8BrQGuAa0B/wGtAa4BrQH/AaUBpgGlAf8BnAGeAaUB/wGc
|
||||||
AZoBnAH/AZQBlgGUAf8BjAGOAZQB/wGMAYoBjAH/IAABrQGyAbUB/wGtAa4BrQH/Aa0BrgGtAf8BpQGm
|
AZoBnAH/AZQBlgGUAf8BjAGOAZQB/wGMAYoBjAH/IAABrQGyAbUB/wGtAa4BrQH/Aa0BrgGtAf8BpQGm
|
||||||
AaUB/wGcAZ4BpQH/AZwBmgGcAf8BlAGWAZQB/wGMAY4BlAH/AYwBigGMAf8BjAFtAWcB/1AAAxgBIQNN
|
AaUB/wGcAZ4BpQH/AZwBmgGcAf8BlAGWAZQB/wGMAY4BlAH/AYwBigGMAf8BjAFjAV0B/1AAAxgBIQNN
|
||||||
AZEDWAHBA2EB5gFqAWMBVwH8A2EB5gNYAcEDTAGQAygBPSAAAa0BsgG1Hf8BlAGWAZQB/yAAAa0BsgG1
|
AZEDWAHBA2EB5gFgAVkBRQH8A2EB5gNYAcEDTAGQAygBPSAAAa0BsgG1Hf8BlAGWAZQB/yAAAa0BsgG1
|
||||||
Hf8BlAGWAZQB/wG1AZIBZwH/AYQBaQFfAf9IAAMDAQQDXAHNAagBkwFHAf0B5gHLAbQB/wHeAbcBkAH/
|
Hf8BlAGWAZQB/wG1AZIBXQH/AYQBXwFVAf9IAAMDAQQDXAHNAagBkwFAAf0B5gHLAbQB/wHeAbcBkAH/
|
||||||
AeMBuwGUAf8B4AG6AZQB/wHOAasBiAH/AbgBmQFcAf8DWgHFIAABrQGyAbUF/wHvAesB5wH/Ac4BywHO
|
AeMBuwGUAf8B4AG6AZQB/wHOAasBiAH/AbgBmQFSAf8DWgHFIAABrQGyAbUF/wHvAesB5wH/Ac4BywHO
|
||||||
Af8BvQG6Ab0B/wG1AbIBtQn/AZQBkgGUAf8gAAGtAbIBtQX/Ae8B6wHnAf8BzgHLAc4B/wG9AboBvQH/
|
Af8BvQG6Ab0B/wG1AbIBtQn/AZQBkgGUAf8gAAGtAbIBtQX/Ae8B6wHnAf8BzgHLAc4B/wG9AboBvQH/
|
||||||
AbUBsgG1Cf8BlAGSAZQB/wHGAZ4BbwH/AYwBbQFfAf9IAAMEAQUDWQG+AcYBpQGFAf8B5gHQAb0B/wHi
|
AbUBsgG1Cf8BlAGSAZQB/wHGAZ4BZQH/AYwBYwFVAf9IAAMEAQUDWQG+AcYBpQGFAf8B5gHQAb0B/wHi
|
||||||
Ab0BnAH/AeYBvwGXAf8B6AHDAZ8B/wHbAboBmAH/AcABnwFfAf8DXAHMEAABvQHDAbUB/wE8ATsBPAH/
|
Ab0BnAH/AeYBvwGXAf8B6AHDAZ8B/wHbAboBmAH/AcABnwFVAf8DXAHMEAABvQHDAbUB/wEyATEBMgH/
|
||||||
ATwBOwE8Af8BPAE7ATwB/wGtAbIBtRX/ATwBOwH3Af8BIwEmAdYB/wGUAZIBlAH/ATwBOwE8Af8BPAE7
|
ATIBMQEyAf8BMgExATIB/wGtAbIBtRX/ATIBMQH3Af8BGQEcAdYB/wGUAZIBlAH/ATIBMQEyAf8BMgEx
|
||||||
ATwB/wE8ATsBPAH/CAABVwGOAW8B/wFGAYoBZwH/AU4BigFnAf8BrQGyAbUV/wE+AT0B9wH/ASUBKAHW
|
ATIB/wEyATEBMgH/CAABTQGOAWUB/wE8AYoBXQH/AUQBigFdAf8BrQGyAbUV/wE0ATMB9wH/ARsBHgHW
|
||||||
Af8BlAGSAZQB/wHeAbIBhAH/AZwBkgGEAf9LAAEBA1MBqgHZAbEBkAH/AeYB1AHBAf8B8wHSAbMB/wHq
|
Af8BlAGSAZQB/wHeAbIBhAH/AZwBkgGEAf9LAAEBA1MBqgHZAbEBkAH/AeYB1AHBAf8B8wHSAbMB/wHq
|
||||||
AcEBmAH/Ae0BzAGqAf8B4AHCAaQB/wHDAaMBggH/A14B3RAAAb0BwwG1C/8B9wH/Aa0BugG1Ff8BpQGi
|
AcEBmAH/Ae0BzAGqAf8B4AHCAaQB/wHDAaMBggH/A14B3RAAAb0BwwG1C/8B9wH/Aa0BugG1Ff8BpQGi
|
||||||
AfcB/wGMAY4B3gH/AZQBkgGUAf8B7wHjAdYC/wH3Ae8B/wGcAZ4BlAH/BAABVwG6AYwB/wFfAcsBnAH/
|
AfcB/wGMAY4B3gH/AZQBkgGUAf8B7wHjAdYC/wH3Ae8B/wGcAZ4BlAH/BAABTQG6AYwB/wFVAcsBnAH/
|
||||||
AU4BugGMAf8BhAHHAaUB/wGtAboBtRX/AaUBogH3Af8BjAGOAd4B/wGUAZIBlAH/Ac4BpgFvAf9MAAMB
|
AUQBugGMAf8BhAHHAaUB/wGtAboBtRX/AaUBogH3Af8BjAGOAd4B/wGUAZIBlAH/Ac4BpgFlAf9MAAMB
|
||||||
AQIDAQECA2UB5QHQAcMBsgH/AcgBwwG7Af8B1wG3AZcB/wHrAcQBnQH/AeEBvgGbAf8BzgGmAV8B/wNN
|
AQIDAQECA2UB5QHQAcMBsgH/AcgBwwG7Af8B1wG3AZcB/wHrAcQBnQH/AeEBvgGbAf8BzgGmAVUB/wNN
|
||||||
AZEQAAG9AcMBtQX/AfcB7wHnAf8B9wHvAecB/wGtAboBtQH/Aa0BsgG1Af8BrQGyAa0B/wGlAa4BrQH/
|
AZEQAAG9AcMBtQX/AfcB7wHnAf8B9wHvAecB/wGtAboBtQH/Aa0BsgG1Af8BrQGyAa0B/wGlAa4BrQH/
|
||||||
AaUBpgGlAf8BnAGiAZwB/wGcAZ4BlAH/AZwBlgGUAf8BlAGWAZQB/wH3Ae8B5wH/AfcB7wHnAf8BnAGe
|
AaUBpgGlAf8BnAGiAZwB/wGcAZ4BlAH/AZwBlgGUAf8BlAGWAZQB/wH3Ae8B5wH/AfcB7wHnAf8BnAGe
|
||||||
AZQB/wQAAW8BwwGlAf8BZwG6AZQB/wFGAa4BhAH/AcYB4wHOAf8BrQG6AbUB/wGtAbIBtQH/Aa0BsgGt
|
AZQB/wQAAWUBwwGlAf8BXQG6AZQB/wE8Aa4BhAH/AcYB4wHOAf8BrQG6AbUB/wGtAbIBtQH/Aa0BsgGt
|
||||||
Af8BpQGuAa0B/wGlAaYBpQH/AZwBogGcAf8BnAGeAZwB/wGcAZYBlAH/AZQBkgGUAf9XAAEBAx8BLQNc
|
Af8BpQGuAa0B/wGlAaYBpQH/AZwBogGcAf8BnAGeAZwB/wGcAZYBlAH/AZQBkgGUAf9XAAEBAx8BLQNc
|
||||||
AckBAAErAVwB/wEvAUkBgwH/AcYBpgGHAf8DYQHuA04BmAMHAQoQAAG9AcMBtQX/Ae8B3wHWAf8B1gG+
|
AckBAAEhAVIB/wElAT8BgwH/AcYBpgGHAf8DYQHuA04BmAMHAQoQAAG9AcMBtQX/Ae8B3wHWAf8B1gG+
|
||||||
Aa0B/wHGAbIBpQH/AcYBsgGlAf8BzgG6AaUB/wHnAd8B1gH/AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/
|
Aa0B/wHGAbIBpQH/AcYBsgGlAf8BzgG6AaUB/wHnAd8B1gH/AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/
|
||||||
AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/AfcB7wHnAf8BnAGeAZQB/wQAAYQBwwGlAf8BbwHPAaUB/wFX
|
AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/AfcB7wHnAf8BnAGeAZQB/wQAAYQBwwGlAf8BZQHPAaUB/wFN
|
||||||
AboBjAH/Ab0B1wHOAf8BpQHDAbUB/wFOAaYBbwH/ASUBhgFGAf8BVwGGAYQB/wE2AVEBhAH/AQABMAFn
|
AboBjAH/Ab0B1wHOAf8BpQHDAbUB/wFEAaYBZQH/ARsBhgE8Af8BTQGGAYQB/wEsAUcBhAH/AQABJgFd
|
||||||
Af8BDAE9AW8B/wG9AaoBlAH/VwABAQMAAQEDEAEWA1ABmgEQATUBXAH/AQcBMQFcAf8DVQG1Az8BbAQA
|
Af8BAgEzAWUB/wG9AaoBlAH/VwABAQMAAQEDEAEWA1ABmgEGASsBUgH/AQABJwFSAf8DVQG1Az8BbAQA
|
||||||
AwIBAxAAAb0BwwG1Bf8BxgGuAZwR/wHWAb4BrQH/AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/AfcB7wHn
|
AwIBAxAAAb0BwwG1Bf8BxgGuAZwR/wHWAb4BrQH/AfcB7wHnAf8B9wHvAecB/wH3Ae8B5wH/AfcB7wHn
|
||||||
Af8B9wHvAecB/wH3Ae8B5wH/AfcB7wHnAf8BnAGeAZQB/wgAAYwB2wGlAf8BVwGqAZQB/wFXAYIBvQH/
|
Af8B9wHvAecB/wH3Ae8B5wH/AfcB7wHnAf8BnAGeAZQB/wgAAYwB2wGlAf8BTQGqAZQB/wFNAYIBvQH/
|
||||||
AT4BXQFvAf8BVwGWAV8B/wGMAbYBpQH/ATYBYQGcAf8BLQFZAZQB/wE2AV0BjAH/AR0BRQFvAf9YAAMD
|
ATQBUwFlAf8BTQGWAVUB/wGMAbYBpQH/ASwBVwGcAf8BIwFPAZQB/wEsAVMBjAH/ARMBOwFlAf9YAAMD
|
||||||
AQQDAgEDAyEBMAFYAl8B4wEsAVMBmwH/AScBTAGTAf8BFQE7AYEB/wMkATYYAAG9AcMBtQL/AvcB/wHG
|
AQQDAgEDAyEBMAFYAl8B4wEiAUkBmwH/AR0BQgGTAf8BCwExAYEB/wMkATYYAAG9AcMBtQL/AvcB/wHG
|
||||||
Aa4BnBH/Ad4BwwG9Af8B9wHvAecB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBsgGl
|
Aa4BnBH/Ad4BwwG9Af8B9wHvAecB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBsgGl
|
||||||
Af8B9wHvAecB/wGcAZ4BlAH/DAABNgFpAW8B/wFXAYIBvQH/AT4BXQFvAf8D9wH/A/cB/wFvAZ4BxgH/
|
Af8B9wHvAecB/wGcAZ4BlAH/DAABLAFfAWUB/wFNAYIBvQH/ATQBUwFlAf8D9wH/A/cB/wFlAZ4BxgH/
|
||||||
AVcBigG1Af8BRgFxAaUB/wE2AV0BjAH/WAADBAEGBAADRwGCA2IB9gFKAZABtgH/ATsBgQGnAf8BIQFJ
|
AU0BigG1Af8BPAFnAaUB/wEsAVMBjAH/WAADBAEGBAADRwGCA2IB9gFAAZABtgH/ATEBgQGnAf8BFwE/
|
||||||
AZAB/wNSAaEDBQEHFAABvQHDAbUC/wL3Af8BzgG6AaUR/wHeAcMBvQH/AfcB7wHnAf8B1gHDAbUB/wHW
|
AZAB/wNSAaEDBQEHFAABvQHDAbUC/wL3Af8BzgG6AaUR/wHeAcMBvQH/AfcB7wHnAf8B1gHDAbUB/wHW
|
||||||
AccBvQH/AdYBxwG9Af8B1gHHAb0B/wHWAcMBtQH/AfcB7wHnAf8BnAGeAZQB/wgAAWcBhgGUAf8BPgFt
|
AccBvQH/AdYBxwG9Af8B1gHHAb0B/wHWAcMBtQH/AfcB7wHnAf8BnAGeAZQB/wgAAV0BhgGUAf8BNAFj
|
||||||
AZwB/wGMAbIB3gH/AYQBqgHWAf8BVwFlAYQB/wGMAZYBpQH/AZQBugHeAf8BhAGuAdYB/wFXAZIBvQH/
|
AZwB/wGMAbIB3gH/AYQBqgHWAf8BTQFbAYQB/wGMAZYBpQH/AZQBugHeAf8BhAGuAdYB/wFNAZIBvQH/
|
||||||
AS0BWQGMAf8BXwFlAWcB/1QAAwQBBgMAAQEDPwFsAVwBbwF2AfgBggGoAc4B/wFKAZEBuAH/ASwBTgGS
|
ASMBTwGMAf8BVQFbAV0B/1QAAwQBBgMAAQEDPwFsAVwBXQFrAfgBggGoAc4B/wFAAZEBuAH/ASIBRAGS
|
||||||
Af8BEQEhATEB/wMkATUUAAG9AcMBtQP/AfcB/wHOAcMBtRH/AdYBxwG9Af8B9wHvAecB/wHWAcMBtQH/
|
Af8BBwEXAScB/wMkATUUAAG9AcMBtQP/AfcB/wHOAcMBtRH/AdYBxwG9Af8B9wHvAecB/wHWAcMBtQH/
|
||||||
AdYBwwG1Af8B1gHDAbUB/wHWAccBvQH/AdYBwwG1Av8B9wHvAf8BnAGeAZQB/wgAAU4BjgGlAf8BlAG2
|
AdYBwwG1Af8B1gHDAbUB/wHWAccBvQH/AdYBwwG1Av8B9wHvAf8BnAGeAZQB/wgAAUQBjgGlAf8BlAG2
|
||||||
Ad4B/wG1AdsC/wGlAc8C/wFXAXEBnAH/AaUBtgHGAf8BvQHbAv8BnAHHAe8B/wFfAZ4BzgH/AS0BOQFG
|
Ad4B/wG1AdsC/wGlAc8C/wFNAWcBnAH/AaUBtgHGAf8BvQHbAv8BnAHHAe8B/wFVAZ4BzgH/ASMBLwE8
|
||||||
Af8BLQEsASUB/1QAAwEBAgMAAQEBwwHQAdoB/wFqAXoBhAH5AZsBvwHlAf8BUwGdAccB/wErAT8BVAH/
|
Af8BIwEiARsB/1QAAwEBAgMAAQEBwwHQAdoB/wJqAXEB+QGbAb8B5QH/AUkBnQHHAf8BIQE1AUoB/wEJ
|
||||||
ARMBDwEMAf8DMgFQFAABvQHDAbUF/wHvAd8B1gH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBrgGc
|
AQUBAgH/AzIBUBQAAb0BwwG1Bf8B7wHfAdYB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUB/wHGAa4BnAH/
|
||||||
Af8B7wHfAdYB/wH3Ae8B5wH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUC/wH3
|
Ae8B3wHWAf8B9wHvAecB/wHGAbIBpQH/AcYBsgGlAf8BxgGyAaUB/wHGAbIBpQH/AcYBsgGlAv8B9wHv
|
||||||
Ae8B/wGcAZYBlAH/CAABXwGeAb0B/wGtAc8B5wH/Ad4B+wL/AaUBywH3Af8BXwGeAc4B/wHeAecB7wH/
|
Af8BnAGWAZQB/wgAAVUBngG9Af8BrQHPAecB/wHeAfsC/wGlAcsB9wH/AVUBngHOAf8B3gHnAe8B/wGt
|
||||||
Aa0BvgHWAf8BhAGeAb0B/wFXAYIBnAH/AS0BLAEtAf8BRgFBAT4B/1cAAQEIAAJZAVwB9QFfAZIBpgH/
|
Ab4B1gH/AYQBngG9Af8BTQGCAZwB/wEjASIBIwH/ATwBNwE0Af9XAAEBCAADWQH1AVUBkgGmAf8BPwFS
|
||||||
AUkBXAGOAf8BLwEyATYB/wEZARgBFwH/AyQBNRQAAb0BwwG1Bf8B9wHvAecC/wHvAecB/wH3Ae8B5wL/
|
AY4B/wElASgBLAH/AQ8BDgENAf8DJAE1FAABvQHDAbUF/wH3Ae8B5wL/Ae8B5wH/AfcB7wHnAv8B9wHv
|
||||||
AfcB7wH/AfcB7wHnAf8B9wHvAecH/wH3Av8C9wH/A/cB/wH3AfMB7wH/AfcB7wHnA/8B9wH/AZwBngGU
|
Af8B9wHvAecB/wH3Ae8B5wf/AfcC/wL3Af8D9wH/AfcB8wHvAf8B9wHvAecD/wH3Af8BnAGeAZQB/wgA
|
||||||
Af8IAAFvAaoBvQH/AWcBrgHGAf8BnAHDAc4B/wGUAbYB3gH/AUYBaQGcAf8EAAHGAb4BvQH/AYQBcQFv
|
AWUBqgG9Af8BXQGuAcYB/wGcAcMBzgH/AZQBtgHeAf8BPAFfAZwB/wQAAcYBvgG9Af8BhAFnAWUB/wFN
|
||||||
Af8BVwFVAU4B/wFXAVEBTgH/XwABAQQAA0wBkgNiAekBQwE/ATwB/ANZAfIDUQGcAwQBBRQAAb0BwwG1
|
AUsBRAH/AU0BRwFEAf9fAAEBBAADTAGSA2IB6QE3ATUBMgH8A1kB8gNRAZwDBAEFFAABvQHDAbUd/wGc
|
||||||
Hf8BnAGeAZQB/wG9Ab4BtQH/Ab0BvgG1Af8BvQHDAbUB/wG9Ab4BtQH/Ab0BvgG1Af8BvQG+AbUB/wG9
|
AZ4BlAH/Ab0BvgG1Af8BvQG+AbUB/wG9AcMBtQH/Ab0BvgG1Af8BvQG+AbUB/wG9Ab4BtQH/Ab0BvgG1
|
||||||
Ab4BtQH/CAABrQHDAcYB/wGEAccB1gH/AVcBngG1Af8BTgGWAbUB/wEtAV0BbwH/bAADCgENBAADCgEN
|
Af8IAAGtAcMBxgH/AYQBxwHWAf8BTQGeAbUB/wFEAZYBtQH/ASMBUwFlAf9sAAMKAQ0EAAMKAQ0EAAMV
|
||||||
BAADFQEdAygBPAMeASscAAG9AcMBtQH/Ab0BwwG1Af8BvQHDAbUB/wG9AcMBtQH/Ab0BwwG1Af8BvQHD
|
AR0DKAE8Ax4BKxwAAb0BwwG1Af8BvQHDAbUB/wG9AcMBtQH/Ab0BwwG1Af8BvQHDAbUB/wG9AcMBtQH/
|
||||||
AbUB/wG9AcMBtQH/Ab0BwwG1Af8BvQHDAbUB/ygAAc4C7wH/AaUB4wH3Af8BhAHLAdYB/wFvAbIBvQH/
|
Ab0BwwG1Af8BvQHDAbUB/wG9AcMBtQH/KAABzgLvAf8BpQHjAfcB/wGEAcsB1gH/AWUBsgG9Af//AGUA
|
||||||
/wBlAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAC/wHwAQcB+AEBAgAB4AEP
|
AUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAL/AfABBwH4AQECAAHgAQ8B8AEH
|
||||||
AfABBwH4AwABwAEPAfABBwH4AwABwAEPAgABwAMAAcABDwIAAYABAQIAAcABDwIAAYABAwIAAeABDwIA
|
AfgDAAHAAQ8B8AEHAfgDAAHAAQ8CAAHAAwABwAEPAgABgAEBAgABwAEPAgABgAEDAgAB4AEPAgABgAEH
|
||||||
AYABBwIAAcABLwIAAcABDwIAAcABPwIAAeABDwIAAdABHwIAAcABBwIAAcABHwIAAcABBwIAAcABHwIA
|
AgABwAEvAgABwAEPAgABwAE/AgAB4AEPAgAB0AEfAgABwAEHAgABwAEfAgABwAEHAgABwAEfAgABwAEH
|
||||||
AcABBwIAAdgBHwIAAcEBDwIAAegBHwIAAcEB/wIAAdQBfwEAAX8B4QH/AgAG/wIACw==
|
AgAB2AEfAgABwQEPAgAB6AEfAgABwQH/AgAB1AF/AQABfwHhAf8CAAb/AgAL
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
AAABAAoAAAAAAAEACADKTwAApgAAADAwAAABAAgAqA4AAHBQAAAgIAAAAQAIAKgIAAAYXwAAGBgAAAEA
|
AAABAAoAAAAAAAEACADKTwAApgAAADAwAAABAAgAqA4AAHBQAAAgIAAAAQAIAKgIAAAYXwAAGBgAAAEA
|
||||||
|
|
|
@ -81,6 +81,7 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
public static string ErrorMessage;
|
public static string ErrorMessage;
|
||||||
public static bool ImportAccountsOnly;
|
public static bool ImportAccountsOnly;
|
||||||
public static bool HasErrors;
|
public static bool HasErrors;
|
||||||
|
public static int defaultMailboxPlanId;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,6 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
private ProgressBar progressBar;
|
private ProgressBar progressBar;
|
||||||
private ApplicationForm appForm;
|
private ApplicationForm appForm;
|
||||||
private Button btnImport;
|
private Button btnImport;
|
||||||
|
|
||||||
private Thread thread;
|
private Thread thread;
|
||||||
|
|
||||||
|
|
||||||
|
@ -780,27 +779,53 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
return userId;
|
return userId;
|
||||||
}
|
}
|
||||||
int mailboxType = (int)type.Value;
|
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;
|
string defaultEmail = (string)entry.Properties["extensionAttribute3"].Value;
|
||||||
|
|
||||||
|
@ -813,18 +838,16 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
if (emailAddress.ToLower().StartsWith("smtp:"))
|
if (emailAddress.ToLower().StartsWith("smtp:"))
|
||||||
emailAddress = emailAddress.Substring(5);
|
emailAddress = emailAddress.Substring(5);
|
||||||
|
|
||||||
|
if (EmailAddressExists(emailAddress))
|
||||||
if (!emailAddress.Equals(defaultEmail, StringComparison.InvariantCultureIgnoreCase))
|
|
||||||
{
|
{
|
||||||
if (EmailAddressExists(emailAddress))
|
if ((!emailAddress.Equals(defaultEmail, StringComparison.InvariantCultureIgnoreCase)) && (!emailAddress.Equals(email, StringComparison.InvariantCultureIgnoreCase)))
|
||||||
{
|
Log.WriteInfo(string.Format("Email address {0} already exists. Skipped", emailAddress));
|
||||||
Log.WriteInfo(string.Format("Email address {0} already exists. Skipped", emailAddress));
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
// register email address
|
|
||||||
Log.WriteInfo(string.Format("Importing email {0}", emailAddress));
|
|
||||||
AddAccountEmailAddress(userId, emailAddress);
|
|
||||||
}
|
}
|
||||||
|
// register email address
|
||||||
|
Log.WriteInfo(string.Format("Importing email {0}", emailAddress));
|
||||||
|
AddAccountEmailAddress(userId, emailAddress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Log.WriteEnd("User imported");
|
Log.WriteEnd("User imported");
|
||||||
|
@ -963,7 +986,7 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
|
|
||||||
private static void UpdateExchangeAccount(int accountId, string accountName, ExchangeAccountType accountType,
|
private static void UpdateExchangeAccount(int accountId, string accountName, ExchangeAccountType accountType,
|
||||||
string displayName, string primaryEmailAddress, bool mailEnabledPublicFolder,
|
string displayName, string primaryEmailAddress, bool mailEnabledPublicFolder,
|
||||||
string mailboxManagerActions, string samAccountName, string accountPassword)
|
string mailboxManagerActions, string samAccountName, string accountPassword, int mailboxPlanId)
|
||||||
{
|
{
|
||||||
DataProvider.UpdateExchangeAccount(accountId,
|
DataProvider.UpdateExchangeAccount(accountId,
|
||||||
accountName,
|
accountName,
|
||||||
|
@ -973,7 +996,7 @@ namespace WebsitePanel.Import.Enterprise
|
||||||
mailEnabledPublicFolder,
|
mailEnabledPublicFolder,
|
||||||
mailboxManagerActions,
|
mailboxManagerActions,
|
||||||
samAccountName,
|
samAccountName,
|
||||||
CryptoUtils.Encrypt(accountPassword), 0, -1, string.Empty, false);
|
CryptoUtils.Encrypt(accountPassword), mailboxPlanId , -1, string.Empty, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,6 +123,9 @@ order by rg.groupOrder
|
||||||
public const string EXCHANGE2013_ARCHIVINGSTORAGE = "Exchange2013.ArchivingStorage"; // Archiving
|
public const string EXCHANGE2013_ARCHIVINGSTORAGE = "Exchange2013.ArchivingStorage"; // Archiving
|
||||||
public const string EXCHANGE2013_ARCHIVINGMAILBOXES = "Exchange2013.ArchivingMailboxes";
|
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_DATABASES = "MsSQL2000.Databases"; // Databases
|
||||||
public const string MSSQL2000_USERS = "MsSQL2000.Users"; // Users
|
public const string MSSQL2000_USERS = "MsSQL2000.Users"; // Users
|
||||||
public const string MSSQL2000_MAXDATABASESIZE = "MsSQL2000.MaxDatabaseSize"; // Max Database Size
|
public const string MSSQL2000_MAXDATABASESIZE = "MsSQL2000.MaxDatabaseSize"; // Max Database Size
|
||||||
|
|
|
@ -193,6 +193,9 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
stats.UsedDiskSpace = tempStats.UsedDiskSpace;
|
stats.UsedDiskSpace = tempStats.UsedDiskSpace;
|
||||||
stats.UsedLitigationHoldSpace = tempStats.UsedLitigationHoldSpace;
|
stats.UsedLitigationHoldSpace = tempStats.UsedLitigationHoldSpace;
|
||||||
stats.UsedArchingStorage = tempStats.UsedArchingStorage;
|
stats.UsedArchingStorage = tempStats.UsedArchingStorage;
|
||||||
|
|
||||||
|
stats.CreatedSharedMailboxes = tempStats.CreatedSharedMailboxes;
|
||||||
|
stats.CreatedResourceMailboxes = tempStats.CreatedResourceMailboxes;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -221,6 +224,9 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
stats.UsedDiskSpace += tempStats.UsedDiskSpace;
|
stats.UsedDiskSpace += tempStats.UsedDiskSpace;
|
||||||
stats.UsedLitigationHoldSpace += tempStats.UsedLitigationHoldSpace;
|
stats.UsedLitigationHoldSpace += tempStats.UsedLitigationHoldSpace;
|
||||||
stats.UsedArchingStorage += tempStats.UsedArchingStorage;
|
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.AllocatedLitigationHoldSpace = cntx.Quotas[Quotas.EXCHANGE2007_RECOVERABLEITEMSSPACE].QuotaAllocatedValue;
|
||||||
stats.AllocatedArchingStorage = cntx.Quotas[Quotas.EXCHANGE2013_ARCHIVINGSTORAGE].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;
|
return stats;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -1665,8 +1674,21 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
// check mailbox quota
|
// check mailbox quota
|
||||||
OrganizationStatistics orgStats = GetOrganizationStatistics(itemId);
|
OrganizationStatistics orgStats = GetOrganizationStatistics(itemId);
|
||||||
if ((orgStats.AllocatedMailboxes > -1) && (orgStats.CreatedMailboxes >= orgStats.AllocatedMailboxes))
|
if (accountType == ExchangeAccountType.SharedMailbox)
|
||||||
return BusinessErrorCodes.ERROR_EXCHANGE_MAILBOXES_QUOTA_LIMIT;
|
{
|
||||||
|
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
|
// place log record
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
</configSections>
|
</configSections>
|
||||||
<!-- Connection strings -->
|
<!-- Connection strings -->
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<add name="EnterpriseServer" connectionString="Server=(local)\SQLExpress;Database=WebsitePanel;uid=sa;pwd=Password12" providerName="System.Data.SqlClient"/>
|
<add name="EnterpriseServer" connectionString="server=dev-sql;database=WebsitePanel;uid=WebsitePanel;pwd=sbbk40q85dc7jzj8b5kn;" providerName="System.Data.SqlClient" />
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<appSettings>
|
<appSettings>
|
||||||
<!-- Encryption util settings -->
|
<!-- Encryption util settings -->
|
||||||
<add key="WebsitePanel.CryptoKey" value="1234567890"/>
|
<add key="WebsitePanel.CryptoKey" value="jj2n22t2kje035cg4l77" />
|
||||||
<!-- A1D4KDHUE83NKHddF -->
|
<!-- A1D4KDHUE83NKHddF -->
|
||||||
<add key="WebsitePanel.EncryptionEnabled" value="true"/>
|
<add key="WebsitePanel.EncryptionEnabled" value="true"/>
|
||||||
<!-- Web Applications -->
|
<!-- Web Applications -->
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
Equipment = 6,
|
Equipment = 6,
|
||||||
User = 7,
|
User = 7,
|
||||||
SecurityGroup = 8,
|
SecurityGroup = 8,
|
||||||
DefaultSecurityGroup = 9
|
DefaultSecurityGroup = 9,
|
||||||
|
SharedMailbox = 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,15 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
int itemId;
|
int itemId;
|
||||||
int mailboxPlanId;
|
int mailboxPlanId;
|
||||||
string mailboxPlan;
|
string mailboxPlan;
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
if (mailboxPlan != null)
|
||||||
|
return mailboxPlan;
|
||||||
|
|
||||||
|
return base.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
int mailboxSizeMB;
|
int mailboxSizeMB;
|
||||||
int maxRecipients;
|
int maxRecipients;
|
||||||
int maxSendMessageSizeKB;
|
int maxSendMessageSizeKB;
|
||||||
|
@ -63,7 +72,6 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
string litigationHoldUrl;
|
string litigationHoldUrl;
|
||||||
string litigationHoldMsg;
|
string litigationHoldMsg;
|
||||||
|
|
||||||
|
|
||||||
public int ItemId
|
public int ItemId
|
||||||
{
|
{
|
||||||
get { return this.itemId; }
|
get { return this.itemId; }
|
||||||
|
|
|
@ -341,6 +341,36 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
get { return usedArchingStorage; }
|
get { return usedArchingStorage; }
|
||||||
set { usedArchingStorage = value; }
|
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; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
|
@ -131,6 +131,7 @@
|
||||||
<Compile Include="RemoteDesktopServices\IRemoteDesktopServices.cs" />
|
<Compile Include="RemoteDesktopServices\IRemoteDesktopServices.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RdsCollection.cs" />
|
<Compile Include="RemoteDesktopServices\RdsCollection.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RdsCollectionPaged.cs" />
|
<Compile Include="RemoteDesktopServices\RdsCollectionPaged.cs" />
|
||||||
|
<Compile Include="RemoteDesktopServices\RdsPolicyTypes.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RdsServer.cs" />
|
<Compile Include="RemoteDesktopServices\RdsServer.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RdsServersPaged.cs" />
|
<Compile Include="RemoteDesktopServices\RdsServersPaged.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RemoteApplication.cs" />
|
<Compile Include="RemoteDesktopServices\RemoteApplication.cs" />
|
||||||
|
|
|
@ -1942,6 +1942,9 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
cmd.Parameters.Add("Equipment");
|
cmd.Parameters.Add("Equipment");
|
||||||
else if (accountType == ExchangeAccountType.Room)
|
else if (accountType == ExchangeAccountType.Room)
|
||||||
cmd.Parameters.Add("Room");
|
cmd.Parameters.Add("Room");
|
||||||
|
else if (accountType == ExchangeAccountType.SharedMailbox)
|
||||||
|
cmd.Parameters.Add("Shared");
|
||||||
|
|
||||||
|
|
||||||
result = ExecuteShellCommand(runSpace, cmd);
|
result = ExecuteShellCommand(runSpace, cmd);
|
||||||
|
|
||||||
|
@ -4790,6 +4793,10 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckOrganizationRootPublicFolderPermission(runSpace, organizationId);
|
CheckOrganizationRootPublicFolderPermission(runSpace, organizationId);
|
||||||
|
|
||||||
|
// exchange transport needs access to create new items in order to deliver email
|
||||||
|
AddPublicFolderClientPermission(runSpace, folder, "Anonymous", "CreateItems");
|
||||||
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
|
@ -369,6 +369,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
cmd.Parameters.Add("Equipment");
|
cmd.Parameters.Add("Equipment");
|
||||||
else if (accountType == ExchangeAccountType.Room)
|
else if (accountType == ExchangeAccountType.Room)
|
||||||
cmd.Parameters.Add("Room");
|
cmd.Parameters.Add("Room");
|
||||||
|
else if (accountType == ExchangeAccountType.SharedMailbox)
|
||||||
|
cmd.Parameters.Add("Shared");
|
||||||
|
|
||||||
result = ExecuteShellCommand(runSpace, cmd);
|
result = ExecuteShellCommand(runSpace, cmd);
|
||||||
|
|
||||||
|
|
|
@ -194,19 +194,22 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
ActiveDirectoryUtils.CreateGroup(orgPath, GetUsersGroupName(collection.Name));
|
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)
|
foreach (var gateway in Gateways)
|
||||||
{
|
{
|
||||||
if (!CentralNps)
|
if (!CentralNps)
|
||||||
{
|
{
|
||||||
CreateRdCapForce(runSpace, gateway, collection.Name, new List<string> { GetUsersGroupName(collection.Name) });
|
CreateRdCapForce(runSpace, gateway, capPolicyName, collection.Name, new List<string> { GetUsersGroupName(collection.Name) });
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateRdRapForce(runSpace, gateway, collection.Name, new List<string> { GetUsersGroupName(collection.Name) });
|
CreateRdRapForce(runSpace, gateway, rapPolicyName, collection.Name, new List<string> { GetUsersGroupName(collection.Name) });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CentralNps)
|
if (CentralNps)
|
||||||
{
|
{
|
||||||
CreateCentralNpsPolicy(runSpace, CentralNpsHost, collection.Name, organizationId);
|
CreateCentralNpsPolicy(runSpace, CentralNpsHost, capPolicyName, collection.Name, organizationId);
|
||||||
}
|
}
|
||||||
|
|
||||||
//add user group to collection
|
//add user group to collection
|
||||||
|
@ -278,19 +281,22 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
ExecuteShellCommand(runSpace, cmd, false);
|
ExecuteShellCommand(runSpace, cmd, false);
|
||||||
|
|
||||||
|
var capPolicyName = GetPolicyName(organizationId, collectionName, RdsPolicyTypes.RdCap);
|
||||||
|
var rapPolicyName = GetPolicyName(organizationId, collectionName, RdsPolicyTypes.RdRap);
|
||||||
|
|
||||||
foreach (var gateway in Gateways)
|
foreach (var gateway in Gateways)
|
||||||
{
|
{
|
||||||
if (!CentralNps)
|
if (!CentralNps)
|
||||||
{
|
{
|
||||||
RemoveRdCap(runSpace, gateway, collectionName);
|
RemoveRdCap(runSpace, gateway, capPolicyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveRdRap(runSpace, gateway, collectionName);
|
RemoveRdRap(runSpace, gateway, rapPolicyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CentralNps)
|
if (CentralNps)
|
||||||
{
|
{
|
||||||
RemoveNpsPolicy(runSpace, CentralNpsHost, collectionName);
|
RemoveNpsPolicy(runSpace, CentralNpsHost, capPolicyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Remove security group
|
//Remove security group
|
||||||
|
@ -537,7 +543,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
#region Gateaway (RD CAP | RD RAP)
|
#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");
|
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 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);
|
Command addCmd = new Command(addCmdString);
|
||||||
|
|
||||||
var result = ExecuteRemoteShellCommand(runSpace, centralNpshost, addCmd);
|
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);
|
var removeResult = ExecuteRemoteShellCommand(runSpace, centralNpshost, removeCmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void CreateRdCapForce(Runspace runSpace, string gatewayHost, string name, List<string> groups)
|
internal void CreateRdCapForce(Runspace runSpace, string gatewayHost, string policyName, string collectionName, List<string> groups)
|
||||||
{
|
{
|
||||||
//New-Item -Path "RDS:\GatewayServer\CAP" -Name "Allow Admins" -UserGroups "Administrators@." -AuthMethod 1
|
//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
|
//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()));
|
var userGroupParametr = string.Format("@({0})",string.Join(",", groups.Select(x => string.Format("\"{0}@{1}\"", x, RootDomain)).ToArray()));
|
||||||
|
|
||||||
Command rdCapCommand = new Command("New-Item");
|
Command rdCapCommand = new Command("New-Item");
|
||||||
rdCapCommand.Parameters.Add("Path", string.Format("\"{0}\"", CapPath));
|
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("UserGroups", userGroupParametr);
|
||||||
rdCapCommand.Parameters.Add("AuthMethod", 1);
|
rdCapCommand.Parameters.Add("AuthMethod", 1);
|
||||||
|
|
||||||
|
@ -589,22 +595,22 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
RemoveItemRemote(runSpace, gatewayHost, string.Format(@"{0}\{1}", CapPath, name), RdsModuleName);
|
RemoveItemRemote(runSpace, gatewayHost, string.Format(@"{0}\{1}", CapPath, name), RdsModuleName);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void CreateRdRapForce(Runspace runSpace, string gatewayHost, string name, List<string> groups)
|
internal void CreateRdRapForce(Runspace runSpace, string gatewayHost, string policyName, string collectionName, List<string> groups)
|
||||||
{
|
{
|
||||||
//New-Item -Path "RDS:\GatewayServer\RAP" -Name "Allow Connections To Everywhere" -UserGroups "Administrators@." -ComputerGroupType 1
|
//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
|
//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 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");
|
Command rdRapCommand = new Command("New-Item");
|
||||||
rdRapCommand.Parameters.Add("Path", string.Format("\"{0}\"", RapPath));
|
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("UserGroups", userGroupParametr);
|
||||||
rdRapCommand.Parameters.Add("ComputerGroupType", 1);
|
rdRapCommand.Parameters.Add("ComputerGroupType", 1);
|
||||||
rdRapCommand.Parameters.Add("ComputerGroup", computerGroupParametr);
|
rdRapCommand.Parameters.Add("ComputerGroup", computerGroupParametr);
|
||||||
|
@ -629,6 +635,8 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
ExecuteShellCommand(runSpace, cmd, false);
|
ExecuteShellCommand(runSpace, cmd, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private bool ExistRdsServerInDeployment(Runspace runSpace, RdsServer server)
|
private bool ExistRdsServerInDeployment(Runspace runSpace, RdsServer server)
|
||||||
{
|
{
|
||||||
Command cmd = new Command("Get-RDserver");
|
Command cmd = new Command("Get-RDserver");
|
||||||
|
@ -924,6 +932,27 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
ExecuteRemoteShellCommand(runSpace, hostname, rdRapCommand, imports);
|
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)
|
private string GetComputersGroupName(string collectionName)
|
||||||
{
|
{
|
||||||
return string.Format(RdsGroupFormat, collectionName, Computers.ToLowerInvariant());
|
return string.Format(RdsGroupFormat, collectionName, Computers.ToLowerInvariant());
|
||||||
|
|
|
@ -49,14 +49,6 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
// We need to move it into "WebHosting" store
|
// We need to move it into "WebHosting" store
|
||||||
// Get certificate
|
// Get certificate
|
||||||
var servercert = GetServerCertificates(StoreName.My.ToString()).Single(c => c.FriendlyName == cert.FriendlyName);
|
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
|
// Get certificate data - the one we just added to "Personal" store
|
||||||
var storeMy = new X509Store(StoreName.My, StoreLocation.LocalMachine);
|
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);
|
X509CertificateCollection existCerts2 = storeMy.Certificates.Find(X509FindType.FindBySerialNumber, servercert.SerialNumber, false);
|
||||||
var certData = existCerts2[0].Export(X509ContentType.Pfx);
|
var certData = existCerts2[0].Export(X509ContentType.Pfx);
|
||||||
storeMy.Close();
|
storeMy.Close();
|
||||||
|
var x509Cert = new X509Certificate2(certData);
|
||||||
|
|
||||||
if (UseCCS)
|
if (UseCCS)
|
||||||
{
|
{
|
||||||
|
@ -74,7 +67,6 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
{
|
{
|
||||||
// Add new certificate to "WebHosting" store
|
// Add new certificate to "WebHosting" store
|
||||||
var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine);
|
var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine);
|
||||||
var x509Cert = new X509Certificate2(certData);
|
|
||||||
store.Open(OpenFlags.ReadWrite);
|
store.Open(OpenFlags.ReadWrite);
|
||||||
store.Add(x509Cert);
|
store.Add(x509Cert);
|
||||||
store.Close();
|
store.Close();
|
||||||
|
@ -85,6 +77,7 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
X509CertificateCollection existCerts = storeMy.Certificates.Find(X509FindType.FindBySerialNumber, servercert.SerialNumber, false);
|
X509CertificateCollection existCerts = storeMy.Certificates.Find(X509FindType.FindBySerialNumber, servercert.SerialNumber, false);
|
||||||
storeMy.Remove((X509Certificate2)existCerts[0]);
|
storeMy.Remove((X509Certificate2)existCerts[0]);
|
||||||
storeMy.Close();
|
storeMy.Close();
|
||||||
|
|
||||||
// Fill object with certificate data
|
// Fill object with certificate data
|
||||||
cert.SerialNumber = servercert.SerialNumber;
|
cert.SerialNumber = servercert.SerialNumber;
|
||||||
cert.ValidFrom = servercert.ValidFrom;
|
cert.ValidFrom = servercert.ValidFrom;
|
||||||
|
@ -99,7 +92,7 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
DeleteCertificate(GetCurrentSiteCertificate(website), website);
|
DeleteCertificate(GetCurrentSiteCertificate(website), website);
|
||||||
}
|
}
|
||||||
|
|
||||||
AddBinding(cert, website);
|
AddBinding(x509Cert, website);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -113,8 +106,10 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
|
|
||||||
public new List<SSLCertificate> GetServerCertificates()
|
public new List<SSLCertificate> GetServerCertificates()
|
||||||
{
|
{
|
||||||
// Use Web Hosting store - new for IIS 8.0
|
// Get certificates from both WebHosting and My (Personal) store
|
||||||
return GetServerCertificates(CertificateStoreName);
|
var certificates = GetServerCertificates(CertificateStoreName);
|
||||||
|
certificates.AddRange(GetServerCertificates(StoreName.My.ToString()));
|
||||||
|
return certificates;
|
||||||
}
|
}
|
||||||
|
|
||||||
public new SSLCertificate ImportCertificate(WebSite website)
|
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)
|
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
|
// Ensure we perform operations safely and preserve the original state during all manipulations, save the oldcert if one is used
|
||||||
if (CheckCertificate(website))
|
if (CheckCertificate(website))
|
||||||
|
@ -170,7 +165,7 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
writer.Write(certData);
|
writer.Write(certData);
|
||||||
writer.Flush();
|
writer.Flush();
|
||||||
writer.Close();
|
writer.Close();
|
||||||
// Certificated saved
|
// Certificate saved
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -189,7 +184,6 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
store.Open(OpenFlags.ReadWrite);
|
store.Open(OpenFlags.ReadWrite);
|
||||||
|
|
||||||
store.Add(x509Cert);
|
store.Add(x509Cert);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -205,82 +199,38 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 2: Instantiate a copy of new X.509 certificate
|
// Step 2: Instantiate a copy of new X.509 certificate
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
store.Open(OpenFlags.ReadWrite);
|
newcert = GetSSLCertificateFromX509Certificate2(x509Cert);
|
||||||
newcert = GetSSLCertificateFromX509Certificate2(x509Cert);
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
catch (Exception ex)
|
{
|
||||||
{
|
HandleExceptionAndRollbackCertificate(store, x509Cert, null, website, "SSLModuleService could not instantiate a copy of new X.509 certificate.", 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();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!UseCCS)
|
// Step 3: Remove old certificate from the web site if any
|
||||||
{
|
try
|
||||||
// Step 3: Remove old certificate from the web site if any
|
{
|
||||||
try
|
// Check if certificate already exists, remove it.
|
||||||
{
|
if (oldcert != null)
|
||||||
store.Open(OpenFlags.ReadWrite);
|
{
|
||||||
// Check if certificate already exists, remove it.
|
DeleteCertificate(oldcert, website);
|
||||||
if (oldcert != null)
|
}
|
||||||
DeleteCertificate(oldcert, website);
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
catch (Exception ex)
|
{
|
||||||
{
|
HandleExceptionAndRollbackCertificate(store, x509Cert, null, website, string.Format("SSLModuleService could not remove existing certificate from '{0}' web site.", website.Name), 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 4: Register new certificate with HTTPS binding on the web site
|
// Step 4: Register new certificate with HTTPS binding on the web site
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//if (!UseCCS)
|
AddBinding(x509Cert, website);
|
||||||
//{
|
}
|
||||||
// store.Open(OpenFlags.ReadWrite);
|
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);
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
return newcert;
|
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())
|
using (var srvman = GetServerManager())
|
||||||
{
|
{
|
||||||
var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine);
|
|
||||||
store.Open(OpenFlags.ReadOnly);
|
|
||||||
|
|
||||||
// Look for dedicated ip
|
// Look for dedicated ip
|
||||||
var dedicatedIp = SiteHasBindingWithDedicatedIp(srvman, website);
|
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<string>();
|
||||||
|
|
||||||
Binding siteBinding = UseCCS ?
|
if (!dedicatedIp)
|
||||||
srvman.Sites[website.SiteId].Bindings.Add(bindingInformation, "https") :
|
{
|
||||||
srvman.Sites[website.SiteId].Bindings.Add(bindingInformation, certificate.Hash, store.Name);
|
hostNames.AddRange(certificate.Extensions.Cast<X509Extension>()
|
||||||
|
.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)
|
if (UseSNI && !dedicatedIp)
|
||||||
{
|
{
|
||||||
siteBinding.SslFlags |= SslFlags.Sni;
|
siteBinding.SslFlags |= SslFlags.Sni;
|
||||||
|
}
|
||||||
|
if (UseCCS)
|
||||||
|
{
|
||||||
|
siteBinding.SslFlags |= SslFlags.CentralCertStore;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (UseCCS)
|
|
||||||
{
|
|
||||||
siteBinding.SslFlags |= SslFlags.CentralCertStore;
|
|
||||||
}
|
|
||||||
|
|
||||||
store.Close();
|
|
||||||
|
|
||||||
srvman.CommitChanges();
|
srvman.CommitChanges();
|
||||||
}
|
}
|
||||||
|
@ -352,7 +317,9 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
|
|
||||||
public new ResultObject DeleteCertificate(SSLCertificate certificate, WebSite website)
|
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)
|
if (certificate == null)
|
||||||
{
|
{
|
||||||
|
@ -361,35 +328,70 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Regardless of the CCS setting on the server, we try to find and remove the certificate from both CCS and WebHosting Store.
|
var certificatesAndStoreNames = new List<Tuple<string, byte[]>>();
|
||||||
// This is because we don't know how this was set when the certificate was added
|
|
||||||
|
|
||||||
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);
|
var site = srvman.Sites[website.Name];
|
||||||
if (File.Exists(path))
|
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<string, byte[]>(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
|
srvman.CommitChanges();
|
||||||
var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine);
|
|
||||||
store.Open(OpenFlags.MaxAllowed);
|
|
||||||
|
|
||||||
var certs = store.Certificates.Find(X509FindType.FindBySerialNumber, certificate.SerialNumber, false);
|
foreach (var certificateAndStoreName in certificatesAndStoreNames)
|
||||||
foreach (var cert in certs)
|
{
|
||||||
{
|
// Delete all certs with the same serialnumber in Store
|
||||||
store.Remove(cert);
|
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
|
store.Close();
|
||||||
if (CheckCertificate(website))
|
}
|
||||||
{
|
|
||||||
RemoveBinding(certificate, website);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -409,9 +411,7 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
var site = srvman.Sites[website.SiteId];
|
var site = srvman.Sites[website.SiteId];
|
||||||
var sslBinding = site.Bindings.First(b => b.Protocol == "https");
|
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))
|
if (((SslFlags)Enum.Parse(typeof(SslFlags), sslBinding["sslFlags"].ToString())).HasFlag(SslFlags.CentralCertStore))
|
||||||
{
|
{
|
||||||
// Let's try to match binding host and certificate filename
|
// Let's try to match binding host and certificate filename
|
||||||
|
@ -423,23 +423,19 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
// Read certificate data from file
|
// Read certificate data from file
|
||||||
var certData = new byte[fileStream.Length];
|
var certData = new byte[fileStream.Length];
|
||||||
fileStream.Read(certData, 0, (int) fileStream.Length);
|
fileStream.Read(certData, 0, (int) fileStream.Length);
|
||||||
cert = new X509Certificate2(certData, CCSCommonPassword);
|
var cert = new X509Certificate2(certData, CCSCommonPassword);
|
||||||
fileStream.Close();
|
fileStream.Close();
|
||||||
|
return GetSSLCertificateFromX509Certificate2(cert);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var currentHash = sslBinding.CertificateHash;
|
var currentHash = Convert.ToBase64String(sslBinding.CertificateHash);
|
||||||
var store = new X509Store(CertificateStoreName, StoreLocation.LocalMachine);
|
return GetServerCertificates().FirstOrDefault(c => Convert.ToBase64String(c.Hash) == currentHash);
|
||||||
store.Open(OpenFlags.ReadOnly);
|
|
||||||
|
|
||||||
cert = store.Certificates.Cast<X509Certificate2>().Single(c => Convert.ToBase64String(c.GetCertHash()) == Convert.ToBase64String(currentHash));
|
|
||||||
|
|
||||||
store.Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return GetSSLCertificateFromX509Certificate2(cert);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<SSLCertificate> GetServerCertificates(string certificateStoreName)
|
private static List<SSLCertificate> GetServerCertificates(string certificateStoreName)
|
||||||
|
@ -504,5 +500,33 @@ namespace WebsitePanel.Providers.Web.Iis
|
||||||
return false;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<add name="EnterpriseServer" connectionString="Server=VITALIK-VAIO\SQL2008R2;Database=WebsitePanel;Trusted_Connection=Yes;" providerName="System.Data.SqlClient"/>
|
<add name="EnterpriseServer" connectionString="server=dev-sql;database=WebsitePanel;uid=WebsitePanel;pwd=sbbk40q85dc7jzj8b5kn;" providerName="System.Data.SqlClient"/>
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
|
||||||
</startup>
|
</startup>
|
||||||
<appSettings>
|
<appSettings>
|
||||||
<!-- Encryption util settings -->
|
<!-- Encryption util settings -->
|
||||||
<add key="WebsitePanel.CryptoKey" value="0123456789"/>
|
<add key="WebsitePanel.CryptoKey" value="jj2n22t2kje035cg4l77"/>
|
||||||
<!-- A1D4KDHUE83NKHddF -->
|
<!-- A1D4KDHUE83NKHddF -->
|
||||||
<add key="WebsitePanel.EncryptionEnabled" value="true" />
|
<add key="WebsitePanel.EncryptionEnabled" value="true" />
|
||||||
</appSettings>
|
</appSettings>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -99,7 +99,7 @@ namespace WebsitePanel.Server
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Log.WriteStart("'{0}' RemoveCollection", ProviderSettings.ProviderName);
|
Log.WriteStart("'{0}' RemoveCollection", ProviderSettings.ProviderName);
|
||||||
var result = RDSProvider.RemoveCollection(organizationId,collectionName);
|
var result = RDSProvider.RemoveCollection(organizationId, collectionName);
|
||||||
Log.WriteEnd("'{0}' RemoveCollection", ProviderSettings.ProviderName);
|
Log.WriteEnd("'{0}' RemoveCollection", ProviderSettings.ProviderName);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
<!-- Perform security check -->
|
<!-- Perform security check -->
|
||||||
<enabled value="true" />
|
<enabled value="true" />
|
||||||
<!-- Server password -->
|
<!-- Server password -->
|
||||||
<password value="+uxnDOdf55yuH6iZYXgYAxsfIBw=" />
|
<password value="TaIF+82DBVpZ/Ix216bG/o02fUE=" />
|
||||||
</security>
|
</security>
|
||||||
</websitepanel.server>
|
</websitepanel.server>
|
||||||
<system.web>
|
<system.web>
|
||||||
|
|
|
@ -5593,10 +5593,32 @@
|
||||||
<data name="Error.RDS_CREATE_COLLECTION_RDSSERVER_REQUAIRED" xml:space="preserve">
|
<data name="Error.RDS_CREATE_COLLECTION_RDSSERVER_REQUAIRED" xml:space="preserve">
|
||||||
<value>Error creating rds collection. You need to add at least 1 rds server to collection</value>
|
<value>Error creating rds collection. You need to add at least 1 rds server to collection</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Quota.Exchange2013.ResourceMailboxes" xml:space="preserve">
|
||||||
|
<value>Resource Mailboxes per Organization</value>
|
||||||
|
</data>
|
||||||
|
<data name="Quota.Exchange2013.SharedMailboxes" xml:space="preserve">
|
||||||
|
<value>Shared Mailboxes per Organization</value>
|
||||||
|
</data>
|
||||||
|
<data name="RoomMailbox.Text" xml:space="preserve">
|
||||||
|
<value> (room mailbox)</value>
|
||||||
|
</data>
|
||||||
|
<data name="SharedMailbox.Text" xml:space="preserve">
|
||||||
|
<value> (shared mailbox)</value>
|
||||||
|
</data>
|
||||||
|
<data name="EquipmentMailbox.Text" xml:space="preserve">
|
||||||
|
<value> (equipment mailbox)</value>
|
||||||
|
</data>
|
||||||
|
<data name="Success.DOMAIN_UPDATE_DOMAIN" xml:space="preserve">
|
||||||
|
<value>Domain information has been successfully updated.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Success.WEB_UPDATE_SITE" xml:space="preserve">
|
||||||
|
<value>Web site has been successfully updated.</value>
|
||||||
|
</data>
|
||||||
<data name="SchedulerTask.SCHEDULE_TASK_DOMAIN_LOOKUP" xml:space="preserve">
|
<data name="SchedulerTask.SCHEDULE_TASK_DOMAIN_LOOKUP" xml:space="preserve">
|
||||||
<value>Check MX and NS on DNS servers</value>
|
<value>Check MX and NS on DNS servers</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SchedulerTask.SCHEDULE_TASK_DOMAIN_EXPIRATION" xml:space="preserve">
|
<data name="SchedulerTask.SCHEDULE_TASK_DOMAIN_EXPIRATION" xml:space="preserve">
|
||||||
<value>Check domain expiration date</value>
|
<value>Check domain expiration date</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
</root>
|
</root>
|
Binary file not shown.
After Width: | Height: | Size: 226 B |
|
@ -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;}
|
.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 SPAN.description {font-weight: normal !important;}
|
||||||
.MessageBox .TechnicalDetails {padding-top: 4px; 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;}
|
.MessageBoxSection {font-size: 8pt; font-weight: bold;}
|
||||||
.popupHint {border: 2px solid #C4D6BB;padding: 3px; background-color: #F1F1FF;}
|
.popupHint {border: 2px solid #C4D6BB;padding: 3px; background-color: #F1F1FF;}
|
||||||
.popupComments {border: 2px solid #C4D6BB;font-size: 9px; 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;}
|
.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;}
|
p.warningText {font-size:14px; color:Red; text-align:center;}
|
||||||
.Hidden {display: none;}
|
.Hidden {display: none;}
|
||||||
.LinkText {color:#428bca;}
|
.LinkText {color:#428bca;}
|
||||||
|
.WrapText { white-space: normal;}
|
|
@ -112,24 +112,18 @@
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnSave.Text" xml:space="preserve">
|
|
||||||
<value>Save</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnCancel.Text" xml:space="preserve">
|
|
||||||
<value>Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnDelete.Text" xml:space="preserve">
|
<data name="btnDelete.Text" xml:space="preserve">
|
||||||
<value>Delete</value>
|
<value>Delete</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnDelete.OnClientClick" xml:space="preserve">
|
<data name="btnDelete.OnClientClick" xml:space="preserve">
|
||||||
<value>if(!confirm('Do you really want to delete this domain?')) return false;ShowProgressDialog('Deleting domain...');</value>
|
<value>if(!confirm('Do you really want to delete this domain?')) return false;ShowProgressDialog('Deleting domain...');</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSave.OnClientClick" xml:space="preserve">
|
<data name="buttonPanel.OnSaveClientClick" xml:space="preserve">
|
||||||
<value>ShowProgressDialog('Updating Domain...');</value>
|
<value>ShowProgressDialog('Updating Domain...');</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllowSubDomains.Text" xml:space="preserve">
|
<data name="AllowSubDomains.Text" xml:space="preserve">
|
||||||
|
|
|
@ -132,9 +132,6 @@
|
||||||
<data name="btnAddVirtualDirectory.Text" xml:space="preserve">
|
<data name="btnAddVirtualDirectory.Text" xml:space="preserve">
|
||||||
<value>Create Directory</value>
|
<value>Create Directory</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnCancel.Text" xml:space="preserve">
|
|
||||||
<value>Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnChangeFrontPagePassword.Text" xml:space="preserve">
|
<data name="btnChangeFrontPagePassword.Text" xml:space="preserve">
|
||||||
<value>Change Password</value>
|
<value>Change Password</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -150,12 +147,9 @@
|
||||||
<data name="btnUninstallFrontPage.Text" xml:space="preserve">
|
<data name="btnUninstallFrontPage.Text" xml:space="preserve">
|
||||||
<value>Uninstall</value>
|
<value>Uninstall</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnUpdate.OnClientClick" xml:space="preserve">
|
<data name="buttonPanel.OnSaveClientClick" xml:space="preserve">
|
||||||
<value>ShowProgressDialog('Updating web site...');</value>
|
<value>ShowProgressDialog('Updating web site...');</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnUpdate.Text" xml:space="preserve">
|
|
||||||
<value>Update</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmdContinue.AlternateText" xml:space="preserve">
|
<data name="cmdContinue.AlternateText" xml:space="preserve">
|
||||||
<value>Continue Web Site</value>
|
<value>Continue Web Site</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainsEditDomain.ascx.cs" Inherits="WebsitePanel.Portal.DomainsEditDomain" %>
|
<%@ 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/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="UserControls/CollapsiblePanel.ascx" TagPrefix="wsp" TagName="CollapsiblePanel" %>
|
<%@ Register Src="UserControls/CollapsiblePanel.ascx" TagPrefix="wsp" TagName="CollapsiblePanel" %>
|
||||||
|
<%@ Register Src="UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
|
|
||||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" />
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" />
|
||||||
|
|
||||||
|
@ -119,9 +120,8 @@
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
<div class="FormFooter">
|
<div class="FormFooter">
|
||||||
<asp:Button ID="btnSave" runat="server" meta:resourcekey="btnSave" CssClass="Button1" Text="Save" OnClick="btnSave_Click" OnClientClick = "ShowProgressDialog('Updating Domain...');"/>
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="EditMailbox"
|
||||||
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" CssClass="Button1" CausesValidation="false"
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" OnSaveClientClick="ShowProgressDialog('Updating Domain...');" />
|
||||||
Text="Cancel" OnClick="btnCancel_Click" />
|
|
||||||
<asp:Button ID="btnDelete" runat="server" meta:resourcekey="btnDelete" CssClass="Button1" CausesValidation="false"
|
<asp:Button ID="btnDelete" runat="server" meta:resourcekey="btnDelete" CssClass="Button1" CausesValidation="false"
|
||||||
Text="Delete" OnClick="btnDelete_Click" />
|
Text="Delete" OnClick="btnDelete_Click" />
|
||||||
</div>
|
</div>
|
|
@ -48,6 +48,9 @@ namespace WebsitePanel.Portal
|
||||||
if (!IsPostBack)
|
if (!IsPostBack)
|
||||||
{
|
{
|
||||||
BindDomain();
|
BindDomain();
|
||||||
|
|
||||||
|
if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null)
|
||||||
|
buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,15 +197,13 @@ namespace WebsitePanel.Portal
|
||||||
ShowResultMessage(result);
|
ShowResultMessage(result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
ShowSuccessMessage("DOMAIN_UPDATE_DOMAIN");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
ShowErrorMessage("DOMAIN_UPDATE_DOMAIN", ex);
|
ShowErrorMessage("DOMAIN_UPDATE_DOMAIN", ex);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// return
|
|
||||||
RedirectSpaceHomePage();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteDomain()
|
private void DeleteDomain()
|
||||||
|
@ -232,8 +233,10 @@ namespace WebsitePanel.Portal
|
||||||
SaveDomain();
|
SaveDomain();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void btnCancel_Click(object sender, EventArgs e)
|
protected void btnSaveExit_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
SaveDomain();
|
||||||
|
|
||||||
// return
|
// return
|
||||||
RedirectSpaceHomePage();
|
RedirectSpaceHomePage();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 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
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -428,22 +427,13 @@ namespace WebsitePanel.Portal {
|
||||||
protected global::System.Web.UI.WebControls.Localize DescribeAllowSubDomains;
|
protected global::System.Web.UI.WebControls.Localize DescribeAllowSubDomains;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// btnCancel control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Button btnCancel;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnDelete control.
|
/// btnDelete control.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainsSelectDomainControl.ascx.cs" Inherits="WebsitePanel.Portal.DomainsSelectDomainControl" %>
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainsSelectDomainControl.ascx.cs" Inherits="WebsitePanel.Portal.DomainsSelectDomainControl" %>
|
||||||
<asp:DropDownList id="ddlDomains" runat="server" CssClass="NormalTextBox" DataTextField="DomainName" DataValueField="DomainID" style="vertical-align:middle;"></asp:DropDownList>
|
<asp:DropDownList id="ddlDomains" runat="server" CssClass="TextBox200" DataTextField="DomainName" DataValueField="DomainID" style="vertical-align:middle;"></asp:DropDownList>
|
||||||
<asp:RequiredFieldValidator id="valRequireDomain" runat="server" ErrorMessage="Select domain"
|
<asp:RequiredFieldValidator id="valRequireDomain" runat="server" ErrorMessage="Select domain"
|
||||||
ControlToValidate="ddlDomains" Display="Dynamic" meta:resourcekey="valRequireDomain"></asp:RequiredFieldValidator>
|
ControlToValidate="ddlDomains" Display="Dynamic" meta:resourcekey="valRequireDomain"></asp:RequiredFieldValidator>
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 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
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -186,4 +186,7 @@
|
||||||
<data name="valRequireSubscriberNumber.Text" xml:space="preserve">
|
<data name="valRequireSubscriberNumber.Text" xml:space="preserve">
|
||||||
<value>*</value>
|
<value>*</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="SharedMailbox.Text" xml:space="preserve">
|
||||||
|
<value>Shared Mailbox</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -117,12 +117,9 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnSave.OnClientClick" xml:space="preserve">
|
<data name="buttonPanel.OnSaveClientClick" xml:space="preserve">
|
||||||
<value>ShowProgressDialog('Updating mailbox settings...');</value>
|
<value>ShowProgressDialog('Updating mailbox settings...');</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSave.Text" xml:space="preserve">
|
|
||||||
<value>Save Changes</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkDisable.Text" xml:space="preserve">
|
<data name="chkDisable.Text" xml:space="preserve">
|
||||||
<value>Disable Mailbox</value>
|
<value>Disable Mailbox</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -117,12 +117,9 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnSave.OnClientClick" xml:space="preserve">
|
<data name="buttonPanel.OnSaveClientClick" xml:space="preserve">
|
||||||
<value>ShowProgressDialog('Updating mailbox settings...');</value>
|
<value>ShowProgressDialog('Updating mailbox settings...');</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSave.Text" xml:space="preserve">
|
|
||||||
<value>Save Changes</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkDoNotDeleteOnForward.Text" xml:space="preserve">
|
<data name="chkDoNotDeleteOnForward.Text" xml:space="preserve">
|
||||||
<value>Deliver messages to both forwarding address and mailbox</value>
|
<value>Deliver messages to both forwarding address and mailbox</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -117,12 +117,6 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnSave.OnClientClick" xml:space="preserve">
|
|
||||||
<value>ShowProgressDialog('Updating...');</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnSave.Text" xml:space="preserve">
|
|
||||||
<value>Save Changes</value>
|
|
||||||
</data>
|
|
||||||
<data name="locTitle.Text" xml:space="preserve">
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
<value>Edit Mailbox</value>
|
<value>Edit Mailbox</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -117,12 +117,9 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnSave.OnClientClick" xml:space="preserve">
|
<data name="buttonPanel.OnSaveClientClick" xml:space="preserve">
|
||||||
<value>ShowProgressDialog('Updating mailbox permissions...');</value>
|
<value>ShowProgressDialog('Updating mailbox permissions...');</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSave.Text" xml:space="preserve">
|
|
||||||
<value>Save Changes</value>
|
|
||||||
</data>
|
|
||||||
<data name="FormComments.Text" xml:space="preserve">
|
<data name="FormComments.Text" xml:space="preserve">
|
||||||
<value />
|
<value />
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -117,12 +117,9 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnSave.OnClientClick" xml:space="preserve">
|
<data name="buttonPanel.OnSaveClientClick" xml:space="preserve">
|
||||||
<value>ShowProgressDialog('Updating user settings...');</value>
|
<value>ShowProgressDialog('Updating user settings...');</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="btnSave.Text" xml:space="preserve">
|
|
||||||
<value>Save Changes</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkDisable.Text" xml:space="preserve">
|
<data name="chkDisable.Text" xml:space="preserve">
|
||||||
<value>Disable User</value>
|
<value>Disable User</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -117,12 +117,6 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="btnSave.OnClientClick" xml:space="preserve">
|
|
||||||
<value>ShowProgressDialog('Updating...');</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnSave.Text" xml:space="preserve">
|
|
||||||
<value>Save Changes</value>
|
|
||||||
</data>
|
|
||||||
<data name="locTitle.Text" xml:space="preserve">
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
<value>Edit User </value>
|
<value>Edit User </value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -91,16 +91,37 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
if (plans.Length == 0)
|
if (plans.Length == 0)
|
||||||
btnCreate.Enabled = false;
|
btnCreate.Enabled = false;
|
||||||
|
|
||||||
|
bool allowResourceMailbox = false;
|
||||||
|
|
||||||
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER))
|
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER))
|
||||||
{
|
{
|
||||||
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
|
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
|
||||||
{
|
{
|
||||||
locSubscriberNumber.Visible = txtSubscriberNumber.Visible = valRequireSubscriberNumber.Enabled = false;
|
locSubscriberNumber.Visible = txtSubscriberNumber.Visible = valRequireSubscriberNumber.Enabled = false;
|
||||||
rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("RoomMailbox.Text"), "5"));
|
allowResourceMailbox = true;
|
||||||
rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("EquipmentMailbox.Text"), "6"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
rowRetentionPolicy.Visible = Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, cntx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,9 @@
|
||||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="UserControls/MailboxPlanSelector.ascx" TagName="MailboxPlanSelector" TagPrefix="wsp" %>
|
<%@ Register Src="UserControls/MailboxPlanSelector.ascx" TagName="MailboxPlanSelector" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" 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"/> --%>
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
<div id="ExchangeContainer">
|
<div id="ExchangeContainer">
|
||||||
<div class="Module">
|
<div class="Module">
|
||||||
|
@ -157,10 +158,8 @@
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
||||||
<div class="FormFooterClean">
|
<div class="FormFooterClean">
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1"
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="EditMailbox"
|
||||||
meta:resourcekey="btnSave" ValidationGroup="EditMailbox" OnClick="btnSave_Click"></asp:Button>
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||||
<asp:Button id="btnSaveExit" runat="server" Text="Save Changes and Exit" CssClass="Button1"
|
|
||||||
meta:resourcekey="btnSaveExit" ValidationGroup="EditMailbox" OnClick="btnSaveExit_Click"></asp:Button>
|
|
||||||
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -81,6 +81,9 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
}
|
}
|
||||||
|
|
||||||
secRetentionPolicy.Visible = Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, Cntx);
|
secRetentionPolicy.Visible = Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, Cntx);
|
||||||
|
|
||||||
|
if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null)
|
||||||
|
buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick");
|
||||||
}
|
}
|
||||||
|
|
||||||
int planId = -1;
|
int planId = -1;
|
||||||
|
@ -183,6 +186,15 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
}
|
}
|
||||||
imgVipUser.Visible = account.IsVIP && Cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels);
|
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)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,6 +12,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
|
|
||||||
public partial class ExchangeMailboxGeneralSettings {
|
public partial class ExchangeMailboxGeneralSettings {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// asyncTasks control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Image1 control.
|
/// Image1 control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -382,22 +391,13 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
protected global::System.Web.UI.WebControls.Label lblExchangeGuid;
|
protected global::System.Web.UI.WebControls.Label lblExchangeGuid;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// btnSaveExit control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Button btnSaveExit;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ValidationSummary1 control.
|
/// ValidationSummary1 control.
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
<%@ Register Src="UserControls/AccountsList.ascx" TagName="AccountsList" TagPrefix="wsp" %>
|
<%@ Register Src="UserControls/AccountsList.ascx" TagName="AccountsList" TagPrefix="wsp" %>
|
||||||
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
||||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
|
|
||||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
@ -110,9 +111,8 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div class="FormFooterClean">
|
<div class="FormFooterClean">
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1" meta:resourcekey="btnSave" ValidationGroup="EditMailbox" OnClick="btnSave_Click"></asp:Button>
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="EditMailbox"
|
||||||
<asp:Button id="btnSaveExit" runat="server" Text="Save Changes and Exit" CssClass="Button1"
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||||
meta:resourcekey="btnSaveExit" ValidationGroup="EditMailbox" OnClick="btnSaveExit_Click"></asp:Button>
|
|
||||||
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -49,6 +49,9 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
if (!IsPostBack)
|
if (!IsPostBack)
|
||||||
{
|
{
|
||||||
BindSettings();
|
BindSettings();
|
||||||
|
|
||||||
|
if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null)
|
||||||
|
buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -247,22 +247,13 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
protected global::System.Web.UI.WebControls.CheckBox chkPmmAllowed;
|
protected global::System.Web.UI.WebControls.CheckBox chkPmmAllowed;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// btnSaveExit control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Button btnSaveExit;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ValidationSummary1 control.
|
/// ValidationSummary1 control.
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="UserControls/MailboxPlanSelector.ascx" TagName="MailboxPlanSelector" TagPrefix="wsp" %>
|
<%@ Register Src="UserControls/MailboxPlanSelector.ascx" TagName="MailboxPlanSelector" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" 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"/>
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
@ -43,10 +44,8 @@
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
||||||
<div class="FormFooterClean">
|
<div class="FormFooterClean">
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1"
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="EditMailbox"
|
||||||
meta:resourcekey="btnSave" ValidationGroup="EditMailbox" OnClick="btnSave_Click"></asp:Button>
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||||
<asp:Button id="btnSaveExit" runat="server" Text="Save Changes and Exit" CssClass="Button1"
|
|
||||||
meta:resourcekey="btnSaveExit" ValidationGroup="EditMailbox" OnClick="btnSaveExit_Click"></asp:Button>
|
|
||||||
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -103,22 +103,13 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList groups;
|
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList groups;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// btnSaveExit control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Button btnSaveExit;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ValidationSummary1 control.
|
/// ValidationSummary1 control.
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<%@ Register Src="UserControls/MailboxTabs.ascx" TagName="MailboxTabs" TagPrefix="wsp" %>
|
<%@ Register Src="UserControls/MailboxTabs.ascx" TagName="MailboxTabs" TagPrefix="wsp" %>
|
||||||
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
||||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
|
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
|
|
||||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
|
||||||
|
@ -44,9 +45,8 @@
|
||||||
</uc2:AccountsList>
|
</uc2:AccountsList>
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
<div class="FormFooterClean">
|
<div class="FormFooterClean">
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1" meta:resourcekey="btnSave" ValidationGroup="EditMailbox" OnClick="btnSave_Click" ></asp:Button>
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="EditMailbox"
|
||||||
<asp:Button id="btnSaveExit" runat="server" Text="Save Changes and Exit" CssClass="Button1"
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||||
meta:resourcekey="btnSaveExit" ValidationGroup="EditMailbox" OnClick="btnSaveExit_Click"></asp:Button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -37,8 +37,13 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
protected void Page_Load(object sender, EventArgs e)
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!IsPostBack)
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
BindPermissions();
|
BindPermissions();
|
||||||
|
|
||||||
|
if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null)
|
||||||
|
buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,6 +72,19 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
litDisplayName.Text = mailbox.DisplayName;
|
litDisplayName.Text = mailbox.DisplayName;
|
||||||
sendAsPermission.SetAccounts(mailbox.SendAsAccounts);
|
sendAsPermission.SetAccounts(mailbox.SendAsAccounts);
|
||||||
fullAccessPermission.SetAccounts(mailbox.FullAccessAccounts);
|
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)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -139,21 +139,12 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList fullAccessPermission;
|
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList fullAccessPermission;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// btnSaveExit control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Button btnSaveExit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="FormButtonsBarCleanRight">
|
<div class="FormButtonsBarCleanRight">
|
||||||
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||||
|
<asp:CheckBox ID="chkMailboxes" runat="server" meta:resourcekey="chkMailboxes" Text="Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged"/>
|
||||||
|
<asp:CheckBox ID="chkResourceMailboxes" runat="server" meta:resourcekey="chkResourceMailboxes" Text="Resource Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged"/>
|
||||||
|
<asp:CheckBox ID="chkSharedMailboxes" runat="server" meta:resourcekey="chkSharedMailboxes" Text="Shared Mailboxes" AutoPostBack="true" OnCheckedChanged="chkMailboxes_CheckedChanged"/>
|
||||||
<asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="True"
|
<asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="True"
|
||||||
onselectedindexchanged="ddlPageSize_SelectedIndexChanged">
|
onselectedindexchanged="ddlPageSize_SelectedIndexChanged">
|
||||||
<asp:ListItem>10</asp:ListItem>
|
<asp:ListItem>10</asp:ListItem>
|
||||||
|
@ -105,7 +108,7 @@
|
||||||
OnSelected="odsAccountsPaged_Selected">
|
OnSelected="odsAccountsPaged_Selected">
|
||||||
<SelectParameters>
|
<SelectParameters>
|
||||||
<asp:QueryStringParameter Name="itemId" QueryStringField="ItemID" DefaultValue="0" />
|
<asp:QueryStringParameter Name="itemId" QueryStringField="ItemID" DefaultValue="0" />
|
||||||
<asp:Parameter Name="accountTypes" DefaultValue="1,5,6" />
|
<asp:Parameter Name="accountTypes" DefaultValue="1,5,6,10" />
|
||||||
<asp:ControlParameter Name="filterColumn" ControlID="ddlSearchColumn" PropertyName="SelectedValue" />
|
<asp:ControlParameter Name="filterColumn" ControlID="ddlSearchColumn" PropertyName="SelectedValue" />
|
||||||
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
<asp:ControlParameter Name="filterValue" ControlID="txtSearchValue" PropertyName="Text" />
|
||||||
<asp:Parameter Name="archiving" Type="Boolean" />
|
<asp:Parameter Name="archiving" Type="Boolean" />
|
||||||
|
|
|
@ -60,6 +60,10 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
|
|
||||||
if (!IsPostBack)
|
if (!IsPostBack)
|
||||||
{
|
{
|
||||||
|
chkMailboxes.Checked = true;
|
||||||
|
chkResourceMailboxes.Checked = true;
|
||||||
|
chkSharedMailboxes.Checked = true;
|
||||||
|
|
||||||
BindStats();
|
BindStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,6 +151,7 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
{
|
{
|
||||||
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId;
|
||||||
string imgName = "mailbox_16.gif";
|
string imgName = "mailbox_16.gif";
|
||||||
|
|
||||||
if (accountType == ExchangeAccountType.Contact)
|
if (accountType == ExchangeAccountType.Contact)
|
||||||
imgName = "contact_16.gif";
|
imgName = "contact_16.gif";
|
||||||
else if (accountType == ExchangeAccountType.DistributionList)
|
else if (accountType == ExchangeAccountType.DistributionList)
|
||||||
|
@ -155,6 +160,8 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
imgName = "room_16.gif";
|
imgName = "room_16.gif";
|
||||||
else if (accountType == ExchangeAccountType.Equipment)
|
else if (accountType == ExchangeAccountType.Equipment)
|
||||||
imgName = "equipment_16.gif";
|
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";
|
if (vip && cntx.Groups.ContainsKey(ResourceGroups.ServiceLevels)) imgName = "vip_user_16.png";
|
||||||
|
|
||||||
|
@ -246,5 +253,25 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
|
|
||||||
return serviceLevel;
|
return serviceLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void chkMailboxes_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
List<string> accountTypes = new List<string>();
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -66,6 +66,33 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Panel SearchPanel;
|
protected global::System.Web.UI.WebControls.Panel SearchPanel;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkMailboxes control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.CheckBox chkMailboxes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkResourceMailboxes control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.CheckBox chkResourceMailboxes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// chkSharedMailboxes control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.CheckBox chkSharedMailboxes;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ddlPageSize control.
|
/// ddlPageSize control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -89,6 +89,24 @@
|
||||||
<wsp:QuotaViewer ID="mailboxesStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
<wsp:QuotaViewer ID="mailboxesStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr class="OrgStatsRow">
|
||||||
|
<td class="OrgStatsQuota" nowrap>
|
||||||
|
<asp:HyperLink ID="lnkSharedMailboxes" runat="server" meta:resourcekey="lnkSharedMailboxes" Text="Shared mailboxes" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<wsp:QuotaViewer ID="mailboxesSharedStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="OrgStatsRow">
|
||||||
|
<td class="OrgStatsQuota" nowrap>
|
||||||
|
<asp:HyperLink ID="lnkResourceMailboxes" runat="server" meta:resourcekey="lnkResourceMailboxes" Text="Resource mailboxes" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<wsp:QuotaViewer ID="mailboxesResourceStats" QuotaTypeId="2" runat="server" DisplayGauge="true" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr class="OrgStatsRow" id="rowContacts" runat="server">
|
<tr class="OrgStatsRow" id="rowContacts" runat="server">
|
||||||
<td class="OrgStatsQuota" nowrap>
|
<td class="OrgStatsQuota" nowrap>
|
||||||
<asp:HyperLink ID="lnkContacts" runat="server" meta:resourcekey="lnkContacts"></asp:HyperLink>
|
<asp:HyperLink ID="lnkContacts" runat="server" meta:resourcekey="lnkContacts"></asp:HyperLink>
|
||||||
|
|
|
@ -54,6 +54,14 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
lnkMailboxes.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "mailboxes",
|
lnkMailboxes.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "mailboxes",
|
||||||
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
"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",
|
lnkContacts.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "contacts",
|
||||||
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
"SpaceID=" + PanelSecurity.PackageId.ToString());
|
||||||
|
|
||||||
|
@ -77,6 +85,13 @@ namespace WebsitePanel.Portal.ExchangeServer
|
||||||
mailboxesStats.QuotaValue = exchangeOrgStats.AllocatedMailboxes;
|
mailboxesStats.QuotaValue = exchangeOrgStats.AllocatedMailboxes;
|
||||||
if (exchangeOrgStats.AllocatedMailboxes != -1) mailboxesStats.QuotaAvailable = exchangeTenantStats.AllocatedMailboxes - exchangeTenantStats.CreatedMailboxes;
|
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");
|
if (exchangeTenantStats.AllocatedContacts == 0) this.rowContacts.Style.Add("display", "none");
|
||||||
else
|
else
|
||||||
|
|
|
@ -201,6 +201,42 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::WebsitePanel.Portal.QuotaViewer mailboxesStats;
|
protected global::WebsitePanel.Portal.QuotaViewer mailboxesStats;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lnkSharedMailboxes control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.HyperLink lnkSharedMailboxes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// mailboxesSharedStats control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.QuotaViewer mailboxesSharedStats;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lnkResourceMailboxes control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.HyperLink lnkResourceMailboxes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// mailboxesResourceStats control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.QuotaViewer mailboxesResourceStats;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// rowContacts control.
|
/// rowContacts control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
<%@ Register src="UserControls/UserTabs.ascx" tagname="UserTabs" tagprefix="uc1" %>
|
<%@ Register src="UserControls/UserTabs.ascx" tagname="UserTabs" tagprefix="uc1" %>
|
||||||
<%@ Register src="UserControls/MailboxTabs.ascx" tagname="MailboxTabs" tagprefix="uc1" %>
|
<%@ Register src="UserControls/MailboxTabs.ascx" tagname="MailboxTabs" tagprefix="uc1" %>
|
||||||
|
|
||||||
|
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
|
||||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
@ -283,10 +284,8 @@
|
||||||
|
|
||||||
|
|
||||||
<div class="FormFooterClean">
|
<div class="FormFooterClean">
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1"
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="EditMailbox"
|
||||||
meta:resourcekey="btnSave" ValidationGroup="EditMailbox" OnClick="btnSave_Click"></asp:Button>
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||||
<asp:Button id="btnSaveExit" runat="server" Text="Save Changes and Exit" CssClass="Button1"
|
|
||||||
meta:resourcekey="btnSaveExit" ValidationGroup="EditMailbox" OnClick="btnSaveExit_Click"></asp:Button>
|
|
||||||
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -49,6 +49,9 @@ namespace WebsitePanel.Portal.HostedSolution
|
||||||
|
|
||||||
MailboxTabsId.Visible = (PanelRequest.Context == "Mailbox");
|
MailboxTabsId.Visible = (PanelRequest.Context == "Mailbox");
|
||||||
UserTabsId.Visible = (PanelRequest.Context == "User");
|
UserTabsId.Visible = (PanelRequest.Context == "User");
|
||||||
|
|
||||||
|
if (GetLocalizedString("buttonPanel.OnSaveClientClick") != null)
|
||||||
|
buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -769,22 +769,13 @@ namespace WebsitePanel.Portal.HostedSolution {
|
||||||
protected global::System.Web.UI.WebControls.Label lblUserDomainName;
|
protected global::System.Web.UI.WebControls.Label lblUserDomainName;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// btnSaveExit control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Button btnSaveExit;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ValidationSummary1 control.
|
/// ValidationSummary1 control.
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<%@ Register src="UserControls/UserTabs.ascx" tagname="UserTabs" tagprefix="uc1" %>
|
<%@ Register src="UserControls/UserTabs.ascx" tagname="UserTabs" tagprefix="uc1" %>
|
||||||
<%@ Register src="UserControls/MailboxTabs.ascx" tagname="MailboxTabs" tagprefix="uc1" %>
|
<%@ Register src="UserControls/MailboxTabs.ascx" tagname="MailboxTabs" tagprefix="uc1" %>
|
||||||
|
|
||||||
|
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
|
|
||||||
|
|
||||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
@ -54,10 +55,8 @@
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
||||||
<div class="FormFooterClean">
|
<div class="FormFooterClean">
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1"
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="EditMailbox"
|
||||||
meta:resourcekey="btnSave" ValidationGroup="EditMailbox" OnClick="btnSave_Click"></asp:Button>
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||||
<asp:Button id="btnSaveExit" runat="server" Text="Save Changes and Exit" CssClass="Button1"
|
|
||||||
meta:resourcekey="btnSaveExit" ValidationGroup="EditMailbox" OnClick="btnSaveExit_Click"></asp:Button>
|
|
||||||
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="EditMailbox" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -112,22 +112,13 @@ namespace WebsitePanel.Portal.HostedSolution {
|
||||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList groups;
|
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.AccountsList groups;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// btnSaveExit control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Button btnSaveExit;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ValidationSummary1 control.
|
/// ValidationSummary1 control.
|
||||||
|
|
|
@ -123,16 +123,31 @@
|
||||||
<data name="lblDomainTemplateNameResource1.ToolTip" xml:space="preserve">
|
<data name="lblDomainTemplateNameResource1.ToolTip" xml:space="preserve">
|
||||||
<value />
|
<value />
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lblMaxMessageSizeInMB.Text" xml:space="preserve">
|
||||||
|
<value>Global max message size:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblPublicIP.Text" xml:space="preserve">
|
||||||
|
<value>Public IP Address:</value>
|
||||||
|
</data>
|
||||||
<data name="lblPublicIPResource1.Text" xml:space="preserve">
|
<data name="lblPublicIPResource1.Text" xml:space="preserve">
|
||||||
<value>Public IP Address:</value>
|
<value>Public IP Address:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="lblPublicIPResource1.ToolTip" xml:space="preserve">
|
<data name="lblPublicIPResource1.ToolTip" xml:space="preserve">
|
||||||
<value />
|
<value />
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lblZeroIsUnlimited.Text" xml:space="preserve">
|
||||||
|
<value>0 means unlimited</value>
|
||||||
|
</data>
|
||||||
|
<data name="MaxMessageSizeInMB.Text" xml:space="preserve">
|
||||||
|
<value>Can be overridden on domain level if you check 'Override global limits'</value>
|
||||||
|
</data>
|
||||||
<data name="txtDomainTemplateNameResource1.Text" xml:space="preserve">
|
<data name="txtDomainTemplateNameResource1.Text" xml:space="preserve">
|
||||||
<value />
|
<value />
|
||||||
</data>
|
</data>
|
||||||
<data name="txtDomainTemplateNameResource1.ToolTip" xml:space="preserve">
|
<data name="txtDomainTemplateNameResource1.ToolTip" xml:space="preserve">
|
||||||
<value />
|
<value />
|
||||||
</data>
|
</data>
|
||||||
|
<data name="txtWarnSizeValidator.ErrorMessage" xml:space="preserve">
|
||||||
|
<value>Must be a value between 0 and 99, 0 means disabled</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -0,0 +1,129 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
|
<value>Add</value>
|
||||||
|
</data>
|
||||||
|
<data name="gvGWServers.EmptyDataText" xml:space="preserve">
|
||||||
|
<value>No gateway serves have been added yet.</value>
|
||||||
|
</data>
|
||||||
|
<data name="ServerNameColumn.HeaderText" xml:space="preserve">
|
||||||
|
<value>Server Name</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -76,7 +76,7 @@
|
||||||
<asp:Label ID="lblRespondPeriodInDays" runat="server" meta:resourcekey="lblRespondPeriodInDays" Text="Respond period in days:"></asp:Label>
|
<asp:Label ID="lblRespondPeriodInDays" runat="server" meta:resourcekey="lblRespondPeriodInDays" Text="Respond period in days:"></asp:Label>
|
||||||
</td>
|
</td>
|
||||||
<td class="Normal">
|
<td class="Normal">
|
||||||
<asp:TextBox ID="txtRespondPeriodInDays" runat="server" CssClass="NormalTextBox"></asp:TextBox>
|
<asp:TextBox ID="txtRespondPeriodInDays" runat="server" CssClass="NormalTextBox" Text="0"></asp:TextBox>
|
||||||
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtRespondPeriodInDays" ErrorMessage="*"></asp:RequiredFieldValidator>
|
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtRespondPeriodInDays" ErrorMessage="*"></asp:RequiredFieldValidator>
|
||||||
<asp:RangeValidator ID="RespondPeriodInDaysValidator" runat="server" ControlToValidate="txtRespondPeriodInDays" MinimumValue="0" MaximumValue="63" Type="Integer" ErrorMessage="Respond days must be between 0 and 63 days" meta:resourcekey="RespondPeriodInDaysValidator"></asp:RangeValidator>
|
<asp:RangeValidator ID="RespondPeriodInDaysValidator" runat="server" ControlToValidate="txtRespondPeriodInDays" MinimumValue="0" MaximumValue="63" Type="Integer" ErrorMessage="Respond days must be between 0 and 63 days" meta:resourcekey="RespondPeriodInDaysValidator"></asp:RangeValidator>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -37,8 +37,11 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
{
|
{
|
||||||
// Hide some form items when creating a new account
|
// Hide some form items when creating a new account
|
||||||
passwordRow.Visible = (PanelRequest.ItemID > 0);
|
passwordRow.Visible = (PanelRequest.ItemID > 0);
|
||||||
|
AutoresponderPanel.Visible = (PanelRequest.ItemID > 0);
|
||||||
secAutoresponder.Visible = (PanelRequest.ItemID > 0);
|
secAutoresponder.Visible = (PanelRequest.ItemID > 0);
|
||||||
|
ForwardingPanel.Visible = (PanelRequest.ItemID > 0);
|
||||||
secForwarding.Visible = (PanelRequest.ItemID > 0);
|
secForwarding.Visible = (PanelRequest.ItemID > 0);
|
||||||
|
OlderMailsPanel.Visible = (PanelRequest.ItemID > 0);
|
||||||
secOlderMails.Visible = (PanelRequest.ItemID > 0);
|
secOlderMails.Visible = (PanelRequest.ItemID > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,10 +112,10 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
item.IsDomainAdmin = cbDomainAdmin.Checked;
|
item.IsDomainAdmin = cbDomainAdmin.Checked;
|
||||||
|
|
||||||
item.DeleteOlder = cbDeleteOlder.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.ForwardOlder = cbForwardOlder.Checked;
|
||||||
item.ForwardOlderDays = Convert.ToInt32(txtForwardOlderDays.Text);
|
item.ForwardOlderDays = string.IsNullOrWhiteSpace(txtForwardOlderDays.Text) ? 0 : Convert.ToInt32(txtForwardOlderDays.Text);
|
||||||
item.ForwardOlderTo = txtForwardOlderTo.Text;
|
item.ForwardOlderTo = txtForwardOlderTo.Text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="IceWarp_Settings.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.IceWarp_Settings" %>
|
<%@ 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" %>
|
<%@ Register Src="../UserControls/SelectIPAddress.ascx" TagName="SelectIPAddress" TagPrefix="uc1" %>
|
||||||
<table cellpadding="7" cellspacing="0" width="100%">
|
<table width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="SubHead" width="150">
|
<td class="SubHead" width="150">
|
||||||
<asp:Label ID="lblPublicIP" runat="server" Text="Public IP Address:" meta:resourcekey="lblPublicIP"></asp:Label>
|
<asp:Label ID="lblPublicIP" runat="server" Text="Public IP Address:" meta:resourcekey="lblPublicIP"></asp:Label>
|
||||||
|
@ -14,9 +14,14 @@
|
||||||
<asp:Label runat="server" ID="lblMaxMessageSizeInMB" Text="Global max message size:"></asp:Label>
|
<asp:Label runat="server" ID="lblMaxMessageSizeInMB" Text="Global max message size:"></asp:Label>
|
||||||
</td>
|
</td>
|
||||||
<td class="Normal">
|
<td class="Normal">
|
||||||
<asp:TextBox runat="server" ID="txtMaxMessageSizeInMB" Text="0"></asp:TextBox>
|
<asp:TextBox runat="server" ID="txtMaxMessageSizeInMB" Text="0" CssClass="NormalTextBox"></asp:TextBox>
|
||||||
<asp:Label ID="Label1" runat="server" meta:resourcekey="MaxMessageSizeInMB" Text="Can be overridden on domain level if you check 'Override global limits'"></asp:Label>
|
<asp:RequiredFieldValidator ID="txtMaxMessageSizeInMBRequired" runat="server" Text="*" ControlToValidate="txtMaxMessageSizeInMB"></asp:RequiredFieldValidator>
|
||||||
|
<asp:Label runat="server" meta:resourcekey="lblZeroIsUnlimited" />
|
||||||
</td>
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td><asp:Label ID="MaxMessageSizeInMB" runat="server" meta:resourcekey="MaxMessageSizeInMB" Text="Can be overridden on domain level if you check 'Override global limits'"></asp:Label></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">
|
<td colspan="2">
|
||||||
|
@ -43,9 +48,9 @@
|
||||||
<asp:Label runat="server" ID="lblWarnDomainSize" Text="Warn domain administrator when domain size exceeds quota (%)"></asp:Label>
|
<asp:Label runat="server" ID="lblWarnDomainSize" Text="Warn domain administrator when domain size exceeds quota (%)"></asp:Label>
|
||||||
</td>
|
</td>
|
||||||
<td class="Normal">
|
<td class="Normal">
|
||||||
<asp:TextBox runat="server" ID="txtWarnDomainSize" Text="0"></asp:TextBox>
|
<asp:TextBox runat="server" ID="txtWarnDomainSize" Text="0" CssClass="NormalTextBox"></asp:TextBox>
|
||||||
<asp:RequiredFieldValidator runat="server" Text="*" ControlToValidate="txtWarnDomainSize"></asp:RequiredFieldValidator>
|
<asp:RequiredFieldValidator runat="server" Text="*" ControlToValidate="txtWarnDomainSize"></asp:RequiredFieldValidator>
|
||||||
<asp:RangeValidator ErrorMessage="Must be a value between 0 and 99" MinimumValue="0" MaximumValue="99" Type="Integer" meta:resourcekey="txtWarnDomainSizeValidator" ControlToValidate="txtWarnDomainSize" runat="server" />
|
<asp:RangeValidator ErrorMessage="Must be a value between 0 and 99, 0 means disabled" MinimumValue="0" MaximumValue="99" Type="Integer" meta:resourcekey="txtWarnSizeValidator" ControlToValidate="txtWarnDomainSize" runat="server" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -53,9 +58,9 @@
|
||||||
<asp:Label runat="server" ID="lblWarnMailboxUsage" Text="Warn user when mailbox size exceeds quota (%)"></asp:Label>
|
<asp:Label runat="server" ID="lblWarnMailboxUsage" Text="Warn user when mailbox size exceeds quota (%)"></asp:Label>
|
||||||
</td>
|
</td>
|
||||||
<td class="Normal">
|
<td class="Normal">
|
||||||
<asp:TextBox runat="server" ID="txtWarnMailboxUsage" Text="0"></asp:TextBox>
|
<asp:TextBox runat="server" ID="txtWarnMailboxUsage" Text="0" CssClass="NormalTextBox"></asp:TextBox>
|
||||||
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" Text="*" ControlToValidate="txtWarnMailboxUsage"></asp:RequiredFieldValidator>
|
<asp:RequiredFieldValidator ID="txtWarnMailboxUsageRequired" runat="server" Text="*" ControlToValidate="txtWarnMailboxUsage"></asp:RequiredFieldValidator>
|
||||||
<asp:RangeValidator ErrorMessage="Must be a value between 0 and 99" MinimumValue="0" MaximumValue="99" Type="Integer" meta:resourcekey="txtWarnMailboxUsageValidator" ControlToValidate="txtWarnMailboxUsage" runat="server" />
|
<asp:RangeValidator ErrorMessage="Must be a value between 0 and 99, 0 means disabled" MinimumValue="0" MaximumValue="99" Type="Integer" meta:resourcekey="txtWarnSizeValidator" ControlToValidate="txtWarnMailboxUsage" runat="server" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
|
@ -49,13 +49,22 @@ namespace WebsitePanel.Portal.ProviderControls {
|
||||||
protected global::System.Web.UI.WebControls.TextBox txtMaxMessageSizeInMB;
|
protected global::System.Web.UI.WebControls.TextBox txtMaxMessageSizeInMB;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Label1 control.
|
/// txtMaxMessageSizeInMBRequired control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Label Label1;
|
protected global::System.Web.UI.WebControls.RequiredFieldValidator txtMaxMessageSizeInMBRequired;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MaxMessageSizeInMB control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label MaxMessageSizeInMB;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// cbUseDomainDiskQuota control.
|
/// cbUseDomainDiskQuota control.
|
||||||
|
@ -130,12 +139,12 @@ namespace WebsitePanel.Portal.ProviderControls {
|
||||||
protected global::System.Web.UI.WebControls.TextBox txtWarnMailboxUsage;
|
protected global::System.Web.UI.WebControls.TextBox txtWarnMailboxUsage;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RequiredFieldValidator1 control.
|
/// txtWarnMailboxUsageRequired control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
|
protected global::System.Web.UI.WebControls.RequiredFieldValidator txtWarnMailboxUsageRequired;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,7 +121,14 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
ddlSite.Items.Add(item);
|
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)
|
protected void ddlSite_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
|
|
@ -9,15 +9,6 @@
|
||||||
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtConnectionBroker" Display="Dynamic" ErrorMessage="*" />
|
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtConnectionBroker" Display="Dynamic" ErrorMessage="*" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td class="SubHead" width="200" nowrap>
|
|
||||||
<asp:Label runat="server" ID="lblGateway" meta:resourcekey="lblGateway" Text="Gateway Servers:"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<asp:TextBox runat="server" ID="txtGateway" MaxLength="1000" Width="200px" />
|
|
||||||
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtGateway" Display="Dynamic" ErrorMessage="*" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="SubHead" width="200" nowrap>
|
<td class="SubHead" width="200" nowrap>
|
||||||
<asp:Label runat="server" ID="lblRootOU" meta:resourcekey="lblRootOU" Text="Root OU:"/>
|
<asp:Label runat="server" ID="lblRootOU" meta:resourcekey="lblRootOU" Text="Root OU:"/>
|
||||||
|
@ -52,4 +43,33 @@
|
||||||
<asp:TextBox runat="server" ID="txtCentralNPS" Width="200px"/>
|
<asp:TextBox runat="server" ID="txtCentralNPS" Width="200px"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" width="200" nowrap valign="top">
|
||||||
|
<asp:Localize ID="locGWServers" runat="server" meta:resourcekey="locGWServers"
|
||||||
|
Text="Gateway Servers:"></asp:Localize>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox runat="server" ID="txtAddGWServer" MaxLength="1000" Width="200px" />
|
||||||
|
<asp:Button runat="server" ID="btnAddGWServer" OnClick="btnAddGWServer_Click" meta:resourcekey="btnAdd"
|
||||||
|
CssClass="Button1" /><br />
|
||||||
|
<asp:GridView ID="gvGWServers" runat="server" AutoGenerateColumns="False" EmptyDataText="gvRecords"
|
||||||
|
CssSelectorClass="NormalGridView" OnRowCommand="gvGWServers_RowCommand" meta:resourcekey="gvGWServers">
|
||||||
|
<Columns>
|
||||||
|
<asp:TemplateField meta:resourcekey="ServerNameColumn" ItemStyle-Width="100%" >
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Label runat="server" ID="lblServerName" Text='<%#Eval("ServerName")%>' />
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
|
||||||
|
<asp:TemplateField>
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:ImageButton ID="cmdDelete" runat="server" SkinID="DeleteSmall" CommandName="RemoveServer"
|
||||||
|
CommandArgument='<%#Eval("ServerName") %>' meta:resourcekey="cmdDelete" AlternateText="Delete"
|
||||||
|
OnClientClick="return confirm('Delete?');"></asp:ImageButton>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
|
</Columns>
|
||||||
|
</asp:GridView>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
|
@ -27,6 +27,8 @@
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
using WebsitePanel.EnterpriseServer;
|
using WebsitePanel.EnterpriseServer;
|
||||||
using WebsitePanel.Providers.Common;
|
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)
|
public void BindSettings(System.Collections.Specialized.StringDictionary settings)
|
||||||
{
|
{
|
||||||
txtConnectionBroker.Text = settings["ConnectionBroker"];
|
txtConnectionBroker.Text = settings["ConnectionBroker"];
|
||||||
txtGateway.Text = settings["GWServrsList"];
|
|
||||||
|
GWServers = settings["GWServrsList"];
|
||||||
|
|
||||||
|
UpdateLyncServersGrid();
|
||||||
|
|
||||||
txtRootOU.Text = settings["RootOU"];
|
txtRootOU.Text = settings["RootOU"];
|
||||||
txtPrimaryDomainController.Text = settings["PrimaryDomainController"];
|
txtPrimaryDomainController.Text = settings["PrimaryDomainController"];
|
||||||
|
|
||||||
|
@ -63,11 +81,12 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
public void SaveSettings(System.Collections.Specialized.StringDictionary settings)
|
public void SaveSettings(System.Collections.Specialized.StringDictionary settings)
|
||||||
{
|
{
|
||||||
settings["ConnectionBroker"] = txtConnectionBroker.Text;
|
settings["ConnectionBroker"] = txtConnectionBroker.Text;
|
||||||
settings["GWServrsList"] = txtGateway.Text;
|
|
||||||
settings["RootOU"] = txtRootOU.Text;
|
settings["RootOU"] = txtRootOU.Text;
|
||||||
settings["PrimaryDomainController"] = txtPrimaryDomainController.Text;
|
settings["PrimaryDomainController"] = txtPrimaryDomainController.Text;
|
||||||
settings["UseCentralNPS"] = chkUseCentralNPS.Checked.ToString();
|
settings["UseCentralNPS"] = chkUseCentralNPS.Checked.ToString();
|
||||||
settings["CentralNPS"] = chkUseCentralNPS.Checked ? txtCentralNPS.Text : string.Empty;
|
settings["CentralNPS"] = chkUseCentralNPS.Checked ? txtCentralNPS.Text : string.Empty;
|
||||||
|
|
||||||
|
settings["GWServrsList"] = GWServers;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void chkUseCentralNPS_CheckedChanged(object sender, EventArgs e)
|
protected void chkUseCentralNPS_CheckedChanged(object sender, EventArgs e)
|
||||||
|
@ -75,6 +94,61 @@ namespace WebsitePanel.Portal.ProviderControls
|
||||||
txtCentralNPS.Enabled = chkUseCentralNPS.Checked;
|
txtCentralNPS.Enabled = chkUseCentralNPS.Checked;
|
||||||
txtCentralNPS.Text = chkUseCentralNPS.Checked ? txtCentralNPS.Text : string.Empty;
|
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<GWServer> GetServices(string data)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(data))
|
||||||
|
return null;
|
||||||
|
List<GWServer> list = new List<GWServer>();
|
||||||
|
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<GWServer> 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; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -39,33 +39,6 @@ namespace WebsitePanel.Portal.ProviderControls {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
|
protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// lblGateway control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Label lblGateway;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// txtGateway control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.TextBox txtGateway;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// RequiredFieldValidator3 control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator3;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// lblRootOU control.
|
/// lblRootOU control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -155,5 +128,41 @@ namespace WebsitePanel.Portal.ProviderControls {
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.TextBox txtCentralNPS;
|
protected global::System.Web.UI.WebControls.TextBox txtCentralNPS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// locGWServers control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Localize locGWServers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtAddGWServer control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtAddGWServer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAddGWServer control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Button btnAddGWServer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// gvGWServers control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.GridView gvGWServers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,9 +55,10 @@
|
||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
<asp:TemplateField>
|
<asp:TemplateField>
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<asp:LinkButton ID="imgRemove1" runat="server" Text="Remove"
|
<asp:LinkButton ID="imgRemove1" runat="server" Text="Remove" Visible='<%# Eval("RdsCollectionId") == null %>'
|
||||||
CommandName="DeleteItem" CommandArgument='<%# Eval("Id") %>'
|
CommandName="DeleteItem" CommandArgument='<%# Eval("Id") %>'
|
||||||
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Are you sure you want to remove selected server?')"></asp:LinkButton>
|
meta:resourcekey="cmdDelete" OnClientClick="return confirm('Are you sure you want to remove selected server?')"></asp:LinkButton>
|
||||||
|
<asp:Label ID="lbRemove" Text="Remove" runat="server" Visible='<%# Eval("RdsCollectionId") != null %>'></asp:Label>
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
</Columns>
|
</Columns>
|
||||||
|
|
|
@ -32,6 +32,7 @@ using WebsitePanel.EnterpriseServer;
|
||||||
using WebsitePanel.Providers.Common;
|
using WebsitePanel.Providers.Common;
|
||||||
using WebsitePanel.Providers.HostedSolution;
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
using WebsitePanel.Providers.OS;
|
using WebsitePanel.Providers.OS;
|
||||||
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
using WebsitePanel.WebPortal;
|
using WebsitePanel.WebPortal;
|
||||||
|
|
||||||
namespace WebsitePanel.Portal.RDS
|
namespace WebsitePanel.Portal.RDS
|
||||||
|
@ -67,6 +68,13 @@ namespace WebsitePanel.Portal.RDS
|
||||||
|
|
||||||
try
|
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);
|
ResultObject result = ES.Services.RDS.RemoveRdsServerFromOrganization(rdsServerId);
|
||||||
if (!result.IsSuccess)
|
if (!result.IsSuccess)
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
<td class="FormLabel150" style="width: 100px;"><asp:Localize ID="locCollectionName" runat="server" meta:resourcekey="locCollectionName" Text="Collection Name"></asp:Localize></td>
|
<td class="FormLabel150" style="width: 100px;"><asp:Localize ID="locCollectionName" runat="server" meta:resourcekey="locCollectionName" Text="Collection Name"></asp:Localize></td>
|
||||||
<td>
|
<td>
|
||||||
<asp:TextBox ID="txtCollectionName" runat="server" CssClass="NormalTextBox" />
|
<asp:TextBox ID="txtCollectionName" runat="server" CssClass="NormalTextBox" />
|
||||||
<asp:RequiredFieldValidator ID="valCollectionName" runat="server" ErrorMessage="*" ControlToValidate="txtCollectionName"></asp:RequiredFieldValidator>
|
<asp:RequiredFieldValidator ID="valCollectionName" runat="server" ErrorMessage="*" ControlToValidate="txtCollectionName" ValidationGroup="SaveRDSCollection"></asp:RequiredFieldValidator>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="FormFooter">
|
<div class="FormFooter">
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save" CssClass="Button1" meta:resourcekey="btnSave" OnClick="btnSave_Click"></asp:Button>
|
<asp:Button id="btnSave" runat="server" Text="Save" CssClass="Button1" meta:resourcekey="btnSave" OnClick="btnSave_Click" ValidationGroup="SaveRDSCollection"></asp:Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -117,12 +117,21 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="btnAdd.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Getting Remote Apps ...');</value>
|
||||||
|
</data>
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
<value>Add...</value>
|
<value>Add...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnAddSelected.OnClientClick" xml:space="preserve">
|
||||||
|
<value>CloseProgressDialog();</value>
|
||||||
|
</data>
|
||||||
<data name="btnAddSelected.Text" xml:space="preserve">
|
<data name="btnAddSelected.Text" xml:space="preserve">
|
||||||
<value>Add Apps</value>
|
<value>Add Apps</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnCancel.OnClientClick" xml:space="preserve">
|
||||||
|
<value>CloseProgressDialog();</value>
|
||||||
|
</data>
|
||||||
<data name="btnCancel.Text" xml:space="preserve">
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
<value>Cancel</value>
|
<value>Cancel</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -117,12 +117,21 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<data name="btnAdd.OnClientClick" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Getting RDS Servers ...');</value>
|
||||||
|
</data>
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
<data name="btnAdd.Text" xml:space="preserve">
|
||||||
<value>Add...</value>
|
<value>Add...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnAddSelected.OnClientClick" xml:space="preserve">
|
||||||
|
<value>CloseProgressDialog();</value>
|
||||||
|
</data>
|
||||||
<data name="btnAddSelected.Text" xml:space="preserve">
|
<data name="btnAddSelected.Text" xml:space="preserve">
|
||||||
<value>Add Servers</value>
|
<value>Add Servers</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnCancel.OnClientClick" xml:space="preserve">
|
||||||
|
<value>CloseProgressDialog();</value>
|
||||||
|
</data>
|
||||||
<data name="btnCancel.Text" xml:space="preserve">
|
<data name="btnCancel.Text" xml:space="preserve">
|
||||||
<value>Cancel</value>
|
<value>Cancel</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
<asp:Button ID="btnAddServersFake" runat="server" style="display:none;" />
|
<asp:Button ID="btnAddServersFake" runat="server" style="display:none;" />
|
||||||
<ajaxToolkit:ModalPopupExtender ID="AddServersModal" runat="server"
|
<ajaxToolkit:ModalPopupExtender ID="AddServersModal" runat="server"
|
||||||
TargetControlID="btnAddServersFake" PopupControlID="AddServersPanel"
|
TargetControlID="btnAddServersFake" PopupControlID="AddServersPanel"
|
||||||
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancelAdd" />
|
BackgroundCssClass="modalBackground" DropShadow="false" CancelControlID="btnCancelAdd"/>
|
||||||
|
|
||||||
</ContentTemplate>
|
</ContentTemplate>
|
||||||
</asp:UpdatePanel>
|
</asp:UpdatePanel>
|
|
@ -85,8 +85,8 @@ namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
protected void btnAdd_Click(object sender, EventArgs e)
|
protected void btnAdd_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// bind all servers
|
// bind all servers
|
||||||
BindPopupServers();
|
BindPopupServers();
|
||||||
|
|
||||||
// show modal
|
// show modal
|
||||||
AddServersModal.Show();
|
AddServersModal.Show();
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,6 @@ namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
List<RdsServer> selectedServers = GetPopUpGridViewServers();
|
List<RdsServer> selectedServers = GetPopUpGridViewServers();
|
||||||
|
|
||||||
BindServers(selectedServers.ToArray(), true);
|
BindServers(selectedServers.ToArray(), true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void BindPopupServers()
|
protected void BindPopupServers()
|
||||||
|
@ -132,6 +131,7 @@ namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
servers.AddRange(GetGridViewServers(SelectedState.All));
|
servers.AddRange(GetGridViewServers(SelectedState.All));
|
||||||
|
|
||||||
// add new servers
|
// add new servers
|
||||||
|
|
||||||
if (newServers != null)
|
if (newServers != null)
|
||||||
{
|
{
|
||||||
foreach (RdsServer newServer in newServers)
|
foreach (RdsServer newServer in newServers)
|
||||||
|
|
|
@ -43,7 +43,7 @@ function PadNumber(num)
|
||||||
|
|
||||||
function EnableProgressDialog() {
|
function EnableProgressDialog() {
|
||||||
_showProgressDialog = true;
|
_showProgressDialog = true;
|
||||||
window.setInterval(DisableProgressDialog, 10); // disable dialog with some delay
|
//window.setInterval(DisableProgressDialog, 10); // disable dialog with some delay
|
||||||
}
|
}
|
||||||
|
|
||||||
function DisableProgressDialog() {
|
function DisableProgressDialog() {
|
||||||
|
@ -57,6 +57,12 @@ function ShowProgressDialog(title, popupBehavior)
|
||||||
EnableProgressDialog();
|
EnableProgressDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CloseProgressDialog()
|
||||||
|
{
|
||||||
|
DisableProgressDialog();
|
||||||
|
$find('ModalPopupProperties').hide();
|
||||||
|
}
|
||||||
|
|
||||||
function ShowProgressDialogWithCallback(title)
|
function ShowProgressDialogWithCallback(title)
|
||||||
{
|
{
|
||||||
_dialogTitle = title;
|
_dialogTitle = title;
|
||||||
|
|
|
@ -17,7 +17,16 @@
|
||||||
EmptyDataText="gvPackages" CssSelectorClass="NormalGridView"
|
EmptyDataText="gvPackages" CssSelectorClass="NormalGridView"
|
||||||
AllowSorting="True" DataSourceID="odsItemsPaged" AllowPaging="True">
|
AllowSorting="True" DataSourceID="odsItemsPaged" AllowPaging="True">
|
||||||
<Columns>
|
<Columns>
|
||||||
<asp:BoundField SortExpression="ItemName" DataField="ItemName" HeaderText="gvPackagesItemName" ></asp:BoundField>
|
<asp:TemplateField SortExpression="ItemName" HeaderText="gvPackagesItemName">
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:hyperlink ID="lnkItem" runat="server" NavigateUrl='<%# GetItemPageUrl((int)Eval("ItemID"), (int)Eval("PackageID")) %>' Visible="<%# AllowItemLink() %>">
|
||||||
|
<%# Eval("ItemName") %>
|
||||||
|
</asp:hyperlink>
|
||||||
|
<asp:Label ID="itemName" runat="server" Visible="<%# !AllowItemLink() %>">
|
||||||
|
<%# Eval("ItemName") %>
|
||||||
|
</asp:Label>
|
||||||
|
</ItemTemplate>
|
||||||
|
</asp:TemplateField>
|
||||||
<asp:TemplateField SortExpression="PackageName" HeaderText="gvPackagesName">
|
<asp:TemplateField SortExpression="PackageName" HeaderText="gvPackagesName">
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<asp:hyperlink id=lnkSpace runat="server" NavigateUrl='<%# GetSpaceHomePageUrl((int)Eval("PackageID")) %>'>
|
<asp:hyperlink id=lnkSpace runat="server" NavigateUrl='<%# GetSpaceHomePageUrl((int)Eval("PackageID")) %>'>
|
||||||
|
|
|
@ -30,6 +30,7 @@ using System;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Configuration;
|
using System.Configuration;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Web.Security;
|
using System.Web.Security;
|
||||||
using System.Web.UI;
|
using System.Web.UI;
|
||||||
|
@ -37,10 +38,26 @@ using System.Web.UI.WebControls;
|
||||||
using System.Web.UI.WebControls.WebParts;
|
using System.Web.UI.WebControls.WebParts;
|
||||||
using System.Web.UI.HtmlControls;
|
using System.Web.UI.HtmlControls;
|
||||||
|
|
||||||
|
using WebsitePanel.WebPortal;
|
||||||
|
using WebsitePanel.Portal.UserControls;
|
||||||
|
|
||||||
namespace WebsitePanel.Portal
|
namespace WebsitePanel.Portal
|
||||||
{
|
{
|
||||||
public partial class SearchSpaces : WebsitePanelModuleBase
|
public partial class SearchSpaces : WebsitePanelModuleBase
|
||||||
{
|
{
|
||||||
|
|
||||||
|
string ItemTypeName;
|
||||||
|
|
||||||
|
const string type_WebSite = "WebSite";
|
||||||
|
const string type_Domain = "Domain";
|
||||||
|
const string type_Organization = "Organization";
|
||||||
|
|
||||||
|
List<string> linkTypes = new List<string>(new string[] {type_WebSite, type_Domain, type_Organization});
|
||||||
|
|
||||||
|
const string PID_SPACE_WEBSITES = "SpaceWebSites";
|
||||||
|
const string PID_SPACE_DIMAINS = "SpaceDomains";
|
||||||
|
const string PID_SPACE_EXCHANGESERVER = "SpaceExchangeServer";
|
||||||
|
|
||||||
protected void Page_Load(object sender, EventArgs e)
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!IsPostBack)
|
if (!IsPostBack)
|
||||||
|
@ -48,10 +65,16 @@ namespace WebsitePanel.Portal
|
||||||
// bind item types
|
// bind item types
|
||||||
DataTable dtItemTypes = ES.Services.Packages.GetSearchableServiceItemTypes().Tables[0];
|
DataTable dtItemTypes = ES.Services.Packages.GetSearchableServiceItemTypes().Tables[0];
|
||||||
foreach (DataRow dr in dtItemTypes.Rows)
|
foreach (DataRow dr in dtItemTypes.Rows)
|
||||||
|
{
|
||||||
|
string displayName = dr["DisplayName"].ToString();
|
||||||
ddlItemType.Items.Add(new ListItem(
|
ddlItemType.Items.Add(new ListItem(
|
||||||
GetSharedLocalizedString("ServiceItemType." + dr["DisplayName"].ToString()),
|
GetSharedLocalizedString("ServiceItemType." + displayName),
|
||||||
dr["ItemTypeID"].ToString()));
|
dr["ItemTypeID"].ToString()));
|
||||||
|
|
||||||
|
if (Request["ItemTypeID"] == dr["ItemTypeID"].ToString())
|
||||||
|
ItemTypeName = displayName;
|
||||||
|
}
|
||||||
|
|
||||||
// bind filter
|
// bind filter
|
||||||
Utils.SelectListItem(ddlItemType, Request["ItemTypeID"]);
|
Utils.SelectListItem(ddlItemType, Request["ItemTypeID"]);
|
||||||
txtFilterValue.Text = Request["Query"];
|
txtFilterValue.Text = Request["Query"];
|
||||||
|
@ -68,6 +91,32 @@ namespace WebsitePanel.Portal
|
||||||
return PortalUtils.GetSpaceHomePageUrl(spaceId);
|
return PortalUtils.GetSpaceHomePageUrl(spaceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetItemPageUrl(int itemId, int spaceId)
|
||||||
|
{
|
||||||
|
string res = "";
|
||||||
|
|
||||||
|
switch(ItemTypeName)
|
||||||
|
{
|
||||||
|
case type_WebSite:
|
||||||
|
res = PortalUtils.NavigatePageURL(PID_SPACE_WEBSITES, "ItemID", itemId.ToString(),
|
||||||
|
PortalUtils.SPACE_ID_PARAM + "=" + spaceId, DefaultPage.CONTROL_ID_PARAM + "=" + "edit_item",
|
||||||
|
"moduleDefId=websites");
|
||||||
|
break;
|
||||||
|
case type_Domain:
|
||||||
|
res = PortalUtils.NavigatePageURL(PID_SPACE_DIMAINS, "DomainID", itemId.ToString(),
|
||||||
|
PortalUtils.SPACE_ID_PARAM + "=" + spaceId, DefaultPage.CONTROL_ID_PARAM + "=" + "edit_item",
|
||||||
|
"moduleDefId=domains");
|
||||||
|
break;
|
||||||
|
case type_Organization:
|
||||||
|
res = PortalUtils.NavigatePageURL(PID_SPACE_EXCHANGESERVER, "ItemID", itemId.ToString(),
|
||||||
|
PortalUtils.SPACE_ID_PARAM + "=" + spaceId, DefaultPage.CONTROL_ID_PARAM + "=" + "organization_home",
|
||||||
|
"moduleDefId=ExchangeServer");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
protected void cmdSearch_Click(object sender, ImageClickEventArgs e)
|
protected void cmdSearch_Click(object sender, ImageClickEventArgs e)
|
||||||
{
|
{
|
||||||
string query = txtFilterValue.Text.Trim().Replace("%", "");
|
string query = txtFilterValue.Text.Trim().Replace("%", "");
|
||||||
|
@ -86,5 +135,12 @@ namespace WebsitePanel.Portal
|
||||||
e.ExceptionHandled = true;
|
e.ExceptionHandled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool AllowItemLink()
|
||||||
|
{
|
||||||
|
bool res = linkTypes.Exists(x => x == ItemTypeName);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,10 +1,9 @@
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 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
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,126 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="btnSave.Text" xml:space="preserve">
|
||||||
|
<value>Save Changes</value>
|
||||||
|
</data>
|
||||||
|
<data name="btnSaveExit.Text" xml:space="preserve">
|
||||||
|
<value>Save Changes and Exit</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ItemButtonPanel.ascx.cs" Inherits="WebsitePanel.Portal.ItemButtonPanel" %>
|
||||||
|
<asp:Button id="btnSave" runat="server" Text="Save Changes" CssClass="Button1" meta:resourcekey="btnSave"
|
||||||
|
OnClick="btnSave_Click" OnClientClick="ShowProgressDialog('Updating ...');"></asp:Button>
|
||||||
|
<asp:Button id="btnSaveExit" runat="server" Text="Save Changes and Exit" CssClass="Button1" meta:resourcekey="btnSaveExit"
|
||||||
|
OnClick="btnSaveExit_Click" OnClientClick="ShowProgressDialog('Updating ...');"></asp:Button>
|
|
@ -0,0 +1,85 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal
|
||||||
|
{
|
||||||
|
public partial class ItemButtonPanel : WebsitePanelControlBase
|
||||||
|
{
|
||||||
|
public bool ButtonSaveVisible
|
||||||
|
{
|
||||||
|
set { btnSave.Visible = value; }
|
||||||
|
get { return btnSave.Visible; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ButtonSaveExitVisible
|
||||||
|
{
|
||||||
|
set { btnSaveExit.Visible = value; }
|
||||||
|
get { return btnSaveExit.Visible; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ValidationGroup
|
||||||
|
{
|
||||||
|
set {
|
||||||
|
btnSave.ValidationGroup = value;
|
||||||
|
btnSaveExit.ValidationGroup = value;
|
||||||
|
}
|
||||||
|
get { return btnSave.ValidationGroup; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string OnSaveClientClick
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
btnSave.OnClientClick = value;
|
||||||
|
btnSaveExit.OnClientClick = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public event EventHandler SaveClick = null;
|
||||||
|
protected void btnSave_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (SaveClick!=null)
|
||||||
|
{
|
||||||
|
SaveClick(this, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public event EventHandler SaveExitClick = null;
|
||||||
|
protected void btnSaveExit_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (SaveExitClick!=null)
|
||||||
|
{
|
||||||
|
SaveExitClick(this, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class ItemButtonPanel {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnSave control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Button btnSave;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnSaveExit control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Button btnSaveExit;
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,7 +11,7 @@
|
||||||
TargetControlID="TechnicalDetailsPanel" resourcekey="secTechnicalDetails" Text="Technical Details">
|
TargetControlID="TechnicalDetailsPanel" resourcekey="secTechnicalDetails" Text="Technical Details">
|
||||||
</wsp:CollapsiblePanel>
|
</wsp:CollapsiblePanel>
|
||||||
<asp:Panel ID="TechnicalDetailsPanel" runat="server" Height="0" style="overflow:hidden;">
|
<asp:Panel ID="TechnicalDetailsPanel" runat="server" Height="0" style="overflow:hidden;">
|
||||||
<table id="tblTechnicalDetails" runat="server" style="background-color: #FFFFFF;" cellpadding="0" cellspacing="0">
|
<table id="tblTechnicalDetails" runat="server" class="TechnicalDetailsTable" cellpadding="0" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<table cellspacing="0" cellpadding="3">
|
<table cellspacing="0" cellpadding="3">
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
<td class="NormalBold" valign="top">
|
<td class="NormalBold" valign="top">
|
||||||
<asp:Label ID="lblStackTrace" runat="server" meta:resourcekey="lblStackTrace" Text="Stack Trace:"></asp:Label>
|
<asp:Label ID="lblStackTrace" runat="server" meta:resourcekey="lblStackTrace" Text="Stack Trace:"></asp:Label>
|
||||||
</td>
|
</td>
|
||||||
<td class="Normal" valign="top">
|
<td class="WrapText" valign="top">
|
||||||
<asp:Literal ID="litStackTrace" runat="server"></asp:Literal>
|
<asp:Literal ID="litStackTrace" runat="server"></asp:Literal>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
<asp:Label ID="lblComments" runat="server" meta:resourcekey="lblComments" Text="Personal Comments:"></asp:Label>
|
<asp:Label ID="lblComments" runat="server" meta:resourcekey="lblComments" Text="Personal Comments:"></asp:Label>
|
||||||
</td>
|
</td>
|
||||||
<td class="Normal" valign="top">
|
<td class="Normal" valign="top">
|
||||||
<asp:TextBox ID="txtSendComments" runat="server" CssClass="LogArea" Rows="5" TextMode="MultiLine"
|
<asp:TextBox ID="txtSendComments" runat="server" CssClass="LogArea TechnicalDetailsTable" Rows="5" TextMode="MultiLine"
|
||||||
Width="400px"></asp:TextBox></td>
|
Width="400px"></asp:TextBox></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -1,10 +1,38 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 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
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SelectIPAddress.ascx.cs" Inherits="WebsitePanel.Portal.SelectIPAddress" %>
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SelectIPAddress.ascx.cs" Inherits="WebsitePanel.Portal.SelectIPAddress" %>
|
||||||
<asp:DropDownList ID="ddlIPAddresses" runat="server" CssClass="NormalTextBox">
|
<asp:DropDownList ID="ddlIPAddresses" runat="server" CssClass="TextBox200">
|
||||||
</asp:DropDownList>
|
</asp:DropDownList>
|
||||||
|
|
|
@ -1,16 +1,24 @@
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.42
|
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace WebsitePanel.Portal {
|
namespace WebsitePanel.Portal {
|
||||||
|
|
||||||
|
|
||||||
public partial class SelectIPAddress {
|
public partial class SelectIPAddress {
|
||||||
protected System.Web.UI.WebControls.DropDownList ddlIPAddresses;
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlIPAddresses control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.DropDownList ddlIPAddresses;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="Normal">
|
<td class="Normal">
|
||||||
<div class="Small" style="padding-top: 10px;">
|
<div class="Small WrapText" style="padding-top: 10px;">
|
||||||
<asp:Label ID="lblIgnoreGlobalDNSRecords" runat="server" meta:resourcekey="lblIPHelp2" Text="If you need your site..."></asp:Label>
|
<asp:Label ID="lblIgnoreGlobalDNSRecords" runat="server" meta:resourcekey="lblIPHelp2" Text="If you need your site..."></asp:Label>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
<%@ Register Src="UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %>
|
<%@ Register Src="UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %>
|
||||||
<%@ Register TagPrefix="wsp" Namespace="WebsitePanel.Portal" %>
|
<%@ Register TagPrefix="wsp" Namespace="WebsitePanel.Portal" %>
|
||||||
<%@ Register Src="WebsitesSSL.ascx" TagName="WebsitesSSL" TagPrefix="uc2" %>
|
<%@ Register Src="WebsitesSSL.ascx" TagName="WebsitesSSL" TagPrefix="uc2" %>
|
||||||
|
<%@ Register Src="UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.style1
|
.style1
|
||||||
{
|
{
|
||||||
|
@ -523,10 +525,8 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="FormFooter">
|
<div class="FormFooter">
|
||||||
<asp:Button ID="btnUpdate" runat="server" meta:resourcekey="btnUpdate" Text="Update"
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="EditMailbox"
|
||||||
CssClass="Button1" OnClick="btnUpdate_Click" OnClientClick="ShowProgressDialog('Updating web site...');" />
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||||
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" Text="Cancel"
|
|
||||||
CssClass="Button1" CausesValidation="false" OnClick="btnCancel_Click" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="FormFooter">
|
<div class="FormFooter">
|
||||||
<asp:Button ID="btnDelete" runat="server" meta:resourcekey="btnDelete" Text="Delete"
|
<asp:Button ID="btnDelete" runat="server" meta:resourcekey="btnDelete" Text="Delete"
|
||||||
|
|
|
@ -102,6 +102,9 @@ namespace WebsitePanel.Portal
|
||||||
if (!IsPostBack)
|
if (!IsPostBack)
|
||||||
{
|
{
|
||||||
BindWebSite();
|
BindWebSite();
|
||||||
|
|
||||||
|
if (GetLocalizedString("buttonPanel.OnSaveClientClick")!=null)
|
||||||
|
buttonPanel.OnSaveClientClick = GetLocalizedString("buttonPanel.OnSaveClientClick");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +112,7 @@ namespace WebsitePanel.Portal
|
||||||
{
|
{
|
||||||
var filteredTabs = TabsList.FilterTabsByHostingPlanQuotas(PackageId).ToList();
|
var filteredTabs = TabsList.FilterTabsByHostingPlanQuotas(PackageId).ToList();
|
||||||
|
|
||||||
// remove "SSL" tab for a site with dynamic IP
|
// remove "SSL" tab for a site with dynamic IP and not SNI enabled
|
||||||
var sslTab = filteredTabs.SingleOrDefault(t => t.Id == "SSL");
|
var sslTab = filteredTabs.SingleOrDefault(t => t.Id == "SSL");
|
||||||
if (!AllowSsl && sslTab != null)
|
if (!AllowSsl && sslTab != null)
|
||||||
filteredTabs.Remove(sslTab);
|
filteredTabs.Remove(sslTab);
|
||||||
|
@ -908,14 +911,14 @@ namespace WebsitePanel.Portal
|
||||||
ShowResultMessage(result);
|
ShowResultMessage(result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ShowSuccessMessage("WEB_UPDATE_SITE");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
ShowErrorMessage("WEB_UPDATE_SITE", ex);
|
ShowErrorMessage("WEB_UPDATE_SITE", ex);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RedirectSpaceHomePage();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DeleteWebSite()
|
private void DeleteWebSite()
|
||||||
|
@ -938,14 +941,15 @@ namespace WebsitePanel.Portal
|
||||||
RedirectSpaceHomePage();
|
RedirectSpaceHomePage();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void btnUpdate_Click(object sender, EventArgs e)
|
protected void btnSave_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SaveWebSite();
|
SaveWebSite();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void btnCancel_Click(object sender, EventArgs e)
|
protected void btnSaveExit_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
RedirectSpaceHomePage();
|
SaveWebSite();
|
||||||
|
RedirectSpaceHomePage();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void btnDelete_Click(object sender, EventArgs e)
|
protected void btnDelete_Click(object sender, EventArgs e)
|
||||||
|
@ -1071,6 +1075,7 @@ namespace WebsitePanel.Portal
|
||||||
|
|
||||||
sharedIP.Visible = false;
|
sharedIP.Visible = false;
|
||||||
switchToDedicatedIP.Visible = true;
|
switchToDedicatedIP.Visible = true;
|
||||||
|
WebsitesSSLControl.InstalledCert = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void cmdSwitchToSharedIP_Click(object sender, EventArgs e)
|
protected void cmdSwitchToSharedIP_Click(object sender, EventArgs e)
|
||||||
|
@ -1090,6 +1095,7 @@ namespace WebsitePanel.Portal
|
||||||
|
|
||||||
dlTabs.SelectedIndex = 0;
|
dlTabs.SelectedIndex = 0;
|
||||||
|
|
||||||
|
WebsitesSSLControl.InstalledCert = null;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,31 +1,3 @@
|
||||||
// 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.
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
@ -1157,22 +1129,13 @@ namespace WebsitePanel.Portal {
|
||||||
protected global::WebsitePanel.Portal.WebsitesSSL WebsitesSSLControl;
|
protected global::WebsitePanel.Portal.WebsitesSSL WebsitesSSLControl;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnUpdate control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnUpdate;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// btnCancel control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Button btnCancel;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnDelete control.
|
/// btnDelete control.
|
||||||
|
|
|
@ -779,6 +779,13 @@
|
||||||
<Compile Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx.designer.cs">
|
<Compile Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx.designer.cs">
|
||||||
<DependentUpon>AllocatePackagePhoneNumbers.ascx</DependentUpon>
|
<DependentUpon>AllocatePackagePhoneNumbers.ascx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="UserControls\ItemButtonPanel.ascx.cs">
|
||||||
|
<DependentUpon>ItemButtonPanel.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="UserControls\ItemButtonPanel.ascx.designer.cs">
|
||||||
|
<DependentUpon>ItemButtonPanel.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="UserOrganization.ascx.cs">
|
<Compile Include="UserOrganization.ascx.cs">
|
||||||
<DependentUpon>UserOrganization.ascx</DependentUpon>
|
<DependentUpon>UserOrganization.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -4328,6 +4335,7 @@
|
||||||
<Content Include="UserControls\OrgPolicyEditor.ascx" />
|
<Content Include="UserControls\OrgPolicyEditor.ascx" />
|
||||||
<Content Include="UserControls\PackagePhoneNumbers.ascx" />
|
<Content Include="UserControls\PackagePhoneNumbers.ascx" />
|
||||||
<Content Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx" />
|
<Content Include="Lync\UserControls\AllocatePackagePhoneNumbers.ascx" />
|
||||||
|
<Content Include="UserControls\ItemButtonPanel.ascx" />
|
||||||
<Content Include="UserOrganization.ascx" />
|
<Content Include="UserOrganization.ascx" />
|
||||||
<Content Include="VPSForPC\MonitoringPage.aspx" />
|
<Content Include="VPSForPC\MonitoringPage.aspx" />
|
||||||
<Content Include="VPSForPC\VdcAccountVLanAdd.ascx" />
|
<Content Include="VPSForPC\VdcAccountVLanAdd.ascx" />
|
||||||
|
@ -5483,6 +5491,9 @@
|
||||||
<Content Include="Lync\UserControls\App_LocalResources\AllocatePackagePhoneNumbers.ascx.resx">
|
<Content Include="Lync\UserControls\App_LocalResources\AllocatePackagePhoneNumbers.ascx.resx">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="UserControls\App_LocalResources\ItemButtonPanel.ascx.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Content>
|
||||||
<None Include="Resources\Windows2008_Settings.ascx.resx" />
|
<None Include="Resources\Windows2008_Settings.ascx.resx" />
|
||||||
<Content Include="App_LocalResources\WebSitesHeliconZooControl.ascx.resx" />
|
<Content Include="App_LocalResources\WebSitesHeliconZooControl.ascx.resx" />
|
||||||
<Content Include="ExchangeServer\App_LocalResources\ExchangeDisclaimers.ascx.resx">
|
<Content Include="ExchangeServer\App_LocalResources\ExchangeDisclaimers.ascx.resx">
|
||||||
|
@ -5561,6 +5572,7 @@
|
||||||
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionUsers.ascx.resx" />
|
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionUsers.ascx.resx" />
|
||||||
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionServers.ascx.resx" />
|
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionServers.ascx.resx" />
|
||||||
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionApps.ascx.resx" />
|
<Content Include="RDS\UserControls\App_LocalResources\RDSCollectionApps.ascx.resx" />
|
||||||
|
<Content Include="ProviderControls\App_LocalResources\RDS_Settings.ascx.resx" />
|
||||||
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
|
<EmbeddedResource Include="UserControls\App_LocalResources\EditDomainsList.ascx.resx">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|
|
@ -141,6 +141,8 @@
|
||||||
<p class="Normal">
|
<p class="Normal">
|
||||||
<asp:Localize ID="SSLImportDescription" runat="server" meta:resourcekey="SSLImportDescription" /></p>
|
<asp:Localize ID="SSLImportDescription" runat="server" meta:resourcekey="SSLImportDescription" /></p>
|
||||||
<asp:Button ID="btnImport" meta:resourcekey="btnImport" CssClass="Button1" runat="server" OnClick="btnImport_click" />
|
<asp:Button ID="btnImport" meta:resourcekey="btnImport" CssClass="Button1" runat="server" OnClick="btnImport_click" />
|
||||||
|
<asp:Button ID="btnDeleteAll" runat="server" Text="Delete" meta:resourcekey="btnDelete"
|
||||||
|
CssClass="Button1" OnClick="btnDeleteAll_Click" />
|
||||||
</div>
|
</div>
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
|
|
||||||
|
@ -151,13 +153,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td class="SubHead">
|
<td class="SubHead">
|
||||||
<asp:Localize ID="SelectCertType" runat="server" meta:resourcekey="SelectCertType" /></td>
|
<asp:Localize ID="SelectCertType" runat="server" meta:resourcekey="SelectCertType" /></td>
|
||||||
<td class="NormalBold" ><asp:radiobutton id="rbSiteCertificate" GroupName="Content" Runat="server" Checked="True"></asp:radiobutton></td>
|
<td class="NormalBold" ><asp:DropDownList id="ddlbSiteCertificate" GroupName="Content" Runat="server" Checked="True"></asp:DropDownList></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td></td>
|
|
||||||
<td class="NormalBold" ><asp:radiobutton id="rbDomainCertificate" GroupName="Content" Runat="server" ></asp:radiobutton></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="SubHead">
|
<td class="SubHead">
|
||||||
<asp:Localize ID="sslBitLength" runat="server" meta:resourcekey="sslBitLength" /></td>
|
<asp:Localize ID="sslBitLength" runat="server" meta:resourcekey="sslBitLength" /></td>
|
||||||
|
@ -173,7 +169,7 @@
|
||||||
<asp:Localize ID="sslOrganization" runat="server" meta:resourcekey="sslOrganization" /></td>
|
<asp:Localize ID="sslOrganization" runat="server" meta:resourcekey="sslOrganization" /></td>
|
||||||
<td class="Normal">
|
<td class="Normal">
|
||||||
<asp:TextBox ID="txtCompany" runat="server" /><asp:RequiredFieldValidator ID="SSLCompanyReq" Display="Dynamic" ValidationGroup="SSL" runat="server"
|
<asp:TextBox ID="txtCompany" runat="server" /><asp:RequiredFieldValidator ID="SSLCompanyReq" Display="Dynamic" ValidationGroup="SSL" runat="server"
|
||||||
ControlToValidate="txtCompany" ErrorMessage="RequiredFieldValidator" /></td>
|
ControlToValidate="txtCompany" ErrorMessage="*" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="SubHead">
|
<td class="SubHead">
|
||||||
|
@ -196,7 +192,7 @@
|
||||||
<asp:DropDownList ID="ddlStates" Runat="server" DataTextField="Text" DataValueField="Value" CssClass="NormalTextBox"
|
<asp:DropDownList ID="ddlStates" Runat="server" DataTextField="Text" DataValueField="Value" CssClass="NormalTextBox"
|
||||||
Width="200px" Visible="false" />
|
Width="200px" Visible="false" />
|
||||||
<asp:RequiredFieldValidator ID="SSLSSLStateReq" ValidationGroup="SSL" runat="server"
|
<asp:RequiredFieldValidator ID="SSLSSLStateReq" ValidationGroup="SSL" runat="server"
|
||||||
ControlToValidate="txtState" Display="Dynamic" /></td>
|
ControlToValidate="txtState" Display="Dynamic" ErrorMessage="*" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="SubHead">
|
<td class="SubHead">
|
||||||
|
@ -204,7 +200,7 @@
|
||||||
<td class="Normal">
|
<td class="Normal">
|
||||||
<asp:TextBox ID="txtCity" runat="server" />
|
<asp:TextBox ID="txtCity" runat="server" />
|
||||||
<asp:RequiredFieldValidator ID="SSLCityReq" ValidationGroup="SSL" runat="server"
|
<asp:RequiredFieldValidator ID="SSLCityReq" ValidationGroup="SSL" runat="server"
|
||||||
ControlToValidate="txtCity" ErrorMessage="RequiredFieldValidator" /></td>
|
ControlToValidate="txtCity" ErrorMessage="*" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<br />
|
<br />
|
||||||
|
@ -254,6 +250,8 @@
|
||||||
<br />
|
<br />
|
||||||
<asp:Button ID="btnInstallCertificate" meta:resourcekey="btnInstallCertificate" runat="server"
|
<asp:Button ID="btnInstallCertificate" meta:resourcekey="btnInstallCertificate" runat="server"
|
||||||
CssClass="Button1" Text="Install" OnClick="btnInstallCertificate_Click" />
|
CssClass="Button1" Text="Install" OnClick="btnInstallCertificate_Click" />
|
||||||
|
<asp:Button ID="btnCancelRequest" runat="server" OnClientClick="return confirm('Are you Sure? This will delete the current request.');"
|
||||||
|
CssClass="Button1" Text="Cancel request" OnClick="btnCancelRequest_Click" />
|
||||||
</div>
|
</div>
|
||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
</ContentTemplate>
|
</ContentTemplate>
|
||||||
|
|
|
@ -135,10 +135,18 @@ namespace WebsitePanel.Portal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BindListOfAvailableSslDomains(string websiteName, string domainName)
|
private void BindListOfAvailableSslDomains(string defaultBindingName)
|
||||||
{
|
{
|
||||||
rbSiteCertificate.Text = websiteName;
|
var domains = ES.Services.WebServers.GetWebSitePointers(SiteId).ToList();
|
||||||
rbDomainCertificate.Text = "*." + domainName;
|
|
||||||
|
// If no pointers at all, add website default domain
|
||||||
|
if (domains.All(d => d.DomainName != defaultBindingName))
|
||||||
|
{
|
||||||
|
domains.Add(new DomainInfo() { DomainName = defaultBindingName, IsDomainPointer = false});
|
||||||
|
}
|
||||||
|
|
||||||
|
ddlbSiteCertificate.Items.AddRange(domains.Select(d => new ListItem(d.DomainName)).ToArray());
|
||||||
|
ddlbSiteCertificate.Items.AddRange(domains.Where(d => !d.IsDomainPointer).Select(d => new ListItem("*." + d.DomainName)).ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BindWebItem(WebVirtualDirectory item)
|
public void BindWebItem(WebVirtualDirectory item)
|
||||||
|
@ -148,106 +156,10 @@ namespace WebsitePanel.Portal
|
||||||
// Skip processing virtual directories, otherwise we will likely run into a trouble
|
// Skip processing virtual directories, otherwise we will likely run into a trouble
|
||||||
if (webSite == null)
|
if (webSite == null)
|
||||||
return;
|
return;
|
||||||
//
|
|
||||||
bool hasactive = false;
|
|
||||||
bool haspending = false;
|
|
||||||
|
|
||||||
SiteId = item.Id;
|
SiteId = item.Id;
|
||||||
//
|
|
||||||
try
|
|
||||||
{
|
|
||||||
SSLCertificate[] certificates = ES.Services.WebServers.GetCertificatesForSite(item.Id);
|
|
||||||
|
|
||||||
SSLNotInstalled.Visible = true;
|
RefreshControlLayout();
|
||||||
|
|
||||||
DomainInfo[] domains = ES.Services.Servers.GetDomains(PanelSecurity.PackageId);
|
|
||||||
string zoneName = string.Empty;
|
|
||||||
foreach (DomainInfo d in domains)
|
|
||||||
{
|
|
||||||
if (d.WebSiteId == SiteId)
|
|
||||||
{
|
|
||||||
zoneName = d.ZoneName;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
BindListOfAvailableSslDomains(webSite.Name, zoneName);
|
|
||||||
|
|
||||||
if (certificates.Length > 0)
|
|
||||||
{
|
|
||||||
foreach (SSLCertificate cert in certificates)
|
|
||||||
{
|
|
||||||
if (cert.Installed)
|
|
||||||
{
|
|
||||||
hasactive = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
haspending = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Web site has active certificate
|
|
||||||
if (hasactive)
|
|
||||||
{
|
|
||||||
tabInstalled.Visible = true;
|
|
||||||
tabInstalled.Enabled = true;
|
|
||||||
tabInstalled.HeaderText = GetLocalizedString("tabInstalled.Text");
|
|
||||||
|
|
||||||
InstalledCert = (from c in certificates
|
|
||||||
where c.Installed == true
|
|
||||||
select c).SingleOrDefault();
|
|
||||||
//
|
|
||||||
BindCertificateFields();
|
|
||||||
// Attention please, the certificate is about to expire!
|
|
||||||
TimeSpan daystoexp = DateTime.Now - InstalledCert.ExpiryDate;
|
|
||||||
if (daystoexp.Days < 30)
|
|
||||||
{
|
|
||||||
lblInstalledExpiration.ForeColor = System.Drawing.Color.Red;
|
|
||||||
}
|
|
||||||
// Put some data to the ViewState
|
|
||||||
ViewState["SSLID"] = InstalledCert.id;
|
|
||||||
ViewState["SSLSerial"] = InstalledCert.SerialNumber;
|
|
||||||
//
|
|
||||||
if (!haspending)
|
|
||||||
{
|
|
||||||
btnShowpnlCSR.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
|
||||||
btnShowUpload.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
|
||||||
SSLNotInstalledHeading.Text = GetLocalizedString("SSLInstalledNewHeading.Text");
|
|
||||||
SSLNotInstalledDescription.Text = GetLocalizedString("SSLInstalledNewDescription.Text");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Web site has pending certificate
|
|
||||||
if (haspending)
|
|
||||||
{
|
|
||||||
tabCSR.HeaderText = GetLocalizedString("tabPendingCertificate.HeaderText");//"Pending Certificate";
|
|
||||||
SSLNotInstalled.Visible = false;
|
|
||||||
pnlInstallCertificate.Visible = true;
|
|
||||||
SSLCertificate pending = (from c in certificates
|
|
||||||
where c.Installed == false
|
|
||||||
select c).Single();
|
|
||||||
ViewState["CSRID"] = pending.id;
|
|
||||||
txtCSR.Text = pending.CSR;
|
|
||||||
txtCSR.Attributes.Add("onfocus", "this.select();");
|
|
||||||
if (InstalledCert != null)
|
|
||||||
{
|
|
||||||
btnInstallCertificate.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!hasactive && ES.Services.WebServers.CheckCertificate(item.Id).IsSuccess)
|
|
||||||
{
|
|
||||||
SSLNotInstalled.Visible = false;
|
|
||||||
SSLImport.Visible = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
messageBox.ShowErrorMessage("WEB_GET_SSL", ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void btnShowpnlCSR_click(object sender, EventArgs e)
|
protected void btnShowpnlCSR_click(object sender, EventArgs e)
|
||||||
|
@ -271,7 +183,8 @@ namespace WebsitePanel.Portal
|
||||||
L={3},
|
L={3},
|
||||||
S={4},
|
S={4},
|
||||||
C={5}",
|
C={5}",
|
||||||
rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text,
|
//rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text,
|
||||||
|
ddlbSiteCertificate.SelectedValue,
|
||||||
txtCompany.Text,
|
txtCompany.Text,
|
||||||
txtOU.Text,
|
txtOU.Text,
|
||||||
txtCity.Text,
|
txtCity.Text,
|
||||||
|
@ -279,7 +192,7 @@ namespace WebsitePanel.Portal
|
||||||
lstCountries.SelectedValue);
|
lstCountries.SelectedValue);
|
||||||
|
|
||||||
SSLCertificate certificate = new SSLCertificate();
|
SSLCertificate certificate = new SSLCertificate();
|
||||||
certificate.Hostname = rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text;
|
certificate.Hostname = ddlbSiteCertificate.SelectedValue; //rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text;
|
||||||
certificate.DistinguishedName = distinguishedName;
|
certificate.DistinguishedName = distinguishedName;
|
||||||
certificate.CSRLength = Convert.ToInt32(lstBits.SelectedValue);
|
certificate.CSRLength = Convert.ToInt32(lstBits.SelectedValue);
|
||||||
certificate.Organisation = txtCompany.Text;
|
certificate.Organisation = txtCompany.Text;
|
||||||
|
@ -336,7 +249,7 @@ namespace WebsitePanel.Portal
|
||||||
OU={2},
|
OU={2},
|
||||||
L={3},
|
L={3},
|
||||||
S={4},
|
S={4},
|
||||||
C={5}", rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text,
|
C={5}", ddlbSiteCertificate.SelectedValue, //rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text,
|
||||||
txtCompany.Text,
|
txtCompany.Text,
|
||||||
txtOU.Text,
|
txtOU.Text,
|
||||||
txtCity.Text,
|
txtCity.Text,
|
||||||
|
@ -344,7 +257,7 @@ namespace WebsitePanel.Portal
|
||||||
lstCountries.SelectedValue);
|
lstCountries.SelectedValue);
|
||||||
|
|
||||||
SSLCertificate certificate = new SSLCertificate();
|
SSLCertificate certificate = new SSLCertificate();
|
||||||
certificate.Hostname = rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text;
|
certificate.Hostname = ddlbSiteCertificate.SelectedValue; //rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text;
|
||||||
certificate.DistinguishedName = distinguishedName;
|
certificate.DistinguishedName = distinguishedName;
|
||||||
certificate.CSRLength = Convert.ToInt32(lstBits.SelectedValue);
|
certificate.CSRLength = Convert.ToInt32(lstBits.SelectedValue);
|
||||||
certificate.Organisation = txtCompany.Text;
|
certificate.Organisation = txtCompany.Text;
|
||||||
|
@ -369,7 +282,7 @@ namespace WebsitePanel.Portal
|
||||||
pnlCSR.Visible = false;
|
pnlCSR.Visible = false;
|
||||||
ViewState["CSRID"] = certificate.id;
|
ViewState["CSRID"] = certificate.id;
|
||||||
txtCSR.Attributes.Add("onfocus", "this.select();");
|
txtCSR.Attributes.Add("onfocus", "this.select();");
|
||||||
RefreshControlLayout(PanelRequest.ItemID);
|
RefreshControlLayout();
|
||||||
TabContainer1.ActiveTab = TabContainer1.Tabs[0];
|
TabContainer1.ActiveTab = TabContainer1.Tabs[0];
|
||||||
messageBox.ShowSuccessMessage(WEB_GEN_CSR);
|
messageBox.ShowSuccessMessage(WEB_GEN_CSR);
|
||||||
}
|
}
|
||||||
|
@ -402,7 +315,7 @@ namespace WebsitePanel.Portal
|
||||||
//
|
//
|
||||||
TabContainer1.ActiveTab = tabInstalled;
|
TabContainer1.ActiveTab = tabInstalled;
|
||||||
|
|
||||||
RefreshControlLayout(webSiteId);
|
RefreshControlLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void btnInstallPFX_Click(object sender, EventArgs e)
|
protected void btnInstallPFX_Click(object sender, EventArgs e)
|
||||||
|
@ -428,13 +341,14 @@ namespace WebsitePanel.Portal
|
||||||
if (result.IsSuccess.Equals(false))
|
if (result.IsSuccess.Equals(false))
|
||||||
{
|
{
|
||||||
messageBox.ShowErrorMessage("WEB_INSTALL_CSR");
|
messageBox.ShowErrorMessage("WEB_INSTALL_CSR");
|
||||||
return;
|
RefreshControlLayout();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
messageBox.ShowSuccessMessage("WEB_INSTALL_CSR");
|
messageBox.ShowSuccessMessage("WEB_INSTALL_CSR");
|
||||||
SSLNotInstalled.Visible = false;
|
SSLNotInstalled.Visible = false;
|
||||||
tabInstalled.Visible = true;
|
tabInstalled.Visible = true;
|
||||||
RefreshControlLayout(SiteId);
|
RefreshControlLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void BindCertificateFields()
|
protected void BindCertificateFields()
|
||||||
|
@ -560,43 +474,43 @@ namespace WebsitePanel.Portal
|
||||||
if (!result.IsSuccess)
|
if (!result.IsSuccess)
|
||||||
{
|
{
|
||||||
messageBox.ShowErrorMessage("WEB_INSTALL_CSR");
|
messageBox.ShowErrorMessage("WEB_INSTALL_CSR");
|
||||||
|
RefreshControlLayout();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Show success message and display appropriate controls
|
// Show success message and display appropriate controls
|
||||||
messageBox.ShowSuccessMessage("WEB_INSTALL_CSR");
|
messageBox.ShowSuccessMessage("WEB_INSTALL_CSR");
|
||||||
SSLNotInstalled.Visible = false;
|
|
||||||
tabInstalled.Visible = true;
|
RefreshControlLayout();
|
||||||
//
|
|
||||||
RefreshControlLayout(webSiteId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void RefreshControlLayout(int webSiteId)
|
public void RefreshControlLayout()
|
||||||
{
|
{
|
||||||
bool hasActiveCert = false;
|
//
|
||||||
bool hasPendingCert = false;
|
bool hasactive = false;
|
||||||
//
|
bool haspending = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
SSLCertificate[] certificates = ES.Services.WebServers.GetCertificatesForSite(webSiteId);
|
var webSite = ES.Services.WebServers.GetWebSite(SiteId);
|
||||||
|
|
||||||
WebSite item = ES.Services.WebServers.GetWebSite(webSiteId);
|
// Get all certificate infos stored in database
|
||||||
|
SSLCertificate[] certificates = ES.Services.WebServers.GetCertificatesForSite(SiteId);
|
||||||
|
|
||||||
SSLNotInstalled.Visible = true;
|
// Set some default visible values, states and texts
|
||||||
//
|
tabInstalled.Visible = false;
|
||||||
|
tabInstalled.Enabled = false;
|
||||||
|
SSLNotInstalled.Visible = true;
|
||||||
|
SSLImport.Visible = false;
|
||||||
|
pnlCSR.Visible = false;
|
||||||
|
pnlShowUpload.Visible = false;
|
||||||
|
pnlInstallCertificate.Visible = false;
|
||||||
|
|
||||||
DomainInfo[] domains = ES.Services.Servers.GetDomains(PanelSecurity.PackageId);
|
btnShowpnlCSR.Attributes.Remove("OnClientClick");
|
||||||
string zoneName = string.Empty;
|
btnShowUpload.Attributes.Remove("OnClientClick");
|
||||||
foreach (DomainInfo d in domains)
|
SSLNotInstalledHeading.Text = GetLocalizedString("SSLNotInstalledHeading.Text");
|
||||||
{
|
SSLNotInstalledDescription.Text = GetLocalizedString("SSLNotInstalledDescription.Text");
|
||||||
if (d.WebSiteId == item.Id)
|
|
||||||
{
|
|
||||||
zoneName = d.ZoneName;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
BindListOfAvailableSslDomains(webSite.Name);
|
||||||
BindListOfAvailableSslDomains(item.Name, zoneName);
|
|
||||||
|
|
||||||
if (certificates.Length > 0)
|
if (certificates.Length > 0)
|
||||||
{
|
{
|
||||||
|
@ -604,16 +518,17 @@ namespace WebsitePanel.Portal
|
||||||
{
|
{
|
||||||
if (cert.Installed)
|
if (cert.Installed)
|
||||||
{
|
{
|
||||||
hasActiveCert = true;
|
hasactive = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hasPendingCert = true;
|
haspending = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasActiveCert)
|
// Web site has active certificate
|
||||||
|
if (hasactive)
|
||||||
{
|
{
|
||||||
tabInstalled.Visible = true;
|
tabInstalled.Visible = true;
|
||||||
tabInstalled.Enabled = true;
|
tabInstalled.Enabled = true;
|
||||||
|
@ -622,18 +537,19 @@ namespace WebsitePanel.Portal
|
||||||
InstalledCert = (from c in certificates
|
InstalledCert = (from c in certificates
|
||||||
where c.Installed == true
|
where c.Installed == true
|
||||||
select c).SingleOrDefault();
|
select c).SingleOrDefault();
|
||||||
|
|
||||||
TimeSpan daystoexp = DateTime.Now - InstalledCert.ExpiryDate;
|
|
||||||
|
|
||||||
BindCertificateFields();
|
|
||||||
//
|
//
|
||||||
bool certAbout2Exp = daystoexp.Days < 30
|
BindCertificateFields();
|
||||||
? lblInstalledExpiration.ForeColor == System.Drawing.Color.Red
|
// Attention please, the certificate is about to expire!
|
||||||
: lblInstalledExpiration.ForeColor == System.Drawing.Color.Black;
|
TimeSpan daystoexp = InstalledCert.ExpiryDate - DateTime.Now;
|
||||||
|
if (daystoexp.Days < 30)
|
||||||
|
{
|
||||||
|
lblInstalledExpiration.ForeColor = System.Drawing.Color.Red;
|
||||||
|
}
|
||||||
|
// Put some data to the ViewState
|
||||||
ViewState["SSLID"] = InstalledCert.id;
|
ViewState["SSLID"] = InstalledCert.id;
|
||||||
ViewState["SSLSerial"] = InstalledCert.SerialNumber;
|
ViewState["SSLSerial"] = InstalledCert.SerialNumber;
|
||||||
|
//
|
||||||
if (!hasPendingCert)
|
if (!haspending)
|
||||||
{
|
{
|
||||||
btnShowpnlCSR.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
btnShowpnlCSR.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
||||||
btnShowUpload.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
btnShowUpload.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
||||||
|
@ -642,9 +558,10 @@ namespace WebsitePanel.Portal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasPendingCert)
|
// Web site has pending certificate
|
||||||
|
if (haspending)
|
||||||
{
|
{
|
||||||
tabCSR.HeaderText = GetLocalizedString("tabPendingCertificate.HeaderText");
|
tabCSR.HeaderText = GetLocalizedString("tabPendingCertificate.HeaderText");//"Pending Certificate";
|
||||||
SSLNotInstalled.Visible = false;
|
SSLNotInstalled.Visible = false;
|
||||||
pnlInstallCertificate.Visible = true;
|
pnlInstallCertificate.Visible = true;
|
||||||
SSLCertificate pending = (from c in certificates
|
SSLCertificate pending = (from c in certificates
|
||||||
|
@ -653,12 +570,17 @@ namespace WebsitePanel.Portal
|
||||||
ViewState["CSRID"] = pending.id;
|
ViewState["CSRID"] = pending.id;
|
||||||
txtCSR.Text = pending.CSR;
|
txtCSR.Text = pending.CSR;
|
||||||
txtCSR.Attributes.Add("onfocus", "this.select();");
|
txtCSR.Attributes.Add("onfocus", "this.select();");
|
||||||
|
|
||||||
if (InstalledCert != null)
|
if (InstalledCert != null)
|
||||||
{
|
{
|
||||||
btnInstallCertificate.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
btnInstallCertificate.Attributes.Add("OnClientClick", "return confirm('" + GetLocalizedString("btnInstallConfirm.Text") + "');");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!hasactive && ES.Services.WebServers.CheckCertificate(SiteId).IsSuccess)
|
||||||
|
{
|
||||||
|
SSLNotInstalled.Visible = false;
|
||||||
|
SSLImport.Visible = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -668,7 +590,10 @@ namespace WebsitePanel.Portal
|
||||||
|
|
||||||
protected void SetCertHostnameSelection(string hostname)
|
protected void SetCertHostnameSelection(string hostname)
|
||||||
{
|
{
|
||||||
rbSiteCertificate.Checked = (rbSiteCertificate.Text == hostname);
|
if (ddlbSiteCertificate.Items.Contains(new ListItem(hostname)))
|
||||||
|
{
|
||||||
|
ddlbSiteCertificate.SelectedValue = hostname;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetCertCountrySelection(string country)
|
protected void SetCertCountrySelection(string country)
|
||||||
|
@ -701,5 +626,33 @@ namespace WebsitePanel.Portal
|
||||||
listCtl.ClearSelection();
|
listCtl.ClearSelection();
|
||||||
li.Selected = true;
|
li.Selected = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
protected void btnCancelRequest_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ResultObject result = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
result = ES.Services.WebServers.DeleteCertificateRequest(SiteId, (int)ViewState["CSRID"]);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage(WEB_SSL_DELETE, ex);
|
||||||
|
}
|
||||||
|
//
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
messageBox.ShowErrorMessage(WEB_SSL_DELETE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
SSLNotInstalled.Visible = true;
|
||||||
|
pnlCSR.Visible = false;
|
||||||
|
pnlInstallCertificate.Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnDeleteAll_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
DeleteCertificate(SiteId, new SSLCertificate());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,32 +1,4 @@
|
||||||
// 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.
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
//
|
//
|
||||||
|
@ -355,6 +327,15 @@ namespace WebsitePanel.Portal {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnImport;
|
protected global::System.Web.UI.WebControls.Button btnImport;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnDeleteAll control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Button btnDeleteAll;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// pnlCSR control.
|
/// pnlCSR control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -374,22 +355,13 @@ namespace WebsitePanel.Portal {
|
||||||
protected global::System.Web.UI.WebControls.Localize SelectCertType;
|
protected global::System.Web.UI.WebControls.Localize SelectCertType;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// rbSiteCertificate control.
|
/// ddlbSiteCertificate control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.RadioButton rbSiteCertificate;
|
protected global::System.Web.UI.WebControls.DropDownList ddlbSiteCertificate;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// rbDomainCertificate control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.RadioButton rbDomainCertificate;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// sslBitLength control.
|
/// sslBitLength control.
|
||||||
|
@ -678,5 +650,14 @@ namespace WebsitePanel.Portal {
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnInstallCertificate;
|
protected global::System.Web.UI.WebControls.Button btnInstallCertificate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnCancelRequest control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Button btnCancelRequest;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue