Significant amount of changes to hosted organizations and exchange:

Exchange 2010 SP2 provisioning separated through a new provider
Exchange 2010 SP2 now compliant with product group guidelines
Support for Database Availability Group
Fixed Distribution List view scope to only tenant
Consumer support (individual mailboxes as hotmail) added
Mailbox configuration moved to mailbox plans concept
CN creation is now based on UPN
sAMAccountName generation revised and decoupled from tenant name
2007 (ACL Based), 2010 (ACL Bases), 2010 SP2 (ABP) supported
Automated Hosted Organization provisioning added to create hosting space
Enterprise Server webservice extended with ImportMethod
Mobile tab fixed
Added more information to users listview
This commit is contained in:
robvde 2012-07-09 12:03:24 +04:00
parent 2f8a580846
commit 50f2c43315
194 changed files with 12994 additions and 9755 deletions

View file

@ -29,7 +29,7 @@ CREATE TABLE [dbo].[ExchangeAccounts](
[AccountID] [int] IDENTITY(1,1) NOT NULL, [AccountID] [int] IDENTITY(1,1) NOT NULL,
[ItemID] [int] NOT NULL, [ItemID] [int] NOT NULL,
[AccountType] [int] NOT NULL, [AccountType] [int] NOT NULL,
[AccountName] [nvarchar](20) COLLATE Latin1_General_CI_AS NOT NULL, [AccountName] [nvarchar](300) COLLATE Latin1_General_CI_AS NOT NULL,
[DisplayName] [nvarchar](300) COLLATE Latin1_General_CI_AS NOT NULL, [DisplayName] [nvarchar](300) COLLATE Latin1_General_CI_AS NOT NULL,
[PrimaryEmailAddress] [nvarchar](300) COLLATE Latin1_General_CI_AS NULL, [PrimaryEmailAddress] [nvarchar](300) COLLATE Latin1_General_CI_AS NULL,
[MailEnabledPublicFolder] [bit] NULL, [MailEnabledPublicFolder] [bit] NULL,
@ -37,6 +37,8 @@ CREATE TABLE [dbo].[ExchangeAccounts](
[SamAccountName] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL, [SamAccountName] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[AccountPassword] [nvarchar](200) COLLATE Latin1_General_CI_AS NULL, [AccountPassword] [nvarchar](200) COLLATE Latin1_General_CI_AS NULL,
[CreatedDate] [datetime] NOT NULL, [CreatedDate] [datetime] NOT NULL,
[MailboxPlanId] [int] NULL,
[SubscriberNumber] [nvarchar] (32) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_ExchangeAccounts] PRIMARY KEY CLUSTERED CONSTRAINT [PK_ExchangeAccounts] PRIMARY KEY CLUSTERED
( (
[AccountID] ASC [AccountID] ASC
@ -54,6 +56,32 @@ SET QUOTED_IDENTIFIER ON
GO GO
CREATE TABLE [dbo].[ExchangeMailboxPlans](
[MailboxPlanId] [int] IDENTITY(1,1) NOT NULL,
[ItemID] [int] NOT NULL,
[MailboxPlan] [nvarchar](300) COLLATE Latin1_General_CI_AS NOT NULL,
[EnableActiveSync] [bit] NOT NULL,
[EnableIMAP] [bit] NOT NULL,
[EnableMAPI] [bit] NOT NULL,
[EnableOWA] [bit] NOT NULL,
[EnablePOP] [bit] NOT NULL,
[IsDefault] [bit] NOT NULL,
[IssueWarningPct] [int] NOT NULL,
[KeepDeletedItemsDays] [int] NOT NULL,
[MailboxSizeMB] [int] NOT NULL,
[MaxReceiveMessageSizeKB] [int] NOT NULL,
[MaxRecipients] [int] NOT NULL,
[MaxSendMessageSizeKB] [int] NOT NULL,
[ProhibitSendPct] [int] NOT NULL,
[ProhibitSendReceivePct] [int] NOT NULL,
[HideFromAddressBook] [bit] NOT NULL,
CONSTRAINT [PK_ExchangeMailboxPlans] PRIMARY KEY CLUSTERED
(
[MailboxPlanId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
@ -80,7 +108,8 @@ SELECT
AccountName, AccountName,
DisplayName, DisplayName,
PrimaryEmailAddress, PrimaryEmailAddress,
MailEnabledPublicFolder MailEnabledPublicFolder,
SubscriberNumber
FROM FROM
ExchangeAccounts ExchangeAccounts
WHERE WHERE
@ -109,6 +138,7 @@ END
GO GO
@ -150,21 +180,71 @@ CREATE PROCEDURE [dbo].[GetExchangeAccounts]
) )
AS AS
SELECT SELECT
AccountID, E.AccountID,
ItemID, E.ItemID,
AccountType, E.AccountType,
AccountName, E.AccountName,
DisplayName, E.DisplayName,
PrimaryEmailAddress, E.PrimaryEmailAddress,
MailEnabledPublicFolder E.MailEnabledPublicFolder,
E.MailboxPlanId,
P.MailboxPlan,
E.SubscriberNumber
FROM FROM
ExchangeAccounts ExchangeAccounts AS E
INNER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
WHERE WHERE
ItemID = @ItemID AND E.ItemID = @ItemID AND
(AccountType = @AccountType OR @AccountType IS NULL) (E.AccountType = @AccountType OR @AccountType IS NULL)
ORDER BY DisplayName ORDER BY DisplayName
RETURN RETURN
GO
CREATE PROCEDURE [dbo].[GetExchangeAccountByAccountName]
(
@ItemID int,
@AccountName nvarchar(300)
)
AS
SELECT
E.AccountID,
E.ItemID,
E.AccountType,
E.AccountName,
E.DisplayName,
E.PrimaryEmailAddress,
E.MailEnabledPublicFolder,
E.MailboxManagerActions,
E.SamAccountName,
E.AccountPassword,
E.MailboxPlanId,
P.MailboxPlan,
E.SubscriberNumber
FROM
ExchangeAccounts AS E
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
WHERE
E.ItemID = @ItemID AND
E.AccountName = @AccountName
RETURN
@ -231,21 +311,25 @@ CREATE PROCEDURE [dbo].[GetExchangeAccount]
) )
AS AS
SELECT SELECT
AccountID, E.AccountID,
ItemID, E.ItemID,
AccountType, E.AccountType,
AccountName, E.AccountName,
DisplayName, E.DisplayName,
PrimaryEmailAddress, E.PrimaryEmailAddress,
MailEnabledPublicFolder, E.MailEnabledPublicFolder,
MailboxManagerActions, E.MailboxManagerActions,
SamAccountName, E.SamAccountName,
AccountPassword E.AccountPassword,
E.MailboxPlanId,
P.MailboxPlan,
E.SubscriberNumber
FROM FROM
ExchangeAccounts ExchangeAccounts AS E
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
WHERE WHERE
ItemID = @ItemID AND E.ItemID = @ItemID AND
AccountID = @AccountID E.AccountID = @AccountID
RETURN RETURN
@ -311,14 +395,14 @@ GO
CREATE PROCEDURE ExchangeAccountExists CREATE PROCEDURE [dbo].[ExchangeAccountExists]
( (
@AccountName nvarchar(20), @AccountName nvarchar(20),
@Exists bit OUTPUT @Exists bit OUTPUT
) )
AS AS
SET @Exists = 0 SET @Exists = 0
IF EXISTS(SELECT * FROM ExchangeAccounts WHERE AccountName = @AccountName) IF EXISTS(SELECT * FROM ExchangeAccounts WHERE sAMAccountName LIKE '%\'+@AccountName)
BEGIN BEGIN
SET @Exists = 1 SET @Exists = 1
END END
@ -352,6 +436,10 @@ RETURN
@ -936,7 +1024,7 @@ GO
CREATE PROCEDURE SearchExchangeAccounts CREATE PROCEDURE [dbo].[SearchExchangeAccounts]
( (
@ActorID int, @ActorID int,
@ItemID int, @ItemID int,
@ -986,7 +1074,8 @@ SELECT
EA.AccountName, EA.AccountName,
EA.DisplayName, EA.DisplayName,
EA.PrimaryEmailAddress, EA.PrimaryEmailAddress,
EA.MailEnabledPublicFolder EA.MailEnabledPublicFolder,
EA.SubscriberNumber
FROM ExchangeAccounts AS EA FROM ExchangeAccounts AS EA
WHERE ' + @condition WHERE ' + @condition
@ -1026,6 +1115,7 @@ RETURN
GO GO
@ -1080,6 +1170,10 @@ END
IF @SortColumn IS NULL OR @SortColumn = '' IF @SortColumn IS NULL OR @SortColumn = ''
SET @SortColumn = 'EA.DisplayName ASC' SET @SortColumn = 'EA.DisplayName ASC'
DECLARE @joincondition nvarchar(700)
SET @joincondition = ',P.MailboxPlan FROM ExchangeAccounts AS EA
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON EA.MailboxPlanId = P.MailboxPlanId'
DECLARE @sql nvarchar(3500) DECLARE @sql nvarchar(3500)
set @sql = ' set @sql = '
@ -1094,9 +1188,10 @@ WITH Accounts AS (
EA.AccountName, EA.AccountName,
EA.DisplayName, EA.DisplayName,
EA.PrimaryEmailAddress, EA.PrimaryEmailAddress,
EA.MailEnabledPublicFolder EA.MailEnabledPublicFolder,
FROM ExchangeAccounts AS EA EA.MailboxPlanId,
WHERE ' + @condition + ' EA.SubscriberNumber ' + @joincondition +
' WHERE ' + @condition + '
) )
SELECT * FROM Accounts SELECT * FROM Accounts
@ -1118,6 +1213,7 @@ RETURN
GO GO
SET ANSI_NULLS ON SET ANSI_NULLS ON
GO GO
@ -1407,13 +1503,15 @@ CREATE PROCEDURE [dbo].[AddExchangeAccount]
@AccountID int OUTPUT, @AccountID int OUTPUT,
@ItemID int, @ItemID int,
@AccountType int, @AccountType int,
@AccountName nvarchar(20), @AccountName nvarchar(300),
@DisplayName nvarchar(300), @DisplayName nvarchar(300),
@PrimaryEmailAddress nvarchar(300), @PrimaryEmailAddress nvarchar(300),
@MailEnabledPublicFolder bit, @MailEnabledPublicFolder bit,
@MailboxManagerActions varchar(200), @MailboxManagerActions varchar(200),
@SamAccountName nvarchar(100), @SamAccountName nvarchar(100),
@AccountPassword nvarchar(200) @AccountPassword nvarchar(200),
@MailboxPlanId int,
@SubscriberNumber nvarchar(32)
) )
AS AS
@ -1427,7 +1525,9 @@ INSERT INTO ExchangeAccounts
MailEnabledPublicFolder, MailEnabledPublicFolder,
MailboxManagerActions, MailboxManagerActions,
SamAccountName, SamAccountName,
AccountPassword AccountPassword,
MailboxPlanId,
SubscriberNumber
) )
VALUES VALUES
( (
@ -1439,7 +1539,9 @@ VALUES
@MailEnabledPublicFolder, @MailEnabledPublicFolder,
@MailboxManagerActions, @MailboxManagerActions,
@SamAccountName, @SamAccountName,
@AccountPassword @AccountPassword,
@MailboxPlanId,
@SubscriberNumber
) )
SET @AccountID = SCOPE_IDENTITY() SET @AccountID = SCOPE_IDENTITY()
@ -1475,6 +1577,7 @@ RETURN
GO GO
@ -3538,9 +3641,9 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (75, 1, 8, N'OS.ExtraApplications', N'Extra Application Packs', 1, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (75, 1, 8, N'OS.ExtraApplications', N'Extra Application Packs', 1, 0, NULL)
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (77, 12, 2, N'Exchange2007.DiskSpace', N'Organization Disk Space, MB', 3, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (77, 12, 2, N'Exchange2007.DiskSpace', N'Organization Disk Space, MB', 21, 0, NULL)
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (78, 12, 3, N'Exchange2007.Mailboxes', N'Mailboxes per Organization', 3, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (78, 12, 3, N'Exchange2007.Mailboxes', N'Mailboxes per Organization', 2, 0, NULL)
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (79, 12, 4, N'Exchange2007.Contacts', N'Contacts per Organization', 3, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (79, 12, 4, N'Exchange2007.Contacts', N'Contacts per Organization', 3, 0, NULL)
GO GO
@ -3560,16 +3663,6 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (88, 12, 8, N'Exchange2007.MailEnabledPublicFolders', N'Mail Enabled Public Folders Allowed', 1, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (88, 12, 8, N'Exchange2007.MailEnabledPublicFolders', N'Mail Enabled Public Folders Allowed', 1, 0, NULL)
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (89, 12, 10, N'Exchange2007.POP3Enabled', N'POP3 Enabled by default', 1, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (90, 12, 12, N'Exchange2007.IMAPEnabled', N'IMAP Enabled by default', 1, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (91, 12, 14, N'Exchange2007.OWAEnabled', N'OWA Enabled by default', 1, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (92, 12, 16, N'Exchange2007.MAPIEnabled', N'MAPI Enabled by default', 1, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (93, 12, 18, N'Exchange2007.ActiveSyncEnabled', N'ActiveSync Enabled by default', 1, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (94, 2, 17, N'Web.ColdFusion', N'ColdFusion', 1, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (94, 2, 17, N'Web.ColdFusion', N'ColdFusion', 1, 0, NULL)
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (95, 2, 1, N'Web.WebAppGallery', N'Web Application Gallery', 1, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (95, 2, 1, N'Web.WebAppGallery', N'Web Application Gallery', 1, 0, NULL)
@ -3602,7 +3695,7 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (205, 13, 1, N'HostedSolution.Organizations', N'Organizations', 2, 0, 29) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (205, 13, 1, N'HostedSolution.Organizations', N'Organizations', 2, 0, 29)
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (206, 13, 2, N'HostedSolution.Users', N'Users', 3, 0, 30) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (206, 13, 2, N'HostedSolution.Users', N'Users', 2, 0, 30)
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (207, 13, 3, N'HostedSolution.Domains', N'Domains per Organizations', 3, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (207, 13, 3, N'HostedSolution.Domains', N'Domains per Organizations', 3, 0, NULL)
GO GO
@ -3748,6 +3841,16 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (363, 40, 12, N'VPSForPC.Bandwidth', N'Monthly bandwidth, GB', 2, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (363, 40, 12, N'VPSForPC.Bandwidth', N'Monthly bandwidth, GB', 2, 0, NULL)
GO GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (364, 12, 19, N'Exchange2007.KeepDeletedItemsDays', N'Keep Deleted Items (days)', 3, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (365, 12, 20, N'Exchange2007.MaxRecipients', N'Maximum Recipients', 3, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (366, 12, 21, N'Exchange2007.MaxSendMessageSizeKB', N'Maximum Send Message Size (Kb)', 3, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (367, 12, 22, N'Exchange2007.MaxReceiveMessageSizeKB', N'Maximum Receive Message Size (Kb)', 3, 0, NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (368, 12, 1, N'Exchange2007.IsConsumer',N'Is Consumer Organization',1, 0 , NULL)
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (400, 20, 3, N'HostedSharePoint.UseSharedSSL', N'Use shared SSL Root', 1, 0, NULL) INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (400, 20, 3, N'HostedSharePoint.UseSharedSSL', N'Use shared SSL Root', 1, 0, NULL)
GO GO
@ -5866,7 +5969,7 @@ SET QUOTED_IDENTIFIER ON
GO GO
CREATE TABLE [dbo].[ExchangeOrganizations]( CREATE TABLE [dbo].[ExchangeOrganizations](
[ItemID] [int] NOT NULL, [ItemID] [int] NOT NULL,
[OrganizationID] [nvarchar](10) COLLATE Latin1_General_CI_AS NOT NULL, [OrganizationID] [nvarchar](128) COLLATE Latin1_General_CI_AS NOT NULL,
CONSTRAINT [PK_ExchangeOrganizations] PRIMARY KEY CLUSTERED CONSTRAINT [PK_ExchangeOrganizations] PRIMARY KEY CLUSTERED
( (
[ItemID] ASC [ItemID] ASC
@ -5980,8 +6083,10 @@ CREATE PROCEDURE DeleteExchangeOrganization
@ItemID int @ItemID int
) )
AS AS
DELETE FROM ExchangeOrganizations BEGIN TRAN
WHERE ItemID = @ItemID DELETE FROM ExchangeMailboxPlans WHERE ItemID = @ItemID
DELETE FROM ExchangeOrganizations WHERE ItemID = @ItemID
COMMIT TRAN
RETURN RETURN
@ -6053,7 +6158,7 @@ GO
CREATE PROCEDURE AddExchangeOrganization CREATE PROCEDURE AddExchangeOrganization
( (
@ItemID int, @ItemID int,
@OrganizationID nvarchar(10) @OrganizationID nvarchar(128)
) )
AS AS
@ -6241,7 +6346,8 @@ SELECT
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 2 AND ItemID = @ItemID) AS CreatedContacts, (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 = 3 AND ItemID = @ItemID) AS CreatedDistributionLists,
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders, (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders,
(SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains (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
RETURN RETURN
@ -6272,7 +6378,6 @@ RETURN
GO GO
@ -6611,18 +6716,26 @@ GO
CREATE PROCEDURE [dbo].[UpdateExchangeAccount] CREATE PROCEDURE [dbo].[UpdateExchangeAccount]
( (
@AccountID int, @AccountID int,
@AccountName nvarchar(20), @AccountName nvarchar(300),
@DisplayName nvarchar(300), @DisplayName nvarchar(300),
@PrimaryEmailAddress nvarchar(300), @PrimaryEmailAddress nvarchar(300),
@AccountType int, @AccountType int,
@SamAccountName nvarchar(100), @SamAccountName nvarchar(100),
@MailEnabledPublicFolder bit, @MailEnabledPublicFolder bit,
@MailboxManagerActions varchar(200), @MailboxManagerActions varchar(200),
@Password varchar(200) @Password varchar(200),
@MailboxPlanId int,
@SubscriberNumber varchar(32)
) )
AS AS
BEGIN TRAN BEGIN TRAN
IF (@MailboxPlanId = -1)
BEGIN
SET @MailboxPlanId = NULL
END
UPDATE ExchangeAccounts SET UPDATE ExchangeAccounts SET
AccountName = @AccountName, AccountName = @AccountName,
DisplayName = @DisplayName, DisplayName = @DisplayName,
@ -6630,7 +6743,9 @@ UPDATE ExchangeAccounts SET
MailEnabledPublicFolder = @MailEnabledPublicFolder, MailEnabledPublicFolder = @MailEnabledPublicFolder,
MailboxManagerActions = @MailboxManagerActions, MailboxManagerActions = @MailboxManagerActions,
AccountType =@AccountType, AccountType =@AccountType,
SamAccountName = @SamAccountName SamAccountName = @SamAccountName,
MailboxPlanId = @MailboxPlanId,
SubscriberNumber = @SubscriberNumber
WHERE WHERE
AccountID = @AccountID AccountID = @AccountID
@ -6667,6 +6782,10 @@ RETURN
GO GO
@ -8899,7 +9018,8 @@ SELECT
EA.AccountType, EA.AccountType,
EA.AccountName, EA.AccountName,
EA.DisplayName, EA.DisplayName,
EA.PrimaryEmailAddress EA.PrimaryEmailAddress,
EA.SubscriberNumber
FROM ExchangeAccounts AS EA FROM ExchangeAccounts AS EA
WHERE ' + @condition WHERE ' + @condition
@ -8936,6 +9056,8 @@ RETURN
@ -20551,7 +20673,7 @@ GO
CREATE PROCEDURE GetPackages CREATE PROCEDURE [dbo].[GetPackages]
( (
@ActorID int, @ActorID int,
@UserID int @UserID int
@ -20590,8 +20712,7 @@ INNER JOIN Users AS U ON P.UserID = U.UserID
INNER JOIN Servers AS S ON P.ServerID = S.ServerID INNER JOIN Servers AS S ON P.ServerID = S.ServerID
INNER JOIN HostingPlans AS HP ON P.PlanID = HP.PlanID INNER JOIN HostingPlans AS HP ON P.PlanID = HP.PlanID
WHERE WHERE
P.UserID <> @UserID P.UserID = @UserID
AND dbo.CheckUserParent(@UserID, P.UserID) = 1
RETURN RETURN
@ -23257,6 +23378,8 @@ INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName]
GO GO
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (400, 40, N'HyperVForPC', N'Microsoft Hyper-V For Private Cloud', N'WebsitePanel.Providers.VirtualizationForPC.HyperVForPC, WebsitePanel.Providers.VirtualizationForPC.HyperVForPC', N'HyperVForPrivateCloud', 1) INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (400, 40, N'HyperVForPC', N'Microsoft Hyper-V For Private Cloud', N'WebsitePanel.Providers.VirtualizationForPC.HyperVForPC, WebsitePanel.Providers.VirtualizationForPC.HyperVForPC', N'HyperVForPrivateCloud', 1)
GO GO
INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES(90, 12, N'Exchange2010SP2', N'Hosted Microsoft Exchange Server 2010 SP2', N'WebsitePanel.Providers.HostedSolution.Exchange2010SP2, WebsitePanel.Providers.HostedSolution', N'Exchange', 1)
GO
SET ANSI_NULLS ON SET ANSI_NULLS ON
GO GO
SET QUOTED_IDENTIFIER ON SET QUOTED_IDENTIFIER ON
@ -25738,21 +25861,27 @@ AS
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3) WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
ELSE IF @QuotaID = 319 -- BB Users ELSE IF @QuotaID = 319 -- BB Users
SET @Result = (SELECT COUNT(ea.AccountID) SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
FROM INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID
ExchangeAccounts ea INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
BlackBerryUsers bu WHERE pt.ParentPackageID = @PackageID)
ON ELSE IF @QuotaID = 206 -- HostedSolution.Users
ea.AccountID = bu.AccountID SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
INNER JOIN INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
ServiceItems si INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
ON WHERE pt.ParentPackageID = @PackageID AND ea.AccountType IN (1,5,6,7))
ea.ItemID = si.ItemID ELSE IF @QuotaID = 78 -- Exchange2007.Mailboxes
INNER JOIN SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
PackagesTreeCache pt ON si.PackageID = pt.PackageID INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
WHERE INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
pt.ParentPackageID = @PackageID) WHERE pt.ParentPackageID = @PackageID AND ea.MailboxPlanId IS NOT NULL)
ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace
SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
ELSE ELSE
SET @Result = (SELECT COUNT(SI.ItemID) FROM Quotas AS Q SET @Result = (SELECT COUNT(SI.ItemID) FROM Quotas AS Q
INNER JOIN ServiceItems AS SI ON SI.ItemTypeID = Q.ItemTypeID INNER JOIN ServiceItems AS SI ON SI.ItemTypeID = Q.ItemTypeID
@ -25761,14 +25890,10 @@ AS
RETURN @Result RETURN @Result
END END
GO
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
@ -44451,6 +44576,7 @@ EXEC sp_xml_removedocument @idoc
COMMIT TRAN COMMIT TRAN
RETURN RETURN
GO
@ -44473,27 +44599,280 @@ RETURN
CREATE PROCEDURE [dbo].[AddExchangeMailboxPlan]
(
@MailboxPlanId int OUTPUT,
@ItemID int,
@MailboxPlan nvarchar(300),
@EnableActiveSync bit,
@EnableIMAP bit,
@EnableMAPI bit,
@EnableOWA bit,
@EnablePOP bit,
@IsDefault bit,
@IssueWarningPct int,
@KeepDeletedItemsDays int,
@MailboxSizeMB int,
@MaxReceiveMessageSizeKB int,
@MaxRecipients int,
@MaxSendMessageSizeKB int,
@ProhibitSendPct int,
@ProhibitSendReceivePct int ,
@HideFromAddressBook bit
)
AS
INSERT INTO ExchangeMailboxPlans
(
ItemID,
MailboxPlan,
EnableActiveSync,
EnableIMAP,
EnableMAPI,
EnableOWA,
EnablePOP,
IsDefault,
IssueWarningPct,
KeepDeletedItemsDays,
MailboxSizeMB,
MaxReceiveMessageSizeKB,
MaxRecipients,
MaxSendMessageSizeKB,
ProhibitSendPct,
ProhibitSendReceivePct,
HideFromAddressBook
)
VALUES
(
@ItemID,
@MailboxPlan,
@EnableActiveSync,
@EnableIMAP,
@EnableMAPI,
@EnableOWA,
@EnablePOP,
@IsDefault,
@IssueWarningPct,
@KeepDeletedItemsDays,
@MailboxSizeMB,
@MaxReceiveMessageSizeKB,
@MaxRecipients,
@MaxSendMessageSizeKB,
@ProhibitSendPct,
@ProhibitSendReceivePct,
@HideFromAddressBook
)
SET @MailboxPlanId = SCOPE_IDENTITY()
RETURN
GO GO
CREATE PROCEDURE [dbo].[SetExchangeAccountMailboxplan]
(
@AccountID int,
@MailboxPlanId int
)
AS
UPDATE ExchangeAccounts SET
MailboxPlanId = @MailboxPlanId
WHERE
AccountID = @AccountID
RETURN
GO
CREATE PROCEDURE [dbo].[SetOrganizationDefaultExchangeMailboxPlan]
(
@ItemId int,
@MailboxPlanId int
)
AS
UPDATE ExchangeMailboxPlans SET IsDefault=0 WHERE ItemId=@ItemId
UPDATE ExchangeMailboxPlans SET IsDefault=1 WHERE MailboxPlanId=@MailboxPlanId
RETURN
GO
CREATE PROCEDURE [dbo].[GetExchangeMailboxPlan]
(
@MailboxPlanId int
)
AS
SELECT
MailboxPlanId,
ItemID,
MailboxPlan,
EnableActiveSync,
EnableIMAP,
EnableMAPI,
EnableOWA,
EnablePOP,
IsDefault,
IssueWarningPct,
KeepDeletedItemsDays,
MailboxSizeMB,
MaxReceiveMessageSizeKB,
MaxRecipients,
MaxSendMessageSizeKB,
ProhibitSendPct,
ProhibitSendReceivePct,
HideFromAddressBook
FROM
ExchangeMailboxPlans
WHERE
MailboxPlanId = @MailboxPlanId
RETURN
GO
CREATE PROCEDURE [dbo].[GetExchangeMailboxPlans]
(
@ItemID int
)
AS
SELECT
MailboxPlanId,
ItemID,
MailboxPlan,
EnableActiveSync,
EnableIMAP,
EnableMAPI,
EnableOWA,
EnablePOP,
IsDefault,
IssueWarningPct,
KeepDeletedItemsDays,
MailboxSizeMB,
MaxReceiveMessageSizeKB,
MaxRecipients,
MaxSendMessageSizeKB,
ProhibitSendPct,
ProhibitSendReceivePct,
HideFromAddressBook
FROM
ExchangeMailboxPlans
WHERE
ItemID = @ItemID
ORDER BY MailboxPlan
RETURN
GO
CREATE PROCEDURE [dbo].[DeleteExchangeMailboxPlan]
(
@MailboxPlanId int
)
AS
-- delete mailboxplan
DELETE FROM ExchangeMailboxPlans
WHERE MailboxPlanId = @MailboxPlanId
RETURN
GO
ALTER TABLE [dbo].[ScheduleParameters] WITH CHECK ADD CONSTRAINT [FK_ScheduleParameters_Schedule] FOREIGN KEY([ScheduleID]) ALTER TABLE [dbo].[ScheduleParameters] WITH CHECK ADD CONSTRAINT [FK_ScheduleParameters_Schedule] FOREIGN KEY([ScheduleID])
REFERENCES [dbo].[Schedule] ([ScheduleID]) REFERENCES [dbo].[Schedule] ([ScheduleID])
ON DELETE CASCADE ON DELETE CASCADE
GO GO
ALTER TABLE [dbo].[ScheduleParameters] CHECK CONSTRAINT [FK_ScheduleParameters_Schedule] ALTER TABLE [dbo].[ScheduleParameters] CHECK CONSTRAINT [FK_ScheduleParameters_Schedule]
GO GO
ALTER TABLE dbo.ExchangeMailboxPlans ADD CONSTRAINT
IX_ExchangeMailboxPlans UNIQUE NONCLUSTERED
(
MailboxPlanId
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.ExchangeMailboxPlans ADD CONSTRAINT
FK_ExchangeMailboxPlans_ExchangeOrganizations FOREIGN KEY
(
ItemID
) REFERENCES dbo.ExchangeOrganizations
(
ItemID
) ON UPDATE NO ACTION
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ExchangeAccounts] WITH CHECK ADD CONSTRAINT [FK_ExchangeAccounts_ExchangeMailboxPlans] FOREIGN KEY([MailboxPlanId])
REFERENCES [dbo].[ExchangeMailboxPlans] ([MailboxPlanId])
GO
ALTER TABLE [dbo].[ExchangeAccounts] CHECK CONSTRAINT [FK_ExchangeAccounts_ExchangeMailboxPlans]
GO
ALTER TABLE [dbo].[ExchangeAccounts] WITH CHECK ADD CONSTRAINT [FK_ExchangeAccounts_ServiceItems] FOREIGN KEY([ItemID]) ALTER TABLE [dbo].[ExchangeAccounts] WITH CHECK ADD CONSTRAINT [FK_ExchangeAccounts_ServiceItems] FOREIGN KEY([ItemID])
REFERENCES [dbo].[ServiceItems] ([ItemID]) REFERENCES [dbo].[ServiceItems] ([ItemID])
ON DELETE CASCADE ON DELETE CASCADE
@ -44713,6 +45092,12 @@ ON DELETE CASCADE
GO GO
ALTER TABLE [dbo].[ExchangeOrganizations] CHECK CONSTRAINT [FK_ExchangeOrganizations_ServiceItems] ALTER TABLE [dbo].[ExchangeOrganizations] CHECK CONSTRAINT [FK_ExchangeOrganizations_ServiceItems]
GO GO
ALTER TABLE [dbo].[ExchangeOrganizations] WITH CHECK ADD CONSTRAINT [FK_ExchangeOrganizations_ExchangeMailboxPlans] FOREIGN KEY([ItemID])
REFERENCES [dbo].[ExchangeMailboxPlans] ([ItemID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ExchangeOrganizations] CHECK CONSTRAINT [FK_ExchangeOrganizations_ExchangeMailboxPlans]
GO
ALTER TABLE [dbo].[ExchangeOrganizationDomains] WITH CHECK ADD CONSTRAINT [FK_ExchangeOrganizationDomains_ServiceItems] FOREIGN KEY([ItemID]) ALTER TABLE [dbo].[ExchangeOrganizationDomains] WITH CHECK ADD CONSTRAINT [FK_ExchangeOrganizationDomains_ServiceItems] FOREIGN KEY([ItemID])
REFERENCES [dbo].[ServiceItems] ([ItemID]) REFERENCES [dbo].[ServiceItems] ([ItemID])
ON DELETE CASCADE ON DELETE CASCADE
@ -45117,4 +45502,5 @@ ON DELETE CASCADE
GO GO
ALTER TABLE [dbo].[ServiceProperties] CHECK CONSTRAINT [FK_ServiceProperties_Services] ALTER TABLE [dbo].[ServiceProperties] CHECK CONSTRAINT [FK_ServiceProperties_Services]
GO GO
 

File diff suppressed because it is too large Load diff

View file

@ -105,6 +105,11 @@ order by rg.groupOrder
public const string EXCHANGE2007_OWAENABLED = "Exchange2007.OWAEnabled"; // OWA Enabled by default public const string EXCHANGE2007_OWAENABLED = "Exchange2007.OWAEnabled"; // OWA Enabled by default
public const string EXCHANGE2007_MAPIENABLED = "Exchange2007.MAPIEnabled"; // MAPI Enabled by default public const string EXCHANGE2007_MAPIENABLED = "Exchange2007.MAPIEnabled"; // MAPI Enabled by default
public const string EXCHANGE2007_ACTIVESYNCENABLED = "Exchange2007.ActiveSyncEnabled"; // ActiveSync Enabled by default public const string EXCHANGE2007_ACTIVESYNCENABLED = "Exchange2007.ActiveSyncEnabled"; // ActiveSync Enabled by default
public const string EXCHANGE2007_KEEPDELETEDITEMSDAYS = "Exchange2007.KeepDeletedItemsDays"; // Keep deleted items
public const string EXCHANGE2007_MAXRECIPIENTS = "Exchange2007.MaxRecipients"; // Max Recipients
public const string EXCHANGE2007_MAXSENDMESSAGESIZEKB = "Exchange2007.MaxSendMessageSizeKB"; // Max Send Message Size
public const string EXCHANGE2007_MAXRECEIVEMESSAGESIZEKB = "Exchange2007.MaxReceiveMessageSizeKB"; // Max Receive Message Size
public const string EXCHANGE2007_ISCONSUMER = "Exchange2007.IsConsumer"; // Is Consumer Organization
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

View file

@ -2065,33 +2065,36 @@ namespace WebsitePanel.EnterpriseServer
#endregion #endregion
#region Exchange Server #region Exchange Server
public static int AddExchangeAccount(int itemId, int accountType, string accountName,
public static int AddExchangeAccount(int itemId, int accountType, string accountName,
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, string subscriberNumber)
{ {
SqlParameter outParam = new SqlParameter("@AccountID", SqlDbType.Int); SqlParameter outParam = new SqlParameter("@AccountID", SqlDbType.Int);
outParam.Direction = ParameterDirection.Output; outParam.Direction = ParameterDirection.Output;
SqlHelper.ExecuteNonQuery( SqlHelper.ExecuteNonQuery(
ConnectionString, ConnectionString,
CommandType.StoredProcedure, CommandType.StoredProcedure,
"AddExchangeAccount", "AddExchangeAccount",
outParam, outParam,
new SqlParameter("@ItemID", itemId), new SqlParameter("@ItemID", itemId),
new SqlParameter("@AccountType", accountType), new SqlParameter("@AccountType", accountType),
new SqlParameter("@AccountName", accountName), new SqlParameter("@AccountName", accountName),
new SqlParameter("@DisplayName", displayName), new SqlParameter("@DisplayName", displayName),
new SqlParameter("@PrimaryEmailAddress", primaryEmailAddress), new SqlParameter("@PrimaryEmailAddress", primaryEmailAddress),
new SqlParameter("@MailEnabledPublicFolder", mailEnabledPublicFolder), new SqlParameter("@MailEnabledPublicFolder", mailEnabledPublicFolder),
new SqlParameter("@MailboxManagerActions", mailboxManagerActions), new SqlParameter("@MailboxManagerActions", mailboxManagerActions),
new SqlParameter("@SamAccountName", samAccountName), new SqlParameter("@SamAccountName", samAccountName),
new SqlParameter("@AccountPassword", accountPassword) new SqlParameter("@AccountPassword", accountPassword),
); new SqlParameter("@MailboxPlanId", (mailboxPlanId == 0) ? (object)DBNull.Value : (object)mailboxPlanId),
new SqlParameter("@SubscriberNumber", (string.IsNullOrEmpty(subscriberNumber) ? (object)DBNull.Value : (object)subscriberNumber))
);
return Convert.ToInt32(outParam.Value);
}
return Convert.ToInt32(outParam.Value);
}
public static void AddExchangeAccountEmailAddress(int accountId, string emailAddress) public static void AddExchangeAccountEmailAddress(int accountId, string emailAddress)
{ {
@ -2159,6 +2162,7 @@ namespace WebsitePanel.EnterpriseServer
); );
} }
public static void DeleteExchangeAccountEmailAddress(int accountId, string emailAddress) public static void DeleteExchangeAccountEmailAddress(int accountId, string emailAddress)
{ {
SqlHelper.ExecuteNonQuery( SqlHelper.ExecuteNonQuery(
@ -2255,26 +2259,27 @@ namespace WebsitePanel.EnterpriseServer
return Convert.ToBoolean(outParam.Value); return Convert.ToBoolean(outParam.Value);
} }
public static void UpdateExchangeAccount(int accountId, string accountName, ExchangeAccountType accountType, public 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, string subscriberNumber)
{ {
SqlHelper.ExecuteNonQuery( SqlHelper.ExecuteNonQuery(
ConnectionString, ConnectionString,
CommandType.StoredProcedure, CommandType.StoredProcedure,
"UpdateExchangeAccount", "UpdateExchangeAccount",
new SqlParameter("@AccountID", accountId), new SqlParameter("@AccountID", accountId),
new SqlParameter("@AccountName", accountName), new SqlParameter("@AccountName", accountName),
new SqlParameter("@DisplayName", displayName), new SqlParameter("@DisplayName", displayName),
new SqlParameter("@AccountType", (int)accountType), new SqlParameter("@AccountType", (int)accountType),
new SqlParameter("@PrimaryEmailAddress", primaryEmailAddress), new SqlParameter("@PrimaryEmailAddress", primaryEmailAddress),
new SqlParameter("@MailEnabledPublicFolder", mailEnabledPublicFolder), new SqlParameter("@MailEnabledPublicFolder", mailEnabledPublicFolder),
new SqlParameter("@MailboxManagerActions", mailboxManagerActions), new SqlParameter("@MailboxManagerActions", mailboxManagerActions),
new SqlParameter("@Password", string.IsNullOrEmpty(accountPassword) ? (object)DBNull.Value : (object)accountPassword), new SqlParameter("@Password", string.IsNullOrEmpty(accountPassword) ? (object)DBNull.Value : (object)accountPassword),
new SqlParameter("@SamAccountName", samAccountName) new SqlParameter("@SamAccountName", samAccountName),
new SqlParameter("@MailboxPlanId", (mailboxPlanId == 0) ? (object)DBNull.Value : (object)mailboxPlanId),
); new SqlParameter("@SubscriberNumber", (string.IsNullOrEmpty(subscriberNumber) ? (object)DBNull.Value : (object)subscriberNumber))
} );
}
public static IDataReader GetExchangeAccount(int itemId, int accountId) public static IDataReader GetExchangeAccount(int itemId, int accountId)
{ {
@ -2287,6 +2292,17 @@ namespace WebsitePanel.EnterpriseServer
); );
} }
public static IDataReader GetExchangeAccountByAccountName(int itemId, string accountName)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetExchangeAccountByAccountName",
new SqlParameter("@ItemID", itemId),
new SqlParameter("@AccountName", accountName)
);
}
public static IDataReader GetExchangeAccountEmailAddresses(int accountId) public static IDataReader GetExchangeAccountEmailAddresses(int accountId)
{ {
return SqlHelper.ExecuteReader( return SqlHelper.ExecuteReader(
@ -2398,6 +2414,97 @@ namespace WebsitePanel.EnterpriseServer
#endregion #endregion
#region Exchange Mailbox Plans
public static int AddExchangeMailboxPlan(int itemID, string mailboxPlan, bool enableActiveSync, bool enableIMAP, bool enableMAPI, bool enableOWA, bool enablePOP,
bool isDefault, int issueWarningPct, int keepDeletedItemsDays, int mailboxSizeMB, int maxReceiveMessageSizeKB, int maxRecipients,
int maxSendMessageSizeKB, int prohibitSendPct, int prohibitSendReceivePct, bool hideFromAddressBook)
{
SqlParameter outParam = new SqlParameter("@MailboxPlanId", SqlDbType.Int);
outParam.Direction = ParameterDirection.Output;
SqlHelper.ExecuteNonQuery(
ConnectionString,
CommandType.StoredProcedure,
"AddExchangeMailboxPlan",
outParam,
new SqlParameter("@ItemID", itemID),
new SqlParameter("@MailboxPlan", mailboxPlan),
new SqlParameter("@EnableActiveSync", enableActiveSync),
new SqlParameter("@EnableIMAP", enableIMAP),
new SqlParameter("@EnableMAPI", enableMAPI),
new SqlParameter("@EnableOWA", enableOWA),
new SqlParameter("@EnablePOP", enablePOP),
new SqlParameter("@IsDefault", isDefault),
new SqlParameter("@IssueWarningPct", issueWarningPct),
new SqlParameter("@KeepDeletedItemsDays", keepDeletedItemsDays),
new SqlParameter("@MailboxSizeMB", mailboxSizeMB),
new SqlParameter("@MaxReceiveMessageSizeKB", maxReceiveMessageSizeKB),
new SqlParameter("@MaxRecipients", maxRecipients),
new SqlParameter("@MaxSendMessageSizeKB", maxSendMessageSizeKB),
new SqlParameter("@ProhibitSendPct", prohibitSendPct),
new SqlParameter("@ProhibitSendReceivePct", prohibitSendReceivePct),
new SqlParameter("@HideFromAddressBook", hideFromAddressBook)
);
return Convert.ToInt32(outParam.Value);
}
public static void DeleteExchangeMailboxPlan(int mailboxPlanId)
{
SqlHelper.ExecuteNonQuery(
ConnectionString,
CommandType.StoredProcedure,
"DeleteExchangeMailboxPlan",
new SqlParameter("@MailboxPlanId", mailboxPlanId)
);
}
public static IDataReader GetExchangeMailboxPlan(int mailboxPlanId)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetExchangeMailboxPlan",
new SqlParameter("@MailboxPlanId", mailboxPlanId)
);
}
public static IDataReader GetExchangeMailboxPlans(int itemId)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetExchangeMailboxPlans",
new SqlParameter("@ItemID", itemId)
);
}
public static void SetOrganizationDefaultExchangeMailboxPlan(int itemId, int mailboxPlanId)
{
SqlHelper.ExecuteNonQuery(
ConnectionString,
CommandType.StoredProcedure,
"SetOrganizationDefaultExchangeMailboxPlan",
new SqlParameter("@ItemID", itemId),
new SqlParameter("@MailboxPlanId", mailboxPlanId)
);
}
public static void SetExchangeAccountMailboxPlan(int accountId, int mailboxPlanId)
{
SqlHelper.ExecuteNonQuery(
ConnectionString,
CommandType.StoredProcedure,
"SetExchangeAccountMailboxplan",
new SqlParameter("@AccountID", accountId),
new SqlParameter("@MailboxPlanId", (mailboxPlanId == 0) ? (object)DBNull.Value : (object)mailboxPlanId)
);
}
#endregion
#region Organizations #region Organizations
public static void DeleteOrganizationUser(int itemId) public static void DeleteOrganizationUser(int itemId)

View file

@ -633,7 +633,7 @@ namespace WebsitePanel.EnterpriseServer
} }
private static Organizations GetOrganizationProxy(int serviceId) public static Organizations GetOrganizationProxy(int serviceId)
{ {
Organizations ws = new Organizations(); Organizations ws = new Organizations();
ServiceProviderProxy.Init(ws, serviceId); ServiceProviderProxy.Init(ws, serviceId);
@ -710,9 +710,6 @@ namespace WebsitePanel.EnterpriseServer
org.Id = 1; org.Id = 1;
org.OrganizationId = "fabrikam"; org.OrganizationId = "fabrikam";
org.Name = "Fabrikam Inc"; org.Name = "Fabrikam Inc";
org.IssueWarningKB = 150000;
org.ProhibitSendKB = 170000;
org.ProhibitSendReceiveKB = 190000;
org.KeepDeletedItemsDays = 14; org.KeepDeletedItemsDays = 14;
org.GlobalAddressList = "FabrikamGAL"; org.GlobalAddressList = "FabrikamGAL";
return org; return org;
@ -980,8 +977,17 @@ namespace WebsitePanel.EnterpriseServer
OrganizationUsersPaged result = new OrganizationUsersPaged(); OrganizationUsersPaged result = new OrganizationUsersPaged();
result.RecordsCount = (int)ds.Tables[0].Rows[0][0]; result.RecordsCount = (int)ds.Tables[0].Rows[0][0];
List<OrganizationUser> Tmpaccounts = new List<OrganizationUser>();
ObjectUtils.FillCollectionFromDataView(Tmpaccounts, ds.Tables[1].DefaultView);
result.PageUsers = Tmpaccounts.ToArray();
List<OrganizationUser> accounts = new List<OrganizationUser>(); List<OrganizationUser> accounts = new List<OrganizationUser>();
ObjectUtils.FillCollectionFromDataView(accounts, ds.Tables[1].DefaultView);
foreach (OrganizationUser user in Tmpaccounts.ToArray())
{
accounts.Add(GetUserGeneralSettings(itemId, user.AccountId));
}
result.PageUsers = accounts.ToArray(); result.PageUsers = accounts.ToArray();
return result; return result;
} }
@ -993,22 +999,23 @@ namespace WebsitePanel.EnterpriseServer
return DataProvider.ExchangeAccountEmailAddressExists(emailAddress); return DataProvider.ExchangeAccountEmailAddressExists(emailAddress);
} }
private static int AddOrganizationUser(int itemId, string accountName, string displayName, string email, string accountPassword) private static int AddOrganizationUser(int itemId, string accountName, string displayName, string email, string sAMAccountName, string accountPassword, string subscriberNumber)
{ {
return DataProvider.AddExchangeAccount(itemId, (int)ExchangeAccountType.User, accountName, displayName, email, false, string.Empty, return DataProvider.AddExchangeAccount(itemId, (int)ExchangeAccountType.User, accountName, displayName, email, false, string.Empty,
string.Empty, CryptoUtils.Encrypt(accountPassword)); sAMAccountName, CryptoUtils.Encrypt(accountPassword), 0, subscriberNumber.Trim());
} }
public static string GetAccountName(string loginName) public static string GetAccountName(string loginName)
{ {
string []parts = loginName.Split('@'); //string []parts = loginName.Split('@');
return parts != null && parts.Length > 1 ? parts[0] : loginName; //return parts != null && parts.Length > 1 ? parts[0] : loginName;
return loginName;
} }
public static int CreateUser(int itemId, string displayName, string name, string domain, string password, bool enabled, bool sendNotification, string to, out string accountName) public static int CreateUser(int itemId, string displayName, string name, string domain, string password, string subscriberNumber, bool enabled, bool sendNotification, string to, out string accountName)
{ {
if (string.IsNullOrEmpty(displayName)) if (string.IsNullOrEmpty(displayName))
throw new ArgumentNullException("displayName"); throw new ArgumentNullException("displayName");
@ -1023,55 +1030,171 @@ namespace WebsitePanel.EnterpriseServer
throw new ArgumentNullException("password"); throw new ArgumentNullException("password");
accountName = string.Empty; accountName = string.Empty;
// check account // check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
if (accountCheck < 0) return accountCheck; if (accountCheck < 0) return accountCheck;
// place log record // place log record
TaskManager.StartTask("ORGANIZATION", "CREATE_USER"); TaskManager.StartTask("ORGANIZATION", "CREATE_USER");
TaskManager.ItemId = itemId; TaskManager.ItemId = itemId;
TaskManager.Write("Organization ID :" + itemId);
TaskManager.Write("name :" + name);
TaskManager.Write("domain :" + domain);
TaskManager.Write("subscriberNumber :" + subscriberNumber);
// e-mail int userId = -1;
string email = name + "@" + domain;
if (EmailAddressExists(email)) try
return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS;
// load organization
Organization org = GetOrganization(itemId);
if (org == null)
return -1;
// check package
int packageCheck = SecurityContext.CheckPackage(org.PackageId, DemandPackage.IsActive);
if (packageCheck < 0) return packageCheck;
int errorCode;
if (!CheckUserQuota(org.Id, out errorCode))
return errorCode;
Organizations orgProxy = GetOrganizationProxy(org.ServiceId);
string upn = string.Format("{0}@{1}", name, domain);
accountName = BuildAccountName(org.OrganizationId, name);
orgProxy.CreateUser(org.OrganizationId, accountName, displayName, upn, password, enabled);
int userId = AddOrganizationUser(itemId, accountName, displayName, email, password);
// register email address
AddAccountEmailAddress(userId, email);
if (sendNotification)
{ {
SendSummaryLetter(org.Id, userId, true, to, ""); displayName = displayName.Trim();
name = name.Trim();
domain = domain.Trim();
// e-mail
string email = name + "@" + domain;
if (EmailAddressExists(email))
return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS;
// load organization
Organization org = GetOrganization(itemId);
if (org == null)
return -1;
// check package
int packageCheck = SecurityContext.CheckPackage(org.PackageId, DemandPackage.IsActive);
if (packageCheck < 0) return packageCheck;
int errorCode;
if (!CheckUserQuota(org.Id, out errorCode))
return errorCode;
Organizations orgProxy = GetOrganizationProxy(org.ServiceId);
string upn = string.Format("{0}@{1}", name, domain);
string sAMAccountName = BuildAccountName(org.OrganizationId, name);
TaskManager.Write("accountName :" + sAMAccountName);
TaskManager.Write("upn :" + upn);
if (orgProxy.CreateUser(org.OrganizationId, sAMAccountName, displayName, upn, password, enabled) == 0)
{
OrganizationUser retUser = orgProxy.GetUserGeneralSettings(upn, org.OrganizationId);
TaskManager.Write("sAMAccountName :" + retUser.DomainUserName);
userId = AddOrganizationUser(itemId, upn, displayName, email, retUser.DomainUserName, password, subscriberNumber);
accountName = upn;
// register email address
AddAccountEmailAddress(userId, email);
if (sendNotification)
{
SendSummaryLetter(org.Id, userId, true, to, "");
}
}
else
{
TaskManager.WriteError("Failed to create user");
}
} }
catch (Exception ex)
{
TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
return userId;
}
public static int ImportUser(int itemId, string accountName, string displayName, string name, string domain, string password, string subscriberNumber)
{
if (string.IsNullOrEmpty(accountName))
throw new ArgumentNullException("accountName");
if (string.IsNullOrEmpty(displayName))
throw new ArgumentNullException("displayName");
if (string.IsNullOrEmpty(name))
throw new ArgumentNullException("name");
if (string.IsNullOrEmpty(domain))
throw new ArgumentNullException("domain");
if (string.IsNullOrEmpty(password))
throw new ArgumentNullException("password");
// place log record
TaskManager.StartTask("ORGANIZATION", "IMPORT_USER");
TaskManager.ItemId = itemId;
TaskManager.Write("Organization ID :" + itemId);
TaskManager.Write("account :" + accountName);
TaskManager.Write("name :" + name);
TaskManager.Write("domain :" + domain);
int userId = -1;
try
{
accountName = accountName.Trim();
displayName = displayName.Trim();
name = name.Trim();
domain = domain.Trim();
// e-mail
string email = name + "@" + domain;
if (EmailAddressExists(email))
return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS;
// load organization
Organization org = GetOrganization(itemId);
if (org == null)
return -1;
// check package
int packageCheck = SecurityContext.CheckPackage(org.PackageId, DemandPackage.IsActive);
if (packageCheck < 0) return packageCheck;
int errorCode;
if (!CheckUserQuota(org.Id, out errorCode))
return errorCode;
Organizations orgProxy = GetOrganizationProxy(org.ServiceId);
string upn = string.Format("{0}@{1}", name, domain);
TaskManager.Write("upn :" + upn);
OrganizationUser retUser = orgProxy.GetUserGeneralSettings(accountName, org.OrganizationId);
TaskManager.Write("sAMAccountName :" + retUser.DomainUserName);
userId = AddOrganizationUser(itemId, accountName, displayName, email, retUser.DomainUserName, password, subscriberNumber);
AddAccountEmailAddress(userId, email);
}
catch (Exception ex)
{
TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
return userId; return userId;
} }
private static void AddAccountEmailAddress(int accountId, string emailAddress) private static void AddAccountEmailAddress(int accountId, string emailAddress)
{ {
@ -1080,28 +1203,40 @@ namespace WebsitePanel.EnterpriseServer
private static string BuildAccountName(string orgId, string name) private static string BuildAccountName(string orgId, string name)
{ {
int maxLen = 19 - orgId.Length; string accountName = name = name.Replace(" ", "");
string CounterStr = "00000";
// try to choose name int counter = 0;
int i = 0; bool bFound = false;
while (true) do
{ {
string num = i > 0 ? i.ToString() : ""; accountName = genSamLogin(name, CounterStr);
int len = maxLen - num.Length;
if (name.Length > len) if (!AccountExists(accountName)) bFound = true;
name = name.Substring(0, len);
string accountName = name + num + "_" + orgId; CounterStr = counter.ToString("d5");
counter++;
// check if already exists
if (!AccountExists(accountName))
return accountName;
i++;
} }
while (!bFound);
return accountName;
} }
private static string genSamLogin(string login, string strCounter)
{
int maxLogin = 20;
int fullLen = login.Length + strCounter.Length;
if (fullLen <= maxLogin)
return login + strCounter;
else
{
if (login.Length - (fullLen - maxLogin) > 0)
return login.Substring(0, login.Length - (fullLen - maxLogin)) + strCounter;
else return strCounter; // ????
}
}
private static bool AccountExists(string accountName) private static bool AccountExists(string accountName)
{ {
return DataProvider.ExchangeAccountExists(accountName); return DataProvider.ExchangeAccountExists(accountName);
@ -1180,6 +1315,18 @@ namespace WebsitePanel.EnterpriseServer
return account; return account;
} }
public static OrganizationUser GetAccountByAccountName(int itemId, string AccountName)
{
OrganizationUser account = ObjectUtils.FillObjectFromDataReader<OrganizationUser>(
DataProvider.GetExchangeAccountByAccountName(itemId, AccountName));
if (account == null)
return null;
return account;
}
private static void DeleteUserFromMetabase(int itemId, int accountId) private static void DeleteUserFromMetabase(int itemId, int accountId)
{ {
// try to get organization // try to get organization
@ -1217,11 +1364,16 @@ namespace WebsitePanel.EnterpriseServer
string accountName = GetAccountName(account.AccountName); string accountName = GetAccountName(account.AccountName);
OrganizationUser retUser = orgProxy.GeUserGeneralSettings(accountName, org.OrganizationId); OrganizationUser retUser = orgProxy.GetUserGeneralSettings(accountName, org.OrganizationId);
retUser.AccountId = accountId; retUser.AccountId = accountId;
retUser.AccountName = account.AccountName; retUser.AccountName = account.AccountName;
retUser.PrimaryEmailAddress = account.PrimaryEmailAddress; retUser.PrimaryEmailAddress = account.PrimaryEmailAddress;
retUser.AccountType = account.AccountType; retUser.AccountType = account.AccountType;
retUser.CrmUserId = CRMController.GetCrmUserId(accountId);
retUser.IsOCSUser = DataProvider.CheckOCSUserExists(accountId);
//retUser.IsLyncUser = DataProvider.CheckLyncUserExists(accountId);
retUser.IsBlackBerryUser = BlackBerryController.CheckBlackBerryUserExists(accountId);
retUser.SubscriberNumber = account.SubscriberNumber;
return retUser; return retUser;
} }
@ -1240,7 +1392,7 @@ namespace WebsitePanel.EnterpriseServer
string lastName, string address, string city, string state, string zip, string country, string lastName, string address, string city, string state, string zip, string country,
string jobTitle, string company, string department, string office, string managerAccountName, string jobTitle, string company, string department, string office, string managerAccountName,
string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string businessPhone, string fax, string homePhone, string mobilePhone, string pager,
string webPage, string notes, string externalEmail) string webPage, string notes, string externalEmail, string subscriberNumber)
{ {
// check account // check account
@ -1253,6 +1405,10 @@ namespace WebsitePanel.EnterpriseServer
try try
{ {
displayName = displayName.Trim();
firstName = firstName.Trim();
lastName = lastName.Trim();
// load organization // load organization
Organization org = GetOrganization(itemId); Organization org = GetOrganization(itemId);
if (org == null) if (org == null)
@ -1303,6 +1459,7 @@ namespace WebsitePanel.EnterpriseServer
// update account // update account
account.DisplayName = displayName; account.DisplayName = displayName;
account.SubscriberNumber = subscriberNumber;
//account. //account.
if (!String.IsNullOrEmpty(password)) if (!String.IsNullOrEmpty(password))
@ -1329,7 +1486,8 @@ namespace WebsitePanel.EnterpriseServer
{ {
DataProvider.UpdateExchangeAccount(account.AccountId, account.AccountName, account.AccountType, account.DisplayName, DataProvider.UpdateExchangeAccount(account.AccountId, account.AccountName, account.AccountType, account.DisplayName,
account.PrimaryEmailAddress, account.MailEnabledPublicFolder, account.PrimaryEmailAddress, account.MailEnabledPublicFolder,
account.MailboxManagerActions.ToString(), account.SamAccountName, account.AccountPassword); account.MailboxManagerActions.ToString(), account.SamAccountName, account.AccountPassword, account.MailboxPlanId,
(string.IsNullOrEmpty(account.SubscriberNumber) ? null : account.SubscriberNumber.Trim()));
} }
@ -1377,11 +1535,58 @@ namespace WebsitePanel.EnterpriseServer
} }
#endregion #endregion
return ObjectUtils.CreateListFromDataReader<OrganizationUser>( List<OrganizationUser> Tmpaccounts = ObjectUtils.CreateListFromDataReader<OrganizationUser>(
DataProvider.SearchOrganizationAccounts(SecurityContext.User.UserId, itemId, DataProvider.SearchOrganizationAccounts(SecurityContext.User.UserId, itemId,
filterColumn, filterValue, sortColumn, includeMailboxes)); filterColumn, filterValue, sortColumn, includeMailboxes));
List<OrganizationUser> Accounts = new List<OrganizationUser>();
foreach (OrganizationUser user in Tmpaccounts.ToArray())
{
Accounts.Add(GetUserGeneralSettings(itemId, user.AccountId));
}
return Accounts;
} }
public static int GetAccountIdByUserPrincipalName(int itemId, string userPrincipalName)
{
// place log record
TaskManager.StartTask("ORGANIZATION", "GET_ACCOUNT_BYUPN");
TaskManager.ItemId = itemId;
int accounId = -1;
try
{
// load organization
Organization org = GetOrganization(itemId);
if (org == null)
return 0;
// get samaccountName
//Organizations orgProxy = GetOrganizationProxy(org.ServiceId);
//string accountName = orgProxy.GetSamAccountNameByUserPrincipalName(org.OrganizationId, userPrincipalName);
// load account
OrganizationUser account = GetAccountByAccountName(itemId, userPrincipalName);
if (account != null)
accounId = account.AccountId;
return accounId;
}
catch (Exception ex)
{
throw TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
}
#endregion #endregion
public static List<OrganizationDomainName> GetOrganizationDomains(int itemId) public static List<OrganizationDomainName> GetOrganizationDomains(int itemId)

View file

@ -46,80 +46,81 @@ namespace WebsitePanel.EnterpriseServer
[ToolboxItem(false)] [ToolboxItem(false)]
public class esExchangeServer : WebService public class esExchangeServer : WebService
{ {
#region Organizations #region Organizations
[WebMethod] [WebMethod]
public DataSet GetRawExchangeOrganizationsPaged(int packageId, bool recursive, public DataSet GetRawExchangeOrganizationsPaged(int packageId, bool recursive,
string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows) string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
{ {
return ExchangeServerController.GetRawExchangeOrganizationsPaged(packageId, recursive, return ExchangeServerController.GetRawExchangeOrganizationsPaged(packageId, recursive,
filterColumn, filterValue, sortColumn, startRow, maximumRows); filterColumn, filterValue, sortColumn, startRow, maximumRows);
} }
[WebMethod] [WebMethod]
public OrganizationsPaged GetExchangeOrganizationsPaged(int packageId, bool recursive, public OrganizationsPaged GetExchangeOrganizationsPaged(int packageId, bool recursive,
string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows) string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
{ {
return ExchangeServerController.GetExchangeOrganizationsPaged(packageId, recursive, return ExchangeServerController.GetExchangeOrganizationsPaged(packageId, recursive,
filterColumn, filterValue, sortColumn, startRow, maximumRows); filterColumn, filterValue, sortColumn, startRow, maximumRows);
} }
[WebMethod] [WebMethod]
public List<Organization> GetExchangeOrganizations(int packageId, bool recursive) public List<Organization> GetExchangeOrganizations(int packageId, bool recursive)
{ {
return ExchangeServerController.GetExchangeOrganizations(packageId, recursive); return ExchangeServerController.GetExchangeOrganizations(packageId, recursive);
} }
[WebMethod] [WebMethod]
public Organization GetOrganization(int itemId) public Organization GetOrganization(int itemId)
{ {
return ExchangeServerController.GetOrganization(itemId); return ExchangeServerController.GetOrganization(itemId);
} }
[WebMethod] [WebMethod]
public OrganizationStatistics GetOrganizationStatistics(int itemId) public OrganizationStatistics GetOrganizationStatistics(int itemId)
{ {
return ExchangeServerController.GetOrganizationStatistics(itemId); return ExchangeServerController.GetOrganizationStatistics(itemId);
} }
[WebMethod]
public int DeleteOrganization(int itemId)
{
return ExchangeServerController.DeleteOrganization(itemId);
}
[WebMethod] [WebMethod]
public Organization GetOrganizationStorageLimits(int itemId) public int DeleteOrganization(int itemId)
{ {
return ExchangeServerController.GetOrganizationStorageLimits(itemId); return ExchangeServerController.DeleteOrganization(itemId);
} }
[WebMethod] [WebMethod]
public int SetOrganizationStorageLimits(int itemId, int issueWarningKB, int prohibitSendKB, public Organization GetOrganizationStorageLimits(int itemId)
int prohibitSendReceiveKB, int keepDeletedItemsDays, bool applyToMailboxes) {
{ return ExchangeServerController.GetOrganizationStorageLimits(itemId);
return ExchangeServerController.SetOrganizationStorageLimits(itemId, issueWarningKB, prohibitSendKB, }
prohibitSendReceiveKB, keepDeletedItemsDays, applyToMailboxes);
}
[WebMethod] [WebMethod]
public ExchangeItemStatistics[] GetMailboxesStatistics(int itemId) public int SetOrganizationStorageLimits(int itemId, int issueWarningKB, int prohibitSendKB,
{ int prohibitSendReceiveKB, int keepDeletedItemsDays, bool applyToMailboxes)
return ExchangeServerController.GetMailboxesStatistics(itemId); {
} return ExchangeServerController.SetOrganizationStorageLimits(itemId, issueWarningKB, prohibitSendKB,
prohibitSendReceiveKB, keepDeletedItemsDays, applyToMailboxes);
}
[WebMethod] [WebMethod]
public ExchangeItemStatistics[] GetPublicFoldersStatistics(int itemId) public ExchangeItemStatistics[] GetMailboxesStatistics(int itemId)
{ {
return ExchangeServerController.GetPublicFoldersStatistics(itemId); return ExchangeServerController.GetMailboxesStatistics(itemId);
} }
[WebMethod] [WebMethod]
public int CalculateOrganizationDiskspace(int itemId) public ExchangeMailboxStatistics GetMailboxStatistics(int itemId, int accountId)
{ {
return ExchangeServerController.CalculateOrganizationDiskspace(itemId); return ExchangeServerController.GetMailboxStatistics(itemId, accountId);
} }
[WebMethod]
public int CalculateOrganizationDiskspace(int itemId)
{
return ExchangeServerController.CalculateOrganizationDiskspace(itemId);
}
[WebMethod] [WebMethod]
public ExchangeActiveSyncPolicy GetActiveSyncPolicy(int itemId) public ExchangeActiveSyncPolicy GetActiveSyncPolicy(int itemId)
@ -139,14 +140,14 @@ namespace WebsitePanel.EnterpriseServer
passwordRecoveryEnabled, deviceEncryptionEnabled, allowSimplePassword, maxPasswordFailedAttempts, passwordRecoveryEnabled, deviceEncryptionEnabled, allowSimplePassword, maxPasswordFailedAttempts,
minPasswordLength, inactivityLockMin, passwordExpirationDays, passwordHistory, refreshInteval); minPasswordLength, inactivityLockMin, passwordExpirationDays, passwordHistory, refreshInteval);
} }
#endregion #endregion
#region Domains #region Domains
[WebMethod] [WebMethod]
public int AddAuthoritativeDomain(int itemId, int domainId) public int AddAuthoritativeDomain(int itemId, int domainId)
{ {
return ExchangeServerController.AddAuthoritativeDomain(itemId, domainId); return ExchangeServerController.AddAuthoritativeDomain(itemId, domainId);
} }
[WebMethod] [WebMethod]
public int DeleteAuthoritativeDomain(int itemId, int domainId) public int DeleteAuthoritativeDomain(int itemId, int domainId)
@ -155,42 +156,42 @@ namespace WebsitePanel.EnterpriseServer
} }
#endregion #endregion
#region Accounts #region Accounts
[WebMethod] [WebMethod]
public ExchangeAccountsPaged GetAccountsPaged(int itemId, string accountTypes, public ExchangeAccountsPaged GetAccountsPaged(int itemId, string accountTypes,
string filterColumn, string filterValue, string sortColumn, string filterColumn, string filterValue, string sortColumn,
int startRow, int maximumRows) int startRow, int maximumRows)
{ {
return ExchangeServerController.GetAccountsPaged(itemId, accountTypes, return ExchangeServerController.GetAccountsPaged(itemId, accountTypes,
filterColumn, filterValue, sortColumn, filterColumn, filterValue, sortColumn,
startRow, maximumRows); startRow, maximumRows);
} }
[WebMethod] [WebMethod]
public List<ExchangeAccount> GetAccounts(int itemId, ExchangeAccountType accountType) public List<ExchangeAccount> GetAccounts(int itemId, ExchangeAccountType accountType)
{ {
return ExchangeServerController.GetAccounts(itemId, accountType); return ExchangeServerController.GetAccounts(itemId, accountType);
} }
[WebMethod] [WebMethod]
public List<ExchangeAccount> SearchAccounts(int itemId, public List<ExchangeAccount> SearchAccounts(int itemId,
bool includeMailboxes, bool includeContacts, bool includeDistributionLists, bool includeMailboxes, bool includeContacts, bool includeDistributionLists,
bool includeRooms, bool includeEquipment, bool includeRooms, bool includeEquipment,
string filterColumn, string filterValue, string sortColumn) string filterColumn, string filterValue, string sortColumn)
{ {
return ExchangeServerController.SearchAccounts(itemId, return ExchangeServerController.SearchAccounts(itemId,
includeMailboxes, includeContacts, includeDistributionLists, includeMailboxes, includeContacts, includeDistributionLists,
includeRooms, includeEquipment, includeRooms, includeEquipment,
filterColumn, filterValue, sortColumn); filterColumn, filterValue, sortColumn);
} }
[WebMethod] [WebMethod]
public ExchangeAccount GetAccount(int itemId, int accountId) public ExchangeAccount GetAccount(int itemId, int accountId)
{ {
return ExchangeServerController.GetAccount(itemId, accountId); return ExchangeServerController.GetAccount(itemId, accountId);
} }
[WebMethod] [WebMethod]
public ExchangeAccount SearchAccount(ExchangeAccountType accountType, string primaryEmailAddress) public ExchangeAccount SearchAccount(ExchangeAccountType accountType, string primaryEmailAddress)
@ -204,21 +205,21 @@ namespace WebsitePanel.EnterpriseServer
return ExchangeServerController.CheckAccountCredentials(itemId, email, password); return ExchangeServerController.CheckAccountCredentials(itemId, email, password);
} }
#endregion #endregion
#region Mailboxes #region Mailboxes
[WebMethod] [WebMethod]
public int CreateMailbox(int itemId, int accountId, ExchangeAccountType accountType, string accountName, string displayName, public int CreateMailbox(int itemId, int accountId, ExchangeAccountType accountType, string accountName, string displayName,
string name, string domain, string password, bool sendSetupInstructions, string setupInstructionMailAddress) string name, string domain, string password, bool sendSetupInstructions, string setupInstructionMailAddress, int mailboxPlanId, string subscriberNumber)
{ {
return ExchangeServerController.CreateMailbox(itemId, accountId, accountType, accountName, displayName, name, domain, password, sendSetupInstructions, setupInstructionMailAddress); return ExchangeServerController.CreateMailbox(itemId, accountId, accountType, accountName, displayName, name, domain, password, sendSetupInstructions, setupInstructionMailAddress, mailboxPlanId, subscriberNumber);
} }
[WebMethod] [WebMethod]
public int DeleteMailbox(int itemId, int accountId) public int DeleteMailbox(int itemId, int accountId)
{ {
return ExchangeServerController.DeleteMailbox(itemId, accountId); return ExchangeServerController.DeleteMailbox(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int DisableMailbox(int itemId, int accountId) public int DisableMailbox(int itemId, int accountId)
@ -227,87 +228,66 @@ namespace WebsitePanel.EnterpriseServer
} }
[WebMethod] [WebMethod]
public ExchangeMailbox GetMailboxGeneralSettings(int itemId, int accountId) public ExchangeMailbox GetMailboxGeneralSettings(int itemId, int accountId)
{ {
return ExchangeServerController.GetMailboxGeneralSettings(itemId, accountId); return ExchangeServerController.GetMailboxGeneralSettings(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int SetMailboxGeneralSettings(int itemId, int accountId, string displayName, public int SetMailboxGeneralSettings(int itemId, int accountId, bool hideAddressBook, bool disabled)
string password, bool hideAddressBook, bool disabled, string firstName, string initials, {
string lastName, string address, string city, string state, string zip, string country, return ExchangeServerController.SetMailboxGeneralSettings(itemId, accountId, hideAddressBook, disabled);
string jobTitle, string company, string department, string office, string managerAccountName, }
string businessPhone, string fax, string homePhone, string mobilePhone, string pager,
string webPage, string notes)
{
return ExchangeServerController.SetMailboxGeneralSettings(itemId, accountId, displayName,
password, hideAddressBook, disabled, firstName, initials,
lastName, address, city, state, zip, country,
jobTitle, company, department, office, managerAccountName,
businessPhone, fax, homePhone, mobilePhone, pager,
webPage, notes);
}
[WebMethod] [WebMethod]
public ExchangeEmailAddress[] GetMailboxEmailAddresses(int itemId, int accountId) public ExchangeEmailAddress[] GetMailboxEmailAddresses(int itemId, int accountId)
{ {
return ExchangeServerController.GetMailboxEmailAddresses(itemId, accountId); return ExchangeServerController.GetMailboxEmailAddresses(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int AddMailboxEmailAddress(int itemId, int accountId, string emailAddress) public int AddMailboxEmailAddress(int itemId, int accountId, string emailAddress)
{ {
return ExchangeServerController.AddMailboxEmailAddress(itemId, accountId, emailAddress); return ExchangeServerController.AddMailboxEmailAddress(itemId, accountId, emailAddress);
} }
[WebMethod] [WebMethod]
public int SetMailboxPrimaryEmailAddress(int itemId, int accountId, string emailAddress) public int SetMailboxPrimaryEmailAddress(int itemId, int accountId, string emailAddress)
{ {
return ExchangeServerController.SetMailboxPrimaryEmailAddress(itemId, accountId, emailAddress); return ExchangeServerController.SetMailboxPrimaryEmailAddress(itemId, accountId, emailAddress);
} }
[WebMethod] [WebMethod]
public int DeleteMailboxEmailAddresses(int itemId, int accountId, string[] emailAddresses) public int DeleteMailboxEmailAddresses(int itemId, int accountId, string[] emailAddresses)
{ {
return ExchangeServerController.DeleteMailboxEmailAddresses(itemId, accountId, emailAddresses); return ExchangeServerController.DeleteMailboxEmailAddresses(itemId, accountId, emailAddresses);
} }
[WebMethod] [WebMethod]
public ExchangeMailbox GetMailboxMailFlowSettings(int itemId, int accountId) public ExchangeMailbox GetMailboxMailFlowSettings(int itemId, int accountId)
{ {
return ExchangeServerController.GetMailboxMailFlowSettings(itemId, accountId); return ExchangeServerController.GetMailboxMailFlowSettings(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int SetMailboxMailFlowSettings(int itemId, int accountId, public int SetMailboxMailFlowSettings(int itemId, int accountId,
bool enableForwarding, string forwardingAccountName, bool forwardToBoth, bool enableForwarding, string forwardingAccountName, bool forwardToBoth,
string[] sendOnBehalfAccounts, string[] acceptAccounts, string[] rejectAccounts, string[] sendOnBehalfAccounts, string[] acceptAccounts, string[] rejectAccounts,
int maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB,
bool requireSenderAuthentication) bool requireSenderAuthentication)
{ {
return ExchangeServerController.SetMailboxMailFlowSettings(itemId, accountId, return ExchangeServerController.SetMailboxMailFlowSettings(itemId, accountId,
enableForwarding, forwardingAccountName, forwardToBoth, enableForwarding, forwardingAccountName, forwardToBoth,
sendOnBehalfAccounts, acceptAccounts, rejectAccounts, sendOnBehalfAccounts, acceptAccounts, rejectAccounts,
maxRecipients, maxSendMessageSizeKB, maxReceiveMessageSizeKB, requireSenderAuthentication);
requireSenderAuthentication); }
}
[WebMethod]
public ExchangeMailbox GetMailboxAdvancedSettings(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxAdvancedSettings(itemId, accountId);
}
[WebMethod] [WebMethod]
public int SetMailboxAdvancedSettings(int itemId, int accountId, bool enablePOP, public int SetExchangeMailboxPlan(int itemId, int accountId, int mailboxPlanId)
bool enableIMAP, bool enableOWA, bool enableMAPI, bool enableActiveSync, {
int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays) return ExchangeServerController.SetExchangeMailboxPlan(itemId, accountId, mailboxPlanId);
{ }
return ExchangeServerController.SetMailboxAdvancedSettings(itemId, accountId, enablePOP,
enableIMAP, enableOWA, enableMAPI, enableActiveSync,
issueWarningKB, prohibitSendKB, prohibitSendReceiveKB, keepDeletedItemsDays);
}
[WebMethod] [WebMethod]
public string GetMailboxSetupInstructions(int itemId, int accountId, bool pmm, bool emailMode, bool signup) public string GetMailboxSetupInstructions(int itemId, int accountId, bool pmm, bool emailMode, bool signup)
@ -327,137 +307,137 @@ namespace WebsitePanel.EnterpriseServer
return ExchangeServerController.SetMailboxManagerSettings(itemId, accountId, pmmAllowed, action); return ExchangeServerController.SetMailboxManagerSettings(itemId, accountId, pmmAllowed, action);
} }
[WebMethod] [WebMethod]
public ExchangeMailbox GetMailboxPermissions(int itemId, int accountId) public ExchangeMailbox GetMailboxPermissions(int itemId, int accountId)
{ {
return ExchangeServerController.GetMailboxPermissions(itemId, accountId); return ExchangeServerController.GetMailboxPermissions(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int SetMailboxPermissions(int itemId, int accountId, string[] sendAsaccounts, string[] fullAccessAcounts) public int SetMailboxPermissions(int itemId, int accountId, string[] sendAsaccounts, string[] fullAccessAcounts)
{ {
return ExchangeServerController.SetMailboxPermissions(itemId, accountId, sendAsaccounts, fullAccessAcounts); return ExchangeServerController.SetMailboxPermissions(itemId, accountId, sendAsaccounts, fullAccessAcounts);
} }
#endregion
#region Contacts
[WebMethod]
public int CreateContact(int itemId, string displayName, string email)
{
return ExchangeServerController.CreateContact(itemId, displayName, email);
}
[WebMethod] #endregion
public int DeleteContact(int itemId, int accountId)
{
return ExchangeServerController.DeleteContact(itemId, accountId);
}
[WebMethod] #region Contacts
public ExchangeContact GetContactGeneralSettings(int itemId, int accountId) [WebMethod]
{ public int CreateContact(int itemId, string displayName, string email)
return ExchangeServerController.GetContactGeneralSettings(itemId, accountId); {
} return ExchangeServerController.CreateContact(itemId, displayName, email);
}
[WebMethod] [WebMethod]
public int SetContactGeneralSettings(int itemId, int accountId, string displayName, string emailAddress, public int DeleteContact(int itemId, int accountId)
bool hideAddressBook, string firstName, string initials, {
string lastName, string address, string city, string state, string zip, string country, return ExchangeServerController.DeleteContact(itemId, accountId);
string jobTitle, string company, string department, string office, string managerAccountName, }
string businessPhone, string fax, string homePhone, string mobilePhone, string pager,
[WebMethod]
public ExchangeContact GetContactGeneralSettings(int itemId, int accountId)
{
return ExchangeServerController.GetContactGeneralSettings(itemId, accountId);
}
[WebMethod]
public int SetContactGeneralSettings(int itemId, int accountId, string displayName, string emailAddress,
bool hideAddressBook, string firstName, string initials,
string lastName, string address, string city, string state, string zip, string country,
string jobTitle, string company, string department, string office, string managerAccountName,
string businessPhone, string fax, string homePhone, string mobilePhone, string pager,
string webPage, string notes, int useMapiRichTextFormat) string webPage, string notes, int useMapiRichTextFormat)
{ {
return ExchangeServerController.SetContactGeneralSettings(itemId, accountId, displayName, emailAddress, return ExchangeServerController.SetContactGeneralSettings(itemId, accountId, displayName, emailAddress,
hideAddressBook, firstName, initials, hideAddressBook, firstName, initials,
lastName, address, city, state, zip, country, lastName, address, city, state, zip, country,
jobTitle, company, department, office, managerAccountName, jobTitle, company, department, office, managerAccountName,
businessPhone, fax, homePhone, mobilePhone, pager, businessPhone, fax, homePhone, mobilePhone, pager,
webPage, notes, useMapiRichTextFormat); webPage, notes, useMapiRichTextFormat);
} }
[WebMethod] [WebMethod]
public ExchangeContact GetContactMailFlowSettings(int itemId, int accountId) public ExchangeContact GetContactMailFlowSettings(int itemId, int accountId)
{ {
return ExchangeServerController.GetContactMailFlowSettings(itemId, accountId); return ExchangeServerController.GetContactMailFlowSettings(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int SetContactMailFlowSettings(int itemId, int accountId, public int SetContactMailFlowSettings(int itemId, int accountId,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication) string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{ {
return ExchangeServerController.SetContactMailFlowSettings(itemId, accountId, return ExchangeServerController.SetContactMailFlowSettings(itemId, accountId,
acceptAccounts, rejectAccounts, requireSenderAuthentication); acceptAccounts, rejectAccounts, requireSenderAuthentication);
} }
#endregion #endregion
#region Distribution Lists #region Distribution Lists
[WebMethod] [WebMethod]
public int CreateDistributionList(int itemId, string displayName, string name, string domain, int managerId) public int CreateDistributionList(int itemId, string displayName, string name, string domain, int managerId)
{ {
return ExchangeServerController.CreateDistributionList(itemId, displayName, name, domain, managerId); return ExchangeServerController.CreateDistributionList(itemId, displayName, name, domain, managerId);
} }
[WebMethod] [WebMethod]
public int DeleteDistributionList(int itemId, int accountId) public int DeleteDistributionList(int itemId, int accountId)
{ {
return ExchangeServerController.DeleteDistributionList(itemId, accountId); return ExchangeServerController.DeleteDistributionList(itemId, accountId);
} }
[WebMethod] [WebMethod]
public ExchangeDistributionList GetDistributionListGeneralSettings(int itemId, int accountId) public ExchangeDistributionList GetDistributionListGeneralSettings(int itemId, int accountId)
{ {
return ExchangeServerController.GetDistributionListGeneralSettings(itemId, accountId); return ExchangeServerController.GetDistributionListGeneralSettings(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int SetDistributionListGeneralSettings(int itemId, int accountId, string displayName, public int SetDistributionListGeneralSettings(int itemId, int accountId, string displayName,
bool hideAddressBook, string managerAccount, string[] memberAccounts, bool hideAddressBook, string managerAccount, string[] memberAccounts,
string notes) string notes)
{ {
return ExchangeServerController.SetDistributionListGeneralSettings(itemId, accountId, displayName, return ExchangeServerController.SetDistributionListGeneralSettings(itemId, accountId, displayName,
hideAddressBook, managerAccount, memberAccounts, hideAddressBook, managerAccount, memberAccounts,
notes); notes);
} }
[WebMethod] [WebMethod]
public ExchangeDistributionList GetDistributionListMailFlowSettings(int itemId, int accountId) public ExchangeDistributionList GetDistributionListMailFlowSettings(int itemId, int accountId)
{ {
return ExchangeServerController.GetDistributionListMailFlowSettings(itemId, accountId); return ExchangeServerController.GetDistributionListMailFlowSettings(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int SetDistributionListMailFlowSettings(int itemId, int accountId, public int SetDistributionListMailFlowSettings(int itemId, int accountId,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication) string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{ {
return ExchangeServerController.SetDistributionListMailFlowSettings(itemId, accountId, return ExchangeServerController.SetDistributionListMailFlowSettings(itemId, accountId,
acceptAccounts, rejectAccounts, requireSenderAuthentication); acceptAccounts, rejectAccounts, requireSenderAuthentication);
} }
[WebMethod] [WebMethod]
public ExchangeEmailAddress[] GetDistributionListEmailAddresses(int itemId, int accountId) public ExchangeEmailAddress[] GetDistributionListEmailAddresses(int itemId, int accountId)
{ {
return ExchangeServerController.GetDistributionListEmailAddresses(itemId, accountId); return ExchangeServerController.GetDistributionListEmailAddresses(itemId, accountId);
} }
[WebMethod] [WebMethod]
public int AddDistributionListEmailAddress(int itemId, int accountId, string emailAddress) public int AddDistributionListEmailAddress(int itemId, int accountId, string emailAddress)
{ {
return ExchangeServerController.AddDistributionListEmailAddress(itemId, accountId, emailAddress); return ExchangeServerController.AddDistributionListEmailAddress(itemId, accountId, emailAddress);
} }
[WebMethod] [WebMethod]
public int SetDistributionListPrimaryEmailAddress(int itemId, int accountId, string emailAddress) public int SetDistributionListPrimaryEmailAddress(int itemId, int accountId, string emailAddress)
{ {
return ExchangeServerController.SetDistributionListPrimaryEmailAddress(itemId, accountId, emailAddress); return ExchangeServerController.SetDistributionListPrimaryEmailAddress(itemId, accountId, emailAddress);
} }
[WebMethod] [WebMethod]
public int DeleteDistributionListEmailAddresses(int itemId, int accountId, string[] emailAddresses) public int DeleteDistributionListEmailAddresses(int itemId, int accountId, string[] emailAddresses)
{ {
return ExchangeServerController.DeleteDistributionListEmailAddresses(itemId, accountId, emailAddresses); return ExchangeServerController.DeleteDistributionListEmailAddresses(itemId, accountId, emailAddresses);
} }
[WebMethod] [WebMethod]
public ResultObject SetDistributionListPermissions(int itemId, int accountId, string[] sendAsAccounts, string[] sendOnBehalfAccounts) public ResultObject SetDistributionListPermissions(int itemId, int accountId, string[] sendAsAccounts, string[] sendOnBehalfAccounts)
@ -470,9 +450,77 @@ namespace WebsitePanel.EnterpriseServer
{ {
return ExchangeServerController.GetDistributionListPermissions(itemId, accountId); return ExchangeServerController.GetDistributionListPermissions(itemId, accountId);
} }
#endregion #endregion
#region MobileDevice
[WebMethod]
public ExchangeMobileDevice[] GetMobileDevices(int itemId, int accountId)
{
return ExchangeServerController.GetMobileDevices(itemId, accountId);
}
[WebMethod]
public ExchangeMobileDevice GetMobileDevice(int itemId, string deviceId)
{
return ExchangeServerController.GetMobileDevice(itemId, deviceId);
}
[WebMethod]
public void WipeDataFromDevice(int itemId, string deviceId)
{
ExchangeServerController.WipeDataFromDevice(itemId, deviceId);
}
[WebMethod]
public void CancelRemoteWipeRequest(int itemId, string deviceId)
{
ExchangeServerController.CancelRemoteWipeRequest(itemId, deviceId);
}
[WebMethod]
public void RemoveDevice(int itemId, string deviceId)
{
ExchangeServerController.RemoveDevice(itemId, deviceId);
}
#endregion
#region MailboxPlans
[WebMethod]
public List<ExchangeMailboxPlan> GetExchangeMailboxPlans(int itemId)
{
return ExchangeServerController.GetExchangeMailboxPlans(itemId);
}
[WebMethod]
public ExchangeMailboxPlan GetExchangeMailboxPlan(int itemId, int mailboxPlanId)
{
return ExchangeServerController.GetExchangeMailboxPlan(itemId, mailboxPlanId);
}
[WebMethod]
public int AddExchangeMailboxPlan(int itemId, ExchangeMailboxPlan mailboxPlan)
{
return ExchangeServerController.AddExchangeMailboxPlan(itemId, mailboxPlan);
}
[WebMethod]
public int DeleteExchangeMailboxPlan(int itemId, int mailboxPlanId)
{
return ExchangeServerController.DeleteExchangeMailboxPlan(itemId, mailboxPlanId);
}
[WebMethod]
public void SetOrganizationDefaultExchangeMailboxPlan(int itemId, int mailboxPlanId)
{
ExchangeServerController.SetOrganizationDefaultExchangeMailboxPlan(itemId, mailboxPlanId);
}
#endregion
#region Public Folders #region Public Folders
[WebMethod] [WebMethod]
public int CreatePublicFolder(int itemId, string parentFolder, string folderName, public int CreatePublicFolder(int itemId, string parentFolder, string folderName,
@ -560,39 +608,7 @@ namespace WebsitePanel.EnterpriseServer
} }
#endregion #endregion
#region MobileDevice
[WebMethod]
public ExchangeMobileDevice[] GetMobileDevices(int itemId, int accountId)
{
return ExchangeServerController.GetMobileDevices(itemId, accountId);
}
[WebMethod]
public ExchangeMobileDevice GetMobileDevice(int itemId, string deviceId)
{
return ExchangeServerController.GetMobileDevice(itemId, deviceId);
}
[WebMethod]
public void WipeDataFromDevice(int itemId, string deviceId)
{
ExchangeServerController.WipeDataFromDevice(itemId, deviceId);
}
[WebMethod]
public void CancelRemoteWipeRequest(int itemId, string deviceId)
{
ExchangeServerController.CancelRemoteWipeRequest(itemId, deviceId);
}
[WebMethod]
public void RemoveDevice(int itemId, string deviceId)
{
ExchangeServerController.RemoveDevice(itemId, deviceId);
}
#endregion
} }
} }

View file

@ -1,4 +1,4 @@
// Copyright (c) 2012, Outercurve Foundation. // Copyright (c) 2011, 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,
@ -46,10 +46,10 @@ namespace WebsitePanel.EnterpriseServer
#region Organizations #region Organizations
[WebMethod] [WebMethod]
public int CreateOrganization(int packageId, string organizationID, string organizationName) public int CreateOrganization(int packageId, string organizationID, string organizationName)
{ {
return OrganizationController.CreateOrganization(packageId, organizationID, organizationName); return OrganizationController.CreateOrganization(packageId, organizationID, organizationName);
} }
[WebMethod] [WebMethod]
@ -60,7 +60,7 @@ namespace WebsitePanel.EnterpriseServer
filterColumn, filterValue, sortColumn, startRow, maximumRows); filterColumn, filterValue, sortColumn, startRow, maximumRows);
} }
[WebMethod] [WebMethod]
public List<Organization> GetOrganizations(int packageId, bool recursive) public List<Organization> GetOrganizations(int packageId, bool recursive)
{ {
@ -72,13 +72,13 @@ namespace WebsitePanel.EnterpriseServer
{ {
return OrganizationController.GetOrganizationUserSummuryLetter(itemId, accountId, pmm, emailMode, signup); return OrganizationController.GetOrganizationUserSummuryLetter(itemId, accountId, pmm, emailMode, signup);
} }
[WebMethod] [WebMethod]
public int SendOrganizationUserSummuryLetter(int itemId, int accountId, bool signup, string to, string cc) public int SendOrganizationUserSummuryLetter(int itemId, int accountId, bool signup, string to, string cc)
{ {
return OrganizationController.SendSummaryLetter(itemId, accountId, signup, to, cc); return OrganizationController.SendSummaryLetter(itemId, accountId, signup, to, cc);
} }
[WebMethod] [WebMethod]
public int DeleteOrganization(int itemId) public int DeleteOrganization(int itemId)
{ {
@ -97,6 +97,13 @@ namespace WebsitePanel.EnterpriseServer
return OrganizationController.GetOrganization(itemId); return OrganizationController.GetOrganization(itemId);
} }
[WebMethod]
public int GetAccountIdByUserPrincipalName(int itemId, string userPrincipalName)
{
return OrganizationController.GetAccountIdByUserPrincipalName(itemId, userPrincipalName);
}
#endregion #endregion
@ -107,13 +114,13 @@ namespace WebsitePanel.EnterpriseServer
{ {
return OrganizationController.AddOrganizationDomain(itemId, domainName); return OrganizationController.AddOrganizationDomain(itemId, domainName);
} }
[WebMethod] [WebMethod]
public List<OrganizationDomainName> GetOrganizationDomains(int itemId) public List<OrganizationDomainName> GetOrganizationDomains(int itemId)
{ {
return OrganizationController.GetOrganizationDomains(itemId); return OrganizationController.GetOrganizationDomains(itemId);
} }
[WebMethod] [WebMethod]
public int DeleteOrganizationDomain(int itemId, int domainId) public int DeleteOrganizationDomain(int itemId, int domainId)
{ {
@ -132,15 +139,22 @@ namespace WebsitePanel.EnterpriseServer
#region Users #region Users
[WebMethod] [WebMethod]
public int CreateUser(int itemId, string displayName, string name, string domain, string password, bool sendNotification, string to) public int CreateUser(int itemId, string displayName, string name, string domain, string password, string subscriberNumber, bool sendNotification, string to)
{ {
string accountName; string accountName;
return OrganizationController.CreateUser(itemId, displayName, name, domain, password, true, sendNotification, to, out accountName); return OrganizationController.CreateUser(itemId, displayName, name, domain, password, subscriberNumber, true, sendNotification, to, out accountName);
} }
[WebMethod]
public int ImportUser(int itemId, string accountName, string displayName, string name, string domain, string password, string subscriberNumber)
{
return OrganizationController.ImportUser(itemId, accountName, displayName, name, domain, password, subscriberNumber);
}
[WebMethod] [WebMethod]
public OrganizationUsersPaged GetOrganizationUsersPaged(int itemId, string filterColumn, string filterValue, string sortColumn, public OrganizationUsersPaged GetOrganizationUsersPaged(int itemId, string filterColumn, string filterValue, string sortColumn,
int startRow, int maximumRows) int startRow, int maximumRows)
{ {
return OrganizationController.GetOrganizationUsersPaged(itemId, filterColumn, filterValue, sortColumn, startRow, maximumRows); return OrganizationController.GetOrganizationUsersPaged(itemId, filterColumn, filterValue, sortColumn, startRow, maximumRows);
} }
@ -157,30 +171,30 @@ namespace WebsitePanel.EnterpriseServer
string lastName, string address, string city, string state, string zip, string country, string lastName, string address, string city, string state, string zip, string country,
string jobTitle, string company, string department, string office, string managerAccountName, string jobTitle, string company, string department, string office, string managerAccountName,
string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string businessPhone, string fax, string homePhone, string mobilePhone, string pager,
string webPage, string notes, string externalEmail) string webPage, string notes, string externalEmail, string subscriberNumber)
{ {
return OrganizationController.SetUserGeneralSettings(itemId, accountId, displayName, return OrganizationController.SetUserGeneralSettings(itemId, accountId, displayName,
password, hideAddressBook, disabled, locked, firstName, initials, password, hideAddressBook, disabled, locked, firstName, initials,
lastName, address, city, state, zip, country, lastName, address, city, state, zip, country,
jobTitle, company, department, office, managerAccountName, jobTitle, company, department, office, managerAccountName,
businessPhone, fax, homePhone, mobilePhone, pager, businessPhone, fax, homePhone, mobilePhone, pager,
webPage, notes, externalEmail); webPage, notes, externalEmail, subscriberNumber);
} }
[WebMethod] [WebMethod]
public List<OrganizationUser> SearchAccounts(int itemId, public List<OrganizationUser> SearchAccounts(int itemId,
string filterColumn, string filterValue, string sortColumn, bool includeMailboxes) string filterColumn, string filterValue, string sortColumn, bool includeMailboxes)
{ {
return OrganizationController.SearchAccounts(itemId, return OrganizationController.SearchAccounts(itemId,
filterColumn, filterValue, sortColumn, includeMailboxes); filterColumn, filterValue, sortColumn, includeMailboxes);
} }
[WebMethod] [WebMethod]
public int DeleteUser(int itemId, int accountId) public int DeleteUser(int itemId, int accountId)
{ {
return OrganizationController.DeleteUser(itemId, accountId); return OrganizationController.DeleteUser(itemId, accountId);
} }

View file

@ -1,4 +1,4 @@
// Copyright (c) 2012, Outercurve Foundation. // Copyright (c) 2011, 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,
@ -39,7 +39,7 @@ namespace WebsitePanel.Providers.HostedSolution
{ {
public static DirectoryEntry GetADObject(string path) public static DirectoryEntry GetADObject(string path)
{ {
DirectoryEntry de = new DirectoryEntry(path); DirectoryEntry de = new DirectoryEntry(path);
de.RefreshCache(); de.RefreshCache();
return de; return de;
} }
@ -48,16 +48,16 @@ namespace WebsitePanel.Providers.HostedSolution
{ {
bool res = false; bool res = false;
DirectorySearcher deSearch = new DirectorySearcher DirectorySearcher deSearch = new DirectorySearcher
{ {
Filter = Filter =
("(&(objectClass=user)(samaccountname=" + samAccountName + "))") ("(&(objectClass=user)(samaccountname=" + samAccountName + "))")
}; };
//get the group result //get the group result
SearchResult results = deSearch.FindOne(); SearchResult results = deSearch.FindOne();
DirectoryEntry de = results.GetDirectoryEntry(); DirectoryEntry de = results.GetDirectoryEntry();
PropertyValueCollection props = de.Properties["memberOf"]; PropertyValueCollection props = de.Properties["memberOf"];
foreach (string str in props) foreach (string str in props)
{ {
if (str.IndexOf(group) != -1) if (str.IndexOf(group) != -1)
@ -81,8 +81,8 @@ namespace WebsitePanel.Providers.HostedSolution
ou = parent.Children.Add( ou = parent.Children.Add(
string.Format("OU={0}", name), string.Format("OU={0}", name),
parent.SchemaClassName); parent.SchemaClassName);
ret = ou.Path; ret = ou.Path;
ou.CommitChanges(); ou.CommitChanges();
} }
@ -100,13 +100,13 @@ namespace WebsitePanel.Providers.HostedSolution
public static void DeleteADObject(string path, bool removeChild) public static void DeleteADObject(string path, bool removeChild)
{ {
DirectoryEntry entry = GetADObject(path); DirectoryEntry entry = GetADObject(path);
if (removeChild && entry.Children != null) if (removeChild && entry.Children != null)
foreach (DirectoryEntry child in entry.Children) foreach (DirectoryEntry child in entry.Children)
{ {
entry.Children.Remove(child); entry.Children.Remove(child);
} }
DirectoryEntry parent = entry.Parent; DirectoryEntry parent = entry.Parent;
if (parent != null) if (parent != null)
{ {
@ -115,7 +115,7 @@ namespace WebsitePanel.Providers.HostedSolution
} }
} }
public static void DeleteADObject(string path) public static void DeleteADObject(string path)
{ {
DirectoryEntry entry = GetADObject(path); DirectoryEntry entry = GetADObject(path);
@ -141,21 +141,34 @@ namespace WebsitePanel.Providers.HostedSolution
} }
} }
else else
{ {
if (oDE.Properties.Contains(name)) if (oDE.Properties.Contains(name))
{ {
oDE.Properties[name].Remove(oDE.Properties[name][0]); oDE.Properties[name].Remove(oDE.Properties[name][0]);
} }
} }
} }
public static void SetADObjectPropertyValue(DirectoryEntry oDE, string name, object value) public static void SetADObjectPropertyValue(DirectoryEntry oDE, string name, string value)
{ {
PropertyValueCollection collection = oDE.Properties[name]; PropertyValueCollection collection = oDE.Properties[name];
collection.Value = value; collection.Value = value;
} }
public static void SetADObjectPropertyValue(DirectoryEntry oDE, string name, Guid value)
{
PropertyValueCollection collection = oDE.Properties[name];
collection.Value = value.ToByteArray();
}
public static void ClearADObjectPropertyValue(DirectoryEntry oDE, string name)
{
PropertyValueCollection collection = oDE.Properties[name];
collection.Clear();
}
public static object GetADObjectProperty(DirectoryEntry entry, string name) public static object GetADObjectProperty(DirectoryEntry entry, string name)
{ {
return entry.Properties.Contains(name) ? entry.Properties[name][0] : null; return entry.Properties.Contains(name) ? entry.Properties[name][0] : null;
@ -164,7 +177,7 @@ namespace WebsitePanel.Providers.HostedSolution
public static string GetADObjectStringProperty(DirectoryEntry entry, string name) public static string GetADObjectStringProperty(DirectoryEntry entry, string name)
{ {
object ret = GetADObjectProperty(entry, name); object ret = GetADObjectProperty(entry, name);
return ret != null ? ret.ToString() : string.Empty; return ret != null ? ret.ToString() : string.Empty;
} }
public static string ConvertADPathToCanonicalName(string name) public static string ConvertADPathToCanonicalName(string name)
@ -254,29 +267,38 @@ namespace WebsitePanel.Providers.HostedSolution
return ret; return ret;
} }
public static string CreateUser(string path, string user, string displayName, string password, bool enabled) public static string CreateUser(string path, string user, string displayName, string password, bool enabled)
{ {
DirectoryEntry currentADObject = new DirectoryEntry(path); return CreateUser(path, "", user, displayName, password, enabled);
}
DirectoryEntry newUserObject = currentADObject.Children.Add("CN=" + user, "User"); public static string CreateUser(string path, string upn, string user, string displayName, string password, bool enabled)
{
newUserObject.Properties[ADAttributes.SAMAccountName].Add(user); DirectoryEntry currentADObject = new DirectoryEntry(path);
string cn = string.Empty;
if (string.IsNullOrEmpty(upn)) cn = user; else cn = upn;
DirectoryEntry newUserObject = currentADObject.Children.Add("CN=" + cn, "User");
newUserObject.Properties[ADAttributes.SAMAccountName].Add(user);
SetADObjectProperty(newUserObject, ADAttributes.DisplayName, displayName); SetADObjectProperty(newUserObject, ADAttributes.DisplayName, displayName);
newUserObject.CommitChanges(); newUserObject.CommitChanges();
newUserObject.Invoke(ADAttributes.SetPassword, password); newUserObject.Invoke(ADAttributes.SetPassword, password);
newUserObject.InvokeSet(ADAttributes.AccountDisabled, !enabled); newUserObject.InvokeSet(ADAttributes.AccountDisabled, !enabled);
newUserObject.CommitChanges(); newUserObject.CommitChanges();
return newUserObject.Path; return newUserObject.Path;
} }
public static void CreateGroup(string path, string group) public static void CreateGroup(string path, string group)
{ {
DirectoryEntry currentADObject = new DirectoryEntry(path); DirectoryEntry currentADObject = new DirectoryEntry(path);
DirectoryEntry newGroupObject = currentADObject.Children.Add("CN=" + group, "Group"); DirectoryEntry newGroupObject = currentADObject.Children.Add("CN=" + group, "Group");
newGroupObject.Properties[ADAttributes.SAMAccountName].Add(group); newGroupObject.Properties[ADAttributes.SAMAccountName].Add(group);
newGroupObject.Properties[ADAttributes.GroupType].Add(-2147483640); newGroupObject.Properties[ADAttributes.GroupType].Add(-2147483640);
@ -320,7 +342,7 @@ namespace WebsitePanel.Providers.HostedSolution
if (string.IsNullOrEmpty(primaryDomainController)) if (string.IsNullOrEmpty(primaryDomainController))
{ {
dn = string.Format("LDAP://{0}", dn); dn = string.Format("LDAP://{0}", dn);
} }
else else
dn = string.Format("LDAP://{0}/{1}", primaryDomainController, dn); dn = string.Format("LDAP://{0}/{1}", primaryDomainController, dn);
@ -358,7 +380,7 @@ namespace WebsitePanel.Providers.HostedSolution
DirectoryEntry ou = GetADObject(ouPath); DirectoryEntry ou = GetADObject(ouPath);
PropertyValueCollection prop = null; PropertyValueCollection prop = null;
prop = ou.Properties["uPNSuffixes"]; prop = ou.Properties["uPNSuffixes"];
if (prop != null) if (prop != null)
{ {

View file

@ -32,32 +32,35 @@ using System.Text;
namespace WebsitePanel.Providers.HostedSolution namespace WebsitePanel.Providers.HostedSolution
{ {
public class ExchangeAccount public class ExchangeAccount
{ {
int accountId; int accountId;
int itemId; int itemId;
int packageId; int packageId;
ExchangeAccountType accountType; string subscriberNumber;
string accountName; ExchangeAccountType accountType;
string displayName; string accountName;
string primaryEmailAddress; string displayName;
bool mailEnabledPublicFolder; string primaryEmailAddress;
bool mailEnabledPublicFolder;
MailboxManagerActions mailboxManagerActions; MailboxManagerActions mailboxManagerActions;
string accountPassword; string accountPassword;
string samAccountName; string samAccountName;
int mailboxPlanId;
string mailboxPlan;
string publicFolderPermission; string publicFolderPermission;
public int AccountId public int AccountId
{ {
get { return this.accountId; } get { return this.accountId; }
set { this.accountId = value; } set { this.accountId = value; }
} }
public int ItemId public int ItemId
{ {
get { return this.itemId; } get { return this.itemId; }
set { this.itemId = value; } set { this.itemId = value; }
} }
public int PackageId public int PackageId
{ {
@ -65,17 +68,17 @@ namespace WebsitePanel.Providers.HostedSolution
set { this.packageId = value; } set { this.packageId = value; }
} }
public ExchangeAccountType AccountType public ExchangeAccountType AccountType
{ {
get { return this.accountType; } get { return this.accountType; }
set { this.accountType = value; } set { this.accountType = value; }
} }
public string AccountName public string AccountName
{ {
get { return this.accountName; } get { return this.accountName; }
set { this.accountName = value; } set { this.accountName = value; }
} }
public string SamAccountName public string SamAccountName
{ {
@ -83,23 +86,23 @@ namespace WebsitePanel.Providers.HostedSolution
set { this.samAccountName = value; } set { this.samAccountName = value; }
} }
public string DisplayName public string DisplayName
{ {
get { return this.displayName; } get { return this.displayName; }
set { this.displayName = value; } set { this.displayName = value; }
} }
public string PrimaryEmailAddress public string PrimaryEmailAddress
{ {
get { return this.primaryEmailAddress; } get { return this.primaryEmailAddress; }
set { this.primaryEmailAddress = value; } set { this.primaryEmailAddress = value; }
} }
public bool MailEnabledPublicFolder public bool MailEnabledPublicFolder
{ {
get { return this.mailEnabledPublicFolder; } get { return this.mailEnabledPublicFolder; }
set { this.mailEnabledPublicFolder = value; } set { this.mailEnabledPublicFolder = value; }
} }
public string AccountPassword public string AccountPassword
{ {
@ -113,10 +116,31 @@ namespace WebsitePanel.Providers.HostedSolution
set { this.mailboxManagerActions = value; } set { this.mailboxManagerActions = value; }
} }
public int MailboxPlanId
{
get { return this.mailboxPlanId; }
set { this.mailboxPlanId = value; }
}
public string MailboxPlan
{
get { return this.mailboxPlan; }
set { this.mailboxPlan = value; }
}
public string SubscriberNumber
{
get { return this.subscriberNumber; }
set { this.subscriberNumber = value; }
}
public string PublicFolderPermission public string PublicFolderPermission
{ {
get { return this.publicFolderPermission; } get { return this.publicFolderPermission; }
set { this.publicFolderPermission = value; } set { this.publicFolderPermission = value; }
} }
}
}
} }

View file

@ -32,209 +32,219 @@ using System.Text;
namespace WebsitePanel.Providers.HostedSolution namespace WebsitePanel.Providers.HostedSolution
{ {
public class ExchangeContact public class ExchangeContact
{ {
string displayName; string displayName;
string accountName; string accountName;
string emailAddress; string emailAddress;
bool hideFromAddressBook; bool hideFromAddressBook;
string firstName; string firstName;
string initials; string initials;
string lastName; string lastName;
string jobTitle; string jobTitle;
string company; string company;
string department; string department;
string office; string office;
ExchangeAccount managerAccount; ExchangeAccount managerAccount;
string businessPhone; string businessPhone;
string fax; string fax;
string homePhone; string homePhone;
string mobilePhone; string mobilePhone;
string pager; string pager;
string webPage; string webPage;
string address; string address;
string city; string city;
string state; string state;
string zip; string zip;
string country; string country;
string notes; string notes;
private int useMapiRichTextFormat; string sAMAccountName;
private int useMapiRichTextFormat;
ExchangeAccount[] acceptAccounts;
ExchangeAccount[] rejectAccounts;
bool requireSenderAuthentication;
public string DisplayName ExchangeAccount[] acceptAccounts;
{ ExchangeAccount[] rejectAccounts;
get { return this.displayName; } bool requireSenderAuthentication;
set { this.displayName = value; }
}
public string AccountName public string DisplayName
{ {
get { return this.accountName; } get { return this.displayName; }
set { this.accountName = value; } set { this.displayName = value; }
} }
public string EmailAddress public string AccountName
{ {
get { return this.emailAddress; } get { return this.accountName; }
set { this.emailAddress = value; } set { this.accountName = value; }
} }
public bool HideFromAddressBook public string EmailAddress
{ {
get { return this.hideFromAddressBook; } get { return this.emailAddress; }
set { this.hideFromAddressBook = value; } set { this.emailAddress = value; }
} }
public string FirstName public bool HideFromAddressBook
{ {
get { return this.firstName; } get { return this.hideFromAddressBook; }
set { this.firstName = value; } set { this.hideFromAddressBook = value; }
} }
public string Initials public string FirstName
{ {
get { return this.initials; } get { return this.firstName; }
set { this.initials = value; } set { this.firstName = value; }
} }
public string LastName public string Initials
{ {
get { return this.lastName; } get { return this.initials; }
set { this.lastName = value; } set { this.initials = value; }
} }
public string JobTitle public string LastName
{ {
get { return this.jobTitle; } get { return this.lastName; }
set { this.jobTitle = value; } set { this.lastName = value; }
} }
public string Company public string JobTitle
{ {
get { return this.company; } get { return this.jobTitle; }
set { this.company = value; } set { this.jobTitle = value; }
} }
public string Department public string Company
{ {
get { return this.department; } get { return this.company; }
set { this.department = value; } set { this.company = value; }
} }
public string Office public string Department
{ {
get { return this.office; } get { return this.department; }
set { this.office = value; } set { this.department = value; }
} }
public ExchangeAccount ManagerAccount public string Office
{ {
get { return this.managerAccount; } get { return this.office; }
set { this.managerAccount = value; } set { this.office = value; }
} }
public string BusinessPhone public ExchangeAccount ManagerAccount
{ {
get { return this.businessPhone; } get { return this.managerAccount; }
set { this.businessPhone = value; } set { this.managerAccount = value; }
} }
public string Fax public string BusinessPhone
{ {
get { return this.fax; } get { return this.businessPhone; }
set { this.fax = value; } set { this.businessPhone = value; }
} }
public string HomePhone public string Fax
{ {
get { return this.homePhone; } get { return this.fax; }
set { this.homePhone = value; } set { this.fax = value; }
} }
public string MobilePhone public string HomePhone
{ {
get { return this.mobilePhone; } get { return this.homePhone; }
set { this.mobilePhone = value; } set { this.homePhone = value; }
} }
public string Pager public string MobilePhone
{ {
get { return this.pager; } get { return this.mobilePhone; }
set { this.pager = value; } set { this.mobilePhone = value; }
} }
public string WebPage public string Pager
{ {
get { return this.webPage; } get { return this.pager; }
set { this.webPage = value; } set { this.pager = value; }
} }
public string Address public string WebPage
{ {
get { return this.address; } get { return this.webPage; }
set { this.address = value; } set { this.webPage = value; }
} }
public string City public string Address
{ {
get { return this.city; } get { return this.address; }
set { this.city = value; } set { this.address = value; }
} }
public string State public string City
{ {
get { return this.state; } get { return this.city; }
set { this.state = value; } set { this.city = value; }
} }
public string Zip public string State
{ {
get { return this.zip; } get { return this.state; }
set { this.zip = value; } set { this.state = value; }
} }
public string Country public string Zip
{ {
get { return this.country; } get { return this.zip; }
set { this.country = value; } set { this.zip = value; }
} }
public string Notes public string Country
{ {
get { return this.notes; } get { return this.country; }
set { this.notes = value; } set { this.country = value; }
} }
public ExchangeAccount[] AcceptAccounts public string Notes
{ {
get { return this.acceptAccounts; } get { return this.notes; }
set { this.acceptAccounts = value; } set { this.notes = value; }
} }
public ExchangeAccount[] RejectAccounts public ExchangeAccount[] AcceptAccounts
{ {
get { return this.rejectAccounts; } get { return this.acceptAccounts; }
set { this.rejectAccounts = value; } set { this.acceptAccounts = value; }
} }
public bool RequireSenderAuthentication public ExchangeAccount[] RejectAccounts
{ {
get { return requireSenderAuthentication; } get { return this.rejectAccounts; }
set { requireSenderAuthentication = value; } set { this.rejectAccounts = value; }
} }
public int UseMapiRichTextFormat public bool RequireSenderAuthentication
{ {
get { return requireSenderAuthentication; }
set { requireSenderAuthentication = value; }
}
public int UseMapiRichTextFormat
{
get { return useMapiRichTextFormat; } get { return useMapiRichTextFormat; }
set { useMapiRichTextFormat = value; } set { useMapiRichTextFormat = value; }
} }
}
public string SAMAccountName
{
get { return sAMAccountName; }
set { sAMAccountName = value; }
}
}
} }

View file

@ -32,72 +32,79 @@ using System.Text;
namespace WebsitePanel.Providers.HostedSolution namespace WebsitePanel.Providers.HostedSolution
{ {
public class ExchangeDistributionList public class ExchangeDistributionList
{ {
public string DisplayName public string DisplayName
{ {
get; get;
set; set;
} }
public string AccountName public string AccountName
{ {
get; get;
set; set;
} }
public bool HideFromAddressBook public bool HideFromAddressBook
{ {
get; get;
set; set;
} }
public ExchangeAccount[] MembersAccounts public ExchangeAccount[] MembersAccounts
{ {
get; get;
set; set;
} }
public ExchangeAccount ManagerAccount public ExchangeAccount ManagerAccount
{ {
get; get;
set; set;
} }
public string Notes public string Notes
{ {
get; get;
set; set;
} }
public ExchangeAccount[] AcceptAccounts public ExchangeAccount[] AcceptAccounts
{ {
get; get;
set; set;
} }
public ExchangeAccount[] RejectAccounts public ExchangeAccount[] RejectAccounts
{ {
get; get;
set; set;
} }
public bool RequireSenderAuthentication public bool RequireSenderAuthentication
{ {
get; get;
set; set;
} }
public ExchangeAccount[] SendAsAccounts
{
get;
set;
}
public ExchangeAccount[] SendOnBehalfAccounts public ExchangeAccount[] SendAsAccounts
{ {
get; get;
set; set;
} }
}
public ExchangeAccount[] SendOnBehalfAccounts
{
get;
set;
}
public string SAMAccountName
{
get;
set;
}
}
} }

View file

@ -0,0 +1,160 @@
// Copyright (c) 2012, 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;
using System.Collections.Generic;
using System.Text;
namespace WebsitePanel.Providers.HostedSolution
{
public class ExchangeMailboxPlan
{
int mailboxPlanId;
string mailboxPlan;
int mailboxSizeMB;
int maxRecipients;
int maxSendMessageSizeKB;
int maxReceiveMessageSizeKB;
bool enablePOP;
bool enableIMAP;
bool enableOWA;
bool enableMAPI;
bool enableActiveSync;
int issueWarningPct;
int prohibitSendPct;
int prohibitSendReceivePct;
int keepDeletedItemsDays;
bool isDefault;
bool hideFromAddressBook;
public int MailboxPlanId
{
get { return this.mailboxPlanId; }
set { this.mailboxPlanId = value; }
}
public string MailboxPlan
{
get { return this.mailboxPlan; }
set { this.mailboxPlan = value; }
}
public int MailboxSizeMB
{
get { return this.mailboxSizeMB; }
set { this.mailboxSizeMB = value; }
}
public bool IsDefault
{
get { return this.isDefault; }
set { this.isDefault = value; }
}
public int MaxRecipients
{
get { return this.maxRecipients; }
set { this.maxRecipients = value; }
}
public int MaxSendMessageSizeKB
{
get { return this.maxSendMessageSizeKB; }
set { this.maxSendMessageSizeKB = value; }
}
public int MaxReceiveMessageSizeKB
{
get { return this.maxReceiveMessageSizeKB; }
set { this.maxReceiveMessageSizeKB = value; }
}
public bool EnablePOP
{
get { return this.enablePOP; }
set { this.enablePOP = value; }
}
public bool EnableIMAP
{
get { return this.enableIMAP; }
set { this.enableIMAP = value; }
}
public bool EnableOWA
{
get { return this.enableOWA; }
set { this.enableOWA = value; }
}
public bool EnableMAPI
{
get { return this.enableMAPI; }
set { this.enableMAPI = value; }
}
public bool EnableActiveSync
{
get { return this.enableActiveSync; }
set { this.enableActiveSync = value; }
}
public int IssueWarningPct
{
get { return this.issueWarningPct; }
set { this.issueWarningPct = value; }
}
public int ProhibitSendPct
{
get { return this.prohibitSendPct; }
set { this.prohibitSendPct = value; }
}
public int ProhibitSendReceivePct
{
get { return this.prohibitSendReceivePct; }
set { this.prohibitSendReceivePct = value; }
}
public int KeepDeletedItemsDays
{
get { return this.keepDeletedItemsDays; }
set { this.keepDeletedItemsDays = value; }
}
public bool HideFromAddressBook
{
get { return this.hideFromAddressBook; }
set { this.hideFromAddressBook = value; }
}
}
}

View file

@ -30,70 +30,71 @@ namespace WebsitePanel.Providers.HostedSolution
{ {
public interface IExchangeServer public interface IExchangeServer
{ {
bool CheckAccountCredentials(string username, string password); bool CheckAccountCredentials(string username, string password);
// Organizations // Organizations
string CreateMailEnableUser(string upn, string organizationId, string organizationDistinguishedName, ExchangeAccountType accountType, string CreateMailEnableUser(string upn, string organizationId, string organizationDistinguishedName, ExchangeAccountType accountType,
string mailboxDatabase, string offlineAddressBook, string mailboxDatabase, string offlineAddressBook, string addressBookPolicy,
string accountName, bool enablePOP, bool enableIMAP, string accountName, bool enablePOP, bool enableIMAP,
bool enableOWA, bool enableMAPI, bool enableActiveSync, bool enableOWA, bool enableMAPI, bool enableActiveSync,
int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB,
int keepDeletedItemsDays); int keepDeletedItemsDays, int maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB, bool hideFromAddressBook, bool isConsumer);
Organization ExtendToExchangeOrganization(string organizationId, string securityGroup);
string GetOABVirtualDirectory();
Organization CreateOrganizationOfflineAddressBook(string organizationId, string securityGroup, string oabVirtualDir);
void UpdateOrganizationOfflineAddressBook(string id);
bool DeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook, string securityGroup);
void SetOrganizationStorageLimits(string organizationDistinguishedName, int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays);
ExchangeItemStatistics[] GetMailboxesStatistics(string organizationDistinguishedName);
// Domains Organization ExtendToExchangeOrganization(string organizationId, string securityGroup, bool IsConsumer);
string GetOABVirtualDirectory();
Organization CreateOrganizationOfflineAddressBook(string organizationId, string securityGroup, string oabVirtualDir);
Organization CreateOrganizationAddressBookPolicy(string organizationId, string gal, string addressBook, string roomList, string oab);
void UpdateOrganizationOfflineAddressBook(string id);
bool DeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string roomList, string offlineAddressBook, string securityGroup, string addressBookPolicy);
void SetOrganizationStorageLimits(string organizationDistinguishedName, int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays);
ExchangeItemStatistics[] GetMailboxesStatistics(string organizationDistinguishedName);
// Domains
void AddAuthoritativeDomain(string domain); void AddAuthoritativeDomain(string domain);
void DeleteAuthoritativeDomain(string domain); void DeleteAuthoritativeDomain(string domain);
string[] GetAuthoritativeDomains(); string[] GetAuthoritativeDomains();
// Mailboxes // Mailboxes
string CreateMailbox(string organizationId, string organizationDistinguishedName, string mailboxDatabase, string securityGroup, string offlineAddressBook, ExchangeAccountType accountType, string displayName, string accountName, string name, string domain, string password, bool enablePOP, bool enableIMAP, bool enableOWA, bool enableMAPI, bool enableActiveSync, //string CreateMailbox(string organizationId, string organizationDistinguishedName, string mailboxDatabase, string securityGroup, string offlineAddressBook, string addressBookPolicy, ExchangeAccountType accountType, string displayName, string accountName, string name, string domain, string password, bool enablePOP, bool enableIMAP, bool enableOWA, bool enableMAPI, bool enableActiveSync,
int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays); // int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays, int maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB,bool hideFromAddressBook);
void DeleteMailbox(string accountName); void DeleteMailbox(string accountName);
void DisableMailbox(string id); void DisableMailbox(string id);
ExchangeMailbox GetMailboxGeneralSettings(string accountName); ExchangeMailbox GetMailboxGeneralSettings(string accountName);
void SetMailboxGeneralSettings(string accountName, string displayName, string password, bool hideFromAddressBook, bool disabled, string firstName, string initials, string lastName, string address, string city, string state, string zip, string country, string jobTitle, string company, string department, string office, string managerAccountName, string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string webPage, string notes); void SetMailboxGeneralSettings(string accountName, bool hideFromAddressBook, bool disabled);
ExchangeMailbox GetMailboxMailFlowSettings(string accountName); ExchangeMailbox GetMailboxMailFlowSettings(string accountName);
void SetMailboxMailFlowSettings(string accountName, bool enableForwarding, string forwardingAccountName, bool forwardToBoth, string[] sendOnBehalfAccounts, string[] acceptAccounts, string[] rejectAccounts, int maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB, bool requireSenderAuthentication); void SetMailboxMailFlowSettings(string accountName, bool enableForwarding, string forwardingAccountName, bool forwardToBoth, string[] sendOnBehalfAccounts, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication);
ExchangeMailbox GetMailboxAdvancedSettings(string accountName); ExchangeMailbox GetMailboxAdvancedSettings(string accountName);
void SetMailboxAdvancedSettings(string organizationId, string accountName, bool enablePOP, bool enableIMAP, bool enableOWA, bool enableMAPI, bool enableActiveSync, int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays); void SetMailboxAdvancedSettings(string organizationId, string accountName, bool enablePOP, bool enableIMAP, bool enableOWA, bool enableMAPI, bool enableActiveSync, int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays, int maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB);
ExchangeEmailAddress[] GetMailboxEmailAddresses(string accountName); ExchangeEmailAddress[] GetMailboxEmailAddresses(string accountName);
void SetMailboxEmailAddresses(string accountName, string[] emailAddresses); void SetMailboxEmailAddresses(string accountName, string[] emailAddresses);
void SetMailboxPrimaryEmailAddress(string accountName, string emailAddress); void SetMailboxPrimaryEmailAddress(string accountName, string emailAddress);
void SetMailboxPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] fullAccessAccounts); void SetMailboxPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] fullAccessAccounts);
ExchangeMailbox GetMailboxPermissions(string organizationId, string accountName); ExchangeMailbox GetMailboxPermissions(string organizationId, string accountName);
ExchangeMailboxStatistics GetMailboxStatistics(string accountName); ExchangeMailboxStatistics GetMailboxStatistics(string accountName);
// Contacts // Contacts
void CreateContact(string organizationId, string organizationDistinguishedName, string contactDisplayName, string contactAccountName, string contactEmail, string defaultOrganizationDomain); void CreateContact(string organizationId, string organizationDistinguishedName, string contactDisplayName, string contactAccountName, string contactEmail, string defaultOrganizationDomain);
void DeleteContact(string accountName); void DeleteContact(string accountName);
ExchangeContact GetContactGeneralSettings(string accountName); ExchangeContact GetContactGeneralSettings(string accountName);
void SetContactGeneralSettings(string accountName, string displayName, string email, bool hideFromAddressBook, string firstName, string initials, string lastName, string address, string city, string state, string zip, string country, string jobTitle, string company, string department, string office, string managerAccountName, string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string webPage, string notes, int useMapiRichTextFormat, string defaultDomain); void SetContactGeneralSettings(string accountName, string displayName, string email, bool hideFromAddressBook, string firstName, string initials, string lastName, string address, string city, string state, string zip, string country, string jobTitle, string company, string department, string office, string managerAccountName, string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string webPage, string notes, int useMapiRichTextFormat, string defaultDomain);
ExchangeContact GetContactMailFlowSettings(string accountName); ExchangeContact GetContactMailFlowSettings(string accountName);
void SetContactMailFlowSettings(string accountName, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication); void SetContactMailFlowSettings(string accountName, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication);
// Distribution Lists // Distribution Lists
void CreateDistributionList(string organizationId, string organizationDistinguishedName, string displayName, string accountName, string name, string domain, string managedBy); void CreateDistributionList(string organizationId, string organizationDistinguishedName, string displayName, string accountName, string name, string domain, string managedBy, string[] addressLists);
void DeleteDistributionList(string accountName); void DeleteDistributionList(string accountName);
ExchangeDistributionList GetDistributionListGeneralSettings(string accountName); ExchangeDistributionList GetDistributionListGeneralSettings(string accountName);
void SetDistributionListGeneralSettings(string accountName, string displayName, bool hideFromAddressBook, string managedBy, string[] memebers, string notes); void SetDistributionListGeneralSettings(string accountName, string displayName, bool hideFromAddressBook, string managedBy, string[] memebers, string notes, string[] addressLists);
void AddDistributionListMembers(string accountName, string[] memberAccounts); void AddDistributionListMembers(string accountName, string[] memberAccounts, string[] addressLists);
void RemoveDistributionListMembers(string accountName, string[] memberAccounts); void RemoveDistributionListMembers(string accountName, string[] memberAccounts, string[] addressLists);
ExchangeDistributionList GetDistributionListMailFlowSettings(string accountName); ExchangeDistributionList GetDistributionListMailFlowSettings(string accountName);
void SetDistributionListMailFlowSettings(string accountName, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication); void SetDistributionListMailFlowSettings(string accountName, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication, string[] addressLists);
ExchangeEmailAddress[] GetDistributionListEmailAddresses(string accountName); ExchangeEmailAddress[] GetDistributionListEmailAddresses(string accountName);
void SetDistributionListEmailAddresses(string accountName, string[] emailAddresses); void SetDistributionListEmailAddresses(string accountName, string[] emailAddresses, string[] addressLists);
void SetDistributionListPrimaryEmailAddress(string accountName, string emailAddress); void SetDistributionListPrimaryEmailAddress(string accountName, string emailAddress, string[] addressLists);
ExchangeDistributionList GetDistributionListPermissions(string organizationId, string accountName); ExchangeDistributionList GetDistributionListPermissions(string organizationId, string accountName);
void SetDistributionListPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] sendOnBehalfAccounts); void SetDistributionListPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] sendOnBehalfAccounts, string[] addressLists);
// Public Folders // Public Folders
void CreatePublicFolder(string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain); void CreatePublicFolder(string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain);
@ -111,20 +112,20 @@ namespace WebsitePanel.Providers.HostedSolution
string[] GetPublicFoldersRecursive(string parent); string[] GetPublicFoldersRecursive(string parent);
long GetPublicFolderSize(string folder); long GetPublicFolderSize(string folder);
//ActiveSync //ActiveSync
void CreateOrganizationActiveSyncPolicy(string organizationId); void CreateOrganizationActiveSyncPolicy(string organizationId);
ExchangeActiveSyncPolicy GetActiveSyncPolicy(string organizationId); ExchangeActiveSyncPolicy GetActiveSyncPolicy(string organizationId);
void SetActiveSyncPolicy(string organizationId, bool allowNonProvisionableDevices, bool attachmentsEnabled, void SetActiveSyncPolicy(string organizationId, bool allowNonProvisionableDevices, bool attachmentsEnabled,
int maxAttachmentSizeKB, bool uncAccessEnabled, bool wssAccessEnabled, bool devicePasswordEnabled, int maxAttachmentSizeKB, bool uncAccessEnabled, bool wssAccessEnabled, bool devicePasswordEnabled,
bool alphanumericPasswordRequired, bool passwordRecoveryEnabled, bool deviceEncryptionEnabled, bool alphanumericPasswordRequired, bool passwordRecoveryEnabled, bool deviceEncryptionEnabled,
bool allowSimplePassword, int maxPasswordFailedAttempts, int minPasswordLength, int inactivityLockMin, bool allowSimplePassword, int maxPasswordFailedAttempts, int minPasswordLength, int inactivityLockMin,
int passwordExpirationDays, int passwordHistory, int refreshInterval); int passwordExpirationDays, int passwordHistory, int refreshInterval);
//Mobile Devices //Mobile Devices
ExchangeMobileDevice[] GetMobileDevices(string accountName); ExchangeMobileDevice[] GetMobileDevices(string accountName);
ExchangeMobileDevice GetMobileDevice(string id); ExchangeMobileDevice GetMobileDevice(string id);
void WipeDataFromDevice(string id); void WipeDataFromDevice(string id);
void CancelRemoteWipeRequest(string id); void CancelRemoteWipeRequest(string id);
void RemoveDevice(string id); void RemoveDevice(string id);
} }
} }

View file

@ -33,10 +33,10 @@ namespace WebsitePanel.Providers.HostedSolution
public interface IOrganization public interface IOrganization
{ {
Organization CreateOrganization(string organizationId); Organization CreateOrganization(string organizationId);
void DeleteOrganization(string organizationId); void DeleteOrganization(string organizationId);
void CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled); int CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled);
void DeleteUser(string loginName, string organizationId); void DeleteUser(string loginName, string organizationId);
@ -49,7 +49,7 @@ namespace WebsitePanel.Providers.HostedSolution
string jobTitle, string jobTitle,
string company, string department, string office, string managerAccountName, string company, string department, string office, string managerAccountName,
string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string businessPhone, string fax, string homePhone, string mobilePhone, string pager,
string webPage, string notes, string externalEmail); string webPage, string notes, string externalEmail);
bool OrganizationExists(string organizationId); bool OrganizationExists(string organizationId);
@ -58,5 +58,7 @@ namespace WebsitePanel.Providers.HostedSolution
void CreateOrganizationDomain(string organizationDistinguishedName, string domain); void CreateOrganizationDomain(string organizationDistinguishedName, string domain);
PasswordPolicyResult GetPasswordPolicy(); PasswordPolicyResult GetPasswordPolicy();
string GetSamAccountNameByUserPrincipalName(string organizationId, string userPrincipalName);
} }
} }

View file

@ -41,12 +41,12 @@ namespace WebsitePanel.Providers.HostedSolution
private string addressList; private string addressList;
private string roomsAddressList; private string roomsAddressList;
private string globalAddressList; private string globalAddressList;
private string addressBookPolicy;
private string database; private string database;
private string securityGroup; private string securityGroup;
private string lyncTenantId;
private int diskSpace; private int diskSpace;
private int issueWarningKB;
private int prohibitSendKB;
private int prohibitSendReceiveKB;
private int keepDeletedItemsDays; private int keepDeletedItemsDays;
@ -125,7 +125,7 @@ namespace WebsitePanel.Providers.HostedSolution
get { return crmCurrency; } get { return crmCurrency; }
set { crmCurrency = value; } set { crmCurrency = value; }
} }
[Persistent] [Persistent]
public string DistinguishedName public string DistinguishedName
{ {
@ -151,7 +151,7 @@ namespace WebsitePanel.Providers.HostedSolution
{ {
return defaultDomain; return defaultDomain;
} }
} }
[Persistent] [Persistent]
@ -182,6 +182,13 @@ namespace WebsitePanel.Providers.HostedSolution
set { globalAddressList = value; } set { globalAddressList = value; }
} }
[Persistent]
public string AddressBookPolicy
{
get { return addressBookPolicy; }
set { addressBookPolicy = value; }
}
[Persistent] [Persistent]
public string Database public string Database
{ {
@ -203,27 +210,6 @@ namespace WebsitePanel.Providers.HostedSolution
set { diskSpace = value; } set { diskSpace = value; }
} }
[Persistent]
public int IssueWarningKB
{
get { return issueWarningKB; }
set { issueWarningKB = value; }
}
[Persistent]
public int ProhibitSendKB
{
get { return prohibitSendKB; }
set { prohibitSendKB = value; }
}
[Persistent]
public int ProhibitSendReceiveKB
{
get { return prohibitSendReceiveKB; }
set { prohibitSendReceiveKB = value; }
}
[Persistent] [Persistent]
public int KeepDeletedItemsDays public int KeepDeletedItemsDays
{ {
@ -233,5 +219,15 @@ namespace WebsitePanel.Providers.HostedSolution
[Persistent] [Persistent]
public bool IsOCSOrganization { get; set; } public bool IsOCSOrganization { get; set; }
[Persistent]
public string LyncTenantId
{
get { return lyncTenantId; }
set { lyncTenantId = value; }
}
} }
} }

View file

@ -37,6 +37,7 @@ namespace WebsitePanel.Providers.HostedSolution
private int accountId; private int accountId;
private int itemId; private int itemId;
private int packageId; private int packageId;
private string subscriberNumber;
private string primaryEmailAddress; private string primaryEmailAddress;
private string accountPassword; private string accountPassword;
@ -298,5 +299,13 @@ namespace WebsitePanel.Providers.HostedSolution
set { isBlackBerryUser = value; } set { isBlackBerryUser = value; }
} }
public string SubscriberNumber
{
get { return subscriberNumber; }
set { subscriberNumber = value; }
}
} }
} }

View file

@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WebsitePanel.Providers.HostedSolution
{
public class TransactionAction
{
private TransactionActionTypes actionType;
public TransactionActionTypes ActionType
{
get { return actionType; }
set { actionType = value; }
}
private string id;
public string Id
{
get { return id; }
set { id = value; }
}
private string suffix;
public string Suffix
{
get { return suffix; }
set { suffix = value; }
}
private string account;
public string Account
{
get { return account; }
set { account = value; }
}
public enum TransactionActionTypes
{
CreateOrganizationUnit,
CreateGlobalAddressList,
CreateAddressList,
CreateAddressBookPolicy,
CreateOfflineAddressBook,
CreateDistributionGroup,
EnableDistributionGroup,
CreateAcceptedDomain,
AddUPNSuffix,
CreateMailbox,
CreateContact,
CreatePublicFolder,
CreateActiveSyncPolicy,
AddMailboxFullAccessPermission,
AddSendAsPermission,
RemoveMailboxFullAccessPermission,
RemoveSendAsPermission,
EnableMailbox,
LyncNewSipDomain,
LyncNewSimpleUrl,
LyncNewUser,
LyncNewConferencingPolicy,
LyncNewExternalAccessPolicy,
LyncNewMobilityPolicy
};
}
}

View file

@ -79,6 +79,8 @@
<Compile Include="HostedSolution\BlackBerryErrorsCodes.cs" /> <Compile Include="HostedSolution\BlackBerryErrorsCodes.cs" />
<Compile Include="HostedSolution\BlackBerryStatsItem.cs" /> <Compile Include="HostedSolution\BlackBerryStatsItem.cs" />
<Compile Include="HostedSolution\BlackBerryUserDeleteState.cs" /> <Compile Include="HostedSolution\BlackBerryUserDeleteState.cs" />
<Compile Include="HostedSolution\ExchangeMailboxPlan.cs" />
<Compile Include="HostedSolution\TransactionAction.cs" />
<Compile Include="ResultObjects\HeliconApe.cs" /> <Compile Include="ResultObjects\HeliconApe.cs" />
<Compile Include="HostedSolution\ExchangeMobileDevice.cs" /> <Compile Include="HostedSolution\ExchangeMobileDevice.cs" />
<Compile Include="HostedSolution\IOCSEdgeServer.cs" /> <Compile Include="HostedSolution\IOCSEdgeServer.cs" />

View file

@ -167,7 +167,7 @@ namespace WebsitePanel.Providers.HostedSolution
return runspace; return runspace;
} }
private static Assembly ResolveExchangeAssembly(object p, ResolveEventArgs args) internal static Assembly ResolveExchangeAssembly(object p, ResolveEventArgs args)
{ {
//Add path for the Exchange 2007 DLLs //Add path for the Exchange 2007 DLLs
if (args.Name.Contains("Microsoft.Exchange")) if (args.Name.Contains("Microsoft.Exchange"))

View file

@ -0,0 +1,753 @@
// Copyright (c) 2012, 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;
using System.IO;
using System.Configuration;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Reflection;
using System.Globalization;
using System.Collections;
using System.DirectoryServices;
using System.Security;
using System.Security.Principal;
using System.Security.AccessControl;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using WebsitePanel.Providers;
using WebsitePanel.Providers.HostedSolution;
using WebsitePanel.Providers.Utils;
using WebsitePanel.Server.Utils;
using Microsoft.Exchange.Data.Directory.Recipient;
using Microsoft.Win32;
using Microsoft.Exchange.Data;
using Microsoft.Exchange.Data.Directory;
using Microsoft.Exchange.Data.Storage;
namespace WebsitePanel.Providers.HostedSolution
{
public class Exchange2010SP2 : Exchange2010
{
#region Static constructor
static private Hashtable htBbalancer = new Hashtable();
static Exchange2010SP2()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ResolveExchangeAssembly);
ExchangeRegistryPath = "SOFTWARE\\Microsoft\\ExchangeServer\\v14\\Setup";
}
#endregion
#region Organization
/// <summary>
/// Creates organization on Mail Server
/// </summary>
/// <param name="organizationId"></param>
/// <returns></returns>
internal override Organization ExtendToExchangeOrganizationInternal(string organizationId, string securityGroup, bool IsConsumer)
{
ExchangeLog.LogStart("CreateOrganizationInternal");
ExchangeLog.DebugInfo(" Organization Id: {0}", organizationId);
ExchangeTransaction transaction = StartTransaction();
Organization info = new Organization();
Runspace runSpace = null;
try
{
runSpace = OpenRunspace();
string server = GetServerName();
string securityGroupPath = AddADPrefix(securityGroup);
//Create mail enabled organization security group
EnableMailSecurityDistributionGroup(runSpace, securityGroup, organizationId);
transaction.RegisterMailEnabledDistributionGroup(securityGroup);
UpdateSecurityDistributionGroup(runSpace, securityGroup, organizationId, IsConsumer);
//create GAL
string galId = CreateGlobalAddressList(runSpace, organizationId);
transaction.RegisterNewGlobalAddressList(galId);
ExchangeLog.LogInfo(" Global Address List: {0}", galId);
UpdateGlobalAddressList(runSpace, galId, securityGroupPath);
//create AL
string alId = CreateAddressList(runSpace, organizationId);
transaction.RegisterNewAddressList(alId);
ExchangeLog.LogInfo(" Address List: {0}", alId);
UpdateAddressList(runSpace, alId, securityGroupPath);
//create RAL
string ralId = CreateRoomsAddressList(runSpace, organizationId);
transaction.RegisterNewRoomsAddressList(ralId);
ExchangeLog.LogInfo(" Rooms Address List: {0}", ralId);
UpdateAddressList(runSpace, ralId, securityGroupPath);
//create ActiveSync policy
string asId = CreateActiveSyncPolicy(runSpace, organizationId);
transaction.RegisterNewActiveSyncPolicy(asId);
ExchangeLog.LogInfo(" ActiveSync Policy: {0}", asId);
info.AddressList = alId;
info.GlobalAddressList = galId;
info.RoomsAddressList = ralId;
info.OrganizationId = organizationId;
}
catch (Exception ex)
{
ExchangeLog.LogError("CreateOrganizationInternal", ex);
RollbackTransaction(transaction);
throw;
}
finally
{
CloseRunspace(runSpace);
}
ExchangeLog.LogEnd("CreateOrganizationInternal");
return info;
}
internal override Organization CreateOrganizationAddressBookPolicyInternal(string organizationId, string gal, string addressBook, string roomList, string oab)
{
ExchangeLog.LogStart("CreateOrganizationAddressBookPolicyInternal");
ExchangeLog.LogInfo(" Organization Id: {0}", organizationId);
ExchangeLog.LogInfo(" GAL: {0}", gal);
ExchangeLog.LogInfo(" AddressBook: {0}", addressBook);
ExchangeLog.LogInfo(" RoomList: {0}", roomList);
ExchangeLog.LogInfo(" OAB: {0}", oab);
ExchangeTransaction transaction = StartTransaction();
Organization info = new Organization();
string policyName = GetAddressBookPolicyName(organizationId);
Runspace runSpace = null;
try
{
runSpace = OpenRunspace();
Command cmd = new Command("New-AddressBookPolicy");
cmd.Parameters.Add("Name", policyName);
cmd.Parameters.Add("AddressLists", addressBook);
cmd.Parameters.Add("RoomList", roomList);
cmd.Parameters.Add("GlobalAddressList", gal);
cmd.Parameters.Add("OfflineAddressBook", oab);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
info.AddressBookPolicy = GetResultObjectDN(result);
}
catch (Exception ex)
{
ExchangeLog.LogError("CreateOrganizationAddressBookPolicyInternal", ex);
RollbackTransaction(transaction);
throw;
}
finally
{
CloseRunspace(runSpace);
}
ExchangeLog.LogEnd("CreateOrganizationAddressBookPolicyInternal");
return info;
}
internal override bool DeleteOrganizationInternal(string organizationId, string distinguishedName,
string globalAddressList, string addressList, string roomList, string offlineAddressBook, string securityGroup, string addressBookPolicy)
{
ExchangeLog.LogStart("DeleteOrganizationInternal");
bool ret = true;
Runspace runSpace = null;
try
{
runSpace = OpenRunspace();
string ou = ConvertADPathToCanonicalName(distinguishedName);
if (!DeleteOrganizationMailboxes(runSpace, ou))
ret = false;
if (!DeleteOrganizationContacts(runSpace, ou))
ret = false;
if (!DeleteOrganizationDistributionLists(runSpace, ou))
ret = false;
//delete AddressBookPolicy
try
{
if (!string.IsNullOrEmpty(addressBookPolicy))
DeleteAddressBookPolicy(runSpace, addressBookPolicy);
}
catch (Exception ex)
{
ret = false;
ExchangeLog.LogError("Could not delete AddressBook Policy " + addressBookPolicy, ex);
}
//delete OAB
try
{
if (!string.IsNullOrEmpty(offlineAddressBook))
DeleteOfflineAddressBook(runSpace, offlineAddressBook);
}
catch (Exception ex)
{
ret = false;
ExchangeLog.LogError("Could not delete Offline Address Book " + offlineAddressBook, ex);
}
//delete AL
try
{
if (!string.IsNullOrEmpty(addressList))
DeleteAddressList(runSpace, addressList);
}
catch (Exception ex)
{
ret = false;
ExchangeLog.LogError("Could not delete Address List " + addressList, ex);
}
//delete RL
try
{
if (!string.IsNullOrEmpty(roomList))
DeleteAddressList(runSpace, roomList);
}
catch (Exception ex)
{
ret = false;
ExchangeLog.LogError("Could not delete Address List " + roomList, ex);
}
//delete GAL
try
{
if (!string.IsNullOrEmpty(globalAddressList))
DeleteGlobalAddressList(runSpace, globalAddressList);
}
catch (Exception ex)
{
ret = false;
ExchangeLog.LogError("Could not delete Global Address List " + globalAddressList, ex);
}
//delete ActiveSync policy
try
{
DeleteActiveSyncPolicy(runSpace, organizationId);
}
catch (Exception ex)
{
ret = false;
ExchangeLog.LogError("Could not delete ActiveSyncPolicy " + organizationId, ex);
}
//disable mail security distribution group
try
{
DisableMailSecurityDistributionGroup(runSpace, securityGroup);
}
catch (Exception ex)
{
ret = false;
ExchangeLog.LogError("Could not disable mail security distribution group " + securityGroup, ex);
}
}
catch (Exception ex)
{
ret = false;
ExchangeLog.LogError("DeleteOrganizationInternal", ex);
throw;
}
finally
{
CloseRunspace(runSpace);
}
ExchangeLog.LogEnd("DeleteOrganizationInternal");
return ret;
}
internal override void DeleteAddressBookPolicy(Runspace runSpace, string id)
{
ExchangeLog.LogStart("DeleteAddressBookPolicy");
//if (id != "IsConsumer")
//{
Command cmd = new Command("Remove-AddressBookPolicy");
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("Confirm", false);
ExecuteShellCommand(runSpace, cmd);
//}
ExchangeLog.LogEnd("DeleteAddressBookPolicy");
}
#endregion
#region Mailbox
internal override string CreateMailEnableUserInternal(string upn, string organizationId, string organizationDistinguishedName, ExchangeAccountType accountType,
string mailboxDatabase, string offlineAddressBook, string addressBookPolicy,
string accountName, bool enablePOP, bool enableIMAP,
bool enableOWA, bool enableMAPI, bool enableActiveSync,
int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays,
int maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB, bool hideFromAddressBook, bool IsConsumer)
{
ExchangeLog.LogStart("CreateMailEnableUserInternal");
ExchangeLog.DebugInfo("Organization Id: {0}", organizationId);
string ret = null;
ExchangeTransaction transaction = StartTransaction();
Runspace runSpace = null;
int attempts = 0;
string id = null;
try
{
runSpace = OpenRunspace();
Command cmd = null;
Collection<PSObject> result = null;
//try to enable mail user for 10 times
while (true)
{
try
{
//create mailbox
cmd = new Command("Enable-Mailbox");
cmd.Parameters.Add("Identity", upn);
cmd.Parameters.Add("Alias", accountName);
string database = GetDatabase(runSpace, PrimaryDomainController, mailboxDatabase);
ExchangeLog.DebugInfo("database: " + database);
if (database != string.Empty)
{
cmd.Parameters.Add("Database", database);
}
if (accountType == ExchangeAccountType.Equipment)
cmd.Parameters.Add("Equipment");
else if (accountType == ExchangeAccountType.Room)
cmd.Parameters.Add("Room");
result = ExecuteShellCommand(runSpace, cmd);
id = CheckResultObjectDN(result);
}
catch (Exception ex)
{
ExchangeLog.LogError(ex);
}
if (id != null)
break;
if (attempts > 9)
throw new Exception(
string.Format("Could not enable mail user '{0}' ", upn));
attempts++;
ExchangeLog.LogWarning("Attempt #{0} to enable mail user failed!", attempts);
// wait 5 sec
System.Threading.Thread.Sleep(1000);
}
transaction.RegisterEnableMailbox(id);
string windowsEmailAddress = ObjToString(GetPSObjectProperty(result[0], "WindowsEmailAddress"));
//update mailbox
cmd = new Command("Set-Mailbox");
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("OfflineAddressBook", offlineAddressBook);
cmd.Parameters.Add("EmailAddressPolicyEnabled", false);
cmd.Parameters.Add("CustomAttribute1", organizationId);
cmd.Parameters.Add("CustomAttribute3", windowsEmailAddress);
cmd.Parameters.Add("PrimarySmtpAddress", upn);
cmd.Parameters.Add("WindowsEmailAddress", upn);
cmd.Parameters.Add("UseDatabaseQuotaDefaults", new bool?(false));
cmd.Parameters.Add("UseDatabaseRetentionDefaults", false);
cmd.Parameters.Add("IssueWarningQuota", ConvertKBToUnlimited(issueWarningKB));
cmd.Parameters.Add("ProhibitSendQuota", ConvertKBToUnlimited(prohibitSendKB));
cmd.Parameters.Add("ProhibitSendReceiveQuota", ConvertKBToUnlimited(prohibitSendReceiveKB));
cmd.Parameters.Add("RetainDeletedItemsFor", ConvertDaysToEnhancedTimeSpan(keepDeletedItemsDays));
cmd.Parameters.Add("RecipientLimits", ConvertInt32ToUnlimited(maxRecipients));
cmd.Parameters.Add("MaxSendSize", ConvertKBToUnlimited(maxSendMessageSizeKB));
cmd.Parameters.Add("MaxReceiveSize", ConvertKBToUnlimited(maxReceiveMessageSizeKB));
if (IsConsumer) cmd.Parameters.Add("HiddenFromAddressListsEnabled", true);
else
cmd.Parameters.Add("HiddenFromAddressListsEnabled", hideFromAddressBook);
cmd.Parameters.Add("AddressBookPolicy", addressBookPolicy);
ExecuteShellCommand(runSpace, cmd);
//Client Access
cmd = new Command("Set-CASMailbox");
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("ActiveSyncEnabled", enableActiveSync);
if (enableActiveSync)
{
cmd.Parameters.Add("ActiveSyncMailboxPolicy", organizationId);
}
cmd.Parameters.Add("OWAEnabled", enableOWA);
cmd.Parameters.Add("MAPIEnabled", enableMAPI);
cmd.Parameters.Add("PopEnabled", enablePOP);
cmd.Parameters.Add("ImapEnabled", enableIMAP);
ExecuteShellCommand(runSpace, cmd);
//add to the security group
cmd = new Command("Add-DistributionGroupMember");
cmd.Parameters.Add("Identity", organizationId);
cmd.Parameters.Add("Member", id);
cmd.Parameters.Add("BypassSecurityGroupManagerCheck", true);
ExecuteShellCommand(runSpace, cmd);
if (!IsConsumer)
{
//Set-MailboxFolderPermission for calendar
cmd = new Command("Add-MailboxFolderPermission");
cmd.Parameters.Add("Identity", id + ":\\calendar");
cmd.Parameters.Add("AccessRights", "Reviewer");
cmd.Parameters.Add("User", organizationId);
ExecuteShellCommand(runSpace, cmd);
}
cmd = new Command("Set-MailboxFolderPermission");
cmd.Parameters.Add("Identity", id + ":\\calendar");
cmd.Parameters.Add("AccessRights", "None");
cmd.Parameters.Add("User", "Default");
ExecuteShellCommand(runSpace, cmd);
ret = string.Format("{0}\\{1}", GetNETBIOSDomainName(), accountName);
ExchangeLog.LogEnd("CreateMailEnableUserInternal");
return ret;
}
catch (Exception ex)
{
ExchangeLog.LogError("CreateMailEnableUserInternal", ex);
RollbackTransaction(transaction);
throw;
}
finally
{
CloseRunspace(runSpace);
}
}
internal override void DisableMailboxInternal(string id)
{
ExchangeLog.LogStart("DisableMailboxInternal");
Runspace runSpace = null;
try
{
runSpace = OpenRunspace();
Command cmd = new Command("Get-Mailbox");
cmd.Parameters.Add("Identity", id);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0)
{
string upn = ObjToString(GetPSObjectProperty(result[0], "UserPrincipalName"));
string addressbookPolicy = ObjToString(GetPSObjectProperty(result[0], "AddressBookPolicy"));
cmd = new Command("Disable-Mailbox");
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("Confirm", false);
ExecuteShellCommand(runSpace, cmd);
if (addressbookPolicy == (upn + " AP"))
{
try
{
DeleteAddressBookPolicy(runSpace, upn + " AP");
}
catch (Exception)
{
}
try
{
DeleteGlobalAddressList(runSpace, upn + " GAL");
}
catch (Exception)
{
}
try
{
DeleteAddressList(runSpace, upn + " AL");
}
catch (Exception)
{
}
}
}
}
finally
{
CloseRunspace(runSpace);
}
ExchangeLog.LogEnd("DisableMailboxInternal");
}
internal override void DeleteMailboxInternal(string accountName)
{
ExchangeLog.LogStart("DeleteMailboxInternal");
ExchangeLog.DebugInfo("Account Name: {0}", accountName);
Runspace runSpace = null;
try
{
runSpace = OpenRunspace();
Command cmd = new Command("Get-Mailbox");
cmd.Parameters.Add("Identity", accountName);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0)
{
string upn = ObjToString(GetPSObjectProperty(result[0], "UserPrincipalName"));
string addressbookPolicy = ObjToString(GetPSObjectProperty(result[0], "AddressBookPolicy"));
RemoveMailbox(runSpace, accountName);
if (addressbookPolicy == (upn + " AP"))
{
try
{
DeleteAddressBookPolicy(runSpace, upn + " AP");
}
catch (Exception)
{
}
try
{
DeleteGlobalAddressList(runSpace, upn + " GAL");
}
catch (Exception)
{
}
try
{
DeleteAddressList(runSpace, upn + " AL");
}
catch (Exception)
{
}
}
}
}
finally
{
CloseRunspace(runSpace);
}
ExchangeLog.LogEnd("DeleteMailboxInternal");
}
internal string GetDatabase(Runspace runSpace, string primaryDomainController, string dagName)
{
string database = string.Empty;
if (string.IsNullOrEmpty(dagName)) return string.Empty;
ExchangeLog.LogStart("GetDatabase");
ExchangeLog.LogInfo("DAG: " + dagName);
//Get Dag Servers
Collection<PSObject> dags = null;
Command cmd = new Command("Get-DatabaseAvailabilityGroup");
cmd.Parameters.Add("Identity", dagName);
dags = ExecuteShellCommand(runSpace, cmd);
if (htBbalancer == null)
htBbalancer = new Hashtable();
if (htBbalancer[dagName] == null)
htBbalancer.Add(dagName, 0);
if (dags != null && dags.Count > 0)
{
ADMultiValuedProperty<ADObjectId> servers = (ADMultiValuedProperty<ADObjectId>)GetPSObjectProperty(dags[0], "Servers");
if (servers != null)
{
System.Collections.Generic.List<string> lstDatabase = new System.Collections.Generic.List<string>();
foreach (object objServer in servers)
{
Collection<PSObject> databases = null;
cmd = new Command("Get-MailboxDatabase");
cmd.Parameters.Add("Server", ObjToString(objServer));
databases = ExecuteShellCommand(runSpace, cmd);
foreach (PSObject objDatabase in databases)
{
if (((bool)GetPSObjectProperty(objDatabase, "IsExcludedFromProvisioning") == false) &&
((bool)GetPSObjectProperty(objDatabase, "IsSuspendedFromProvisioning") == false))
{
string db = ObjToString(GetPSObjectProperty(objDatabase, "Identity"));
bool bAdd = true;
foreach (string s in lstDatabase)
{
if (s.ToLower() == db.ToLower())
{
bAdd = false;
break;
}
}
if (bAdd)
{
lstDatabase.Add(db);
ExchangeLog.LogInfo("AddDatabase: " + db);
}
}
}
}
int balancer = (int)htBbalancer[dagName];
balancer++;
if (balancer >= lstDatabase.Count) balancer = 0;
htBbalancer[dagName] = balancer;
if (lstDatabase.Count != 0) database = lstDatabase[balancer];
}
}
ExchangeLog.LogEnd("GetDatabase");
return database;
}
#endregion
#region AddressBook
internal override void AdjustADSecurity(string objPath, string securityGroupPath, bool isAddressBook)
{
ExchangeLog.LogStart("AdjustADSecurity");
ExchangeLog.DebugInfo(" Active Direcory object: {0}", objPath);
ExchangeLog.DebugInfo(" Security Group: {0}", securityGroupPath);
if (isAddressBook)
{
ExchangeLog.DebugInfo(" Updating Security");
//"Download Address Book" security permission for offline address book
Guid openAddressBookGuid = new Guid("{bd919c7c-2d79-4950-bc9c-e16fd99285e8}");
DirectoryEntry groupEntry = GetADObject(securityGroupPath);
byte[] byteSid = (byte[])GetADObjectProperty(groupEntry, "objectSid");
DirectoryEntry objEntry = GetADObject(objPath);
ActiveDirectorySecurity security = objEntry.ObjectSecurity;
// Create a SecurityIdentifier object for security group.
SecurityIdentifier groupSid = new SecurityIdentifier(byteSid, 0);
// Create an access rule to allow users in Security Group to open address book.
ActiveDirectoryAccessRule allowOpenAddressBook =
new ActiveDirectoryAccessRule(
groupSid,
ActiveDirectoryRights.ExtendedRight,
AccessControlType.Allow,
openAddressBookGuid);
// Create an access rule to allow users in Security Group to read object.
ActiveDirectoryAccessRule allowRead =
new ActiveDirectoryAccessRule(
groupSid,
ActiveDirectoryRights.GenericRead,
AccessControlType.Allow);
// Remove existing rules if exist
security.RemoveAccessRuleSpecific(allowOpenAddressBook);
security.RemoveAccessRuleSpecific(allowRead);
// Add a new access rule to allow users in Security Group to open address book.
security.AddAccessRule(allowOpenAddressBook);
// Add a new access rule to allow users in Security Group to read object.
security.AddAccessRule(allowRead);
// Commit the changes.
objEntry.CommitChanges();
}
ExchangeLog.LogEnd("AdjustADSecurity");
}
#endregion
public override bool IsInstalled()
{
int value = 0;
bool bResult = false;
RegistryKey root = Registry.LocalMachine;
RegistryKey rk = root.OpenSubKey(ExchangeRegistryPath);
if (rk != null)
{
value = (int)rk.GetValue("MsiProductMajor", null);
if (value == 14)
{
value = (int)rk.GetValue("MsiProductMinor", null);
if (value == 2) bResult = true;
}
rk.Close();
}
return bResult;
}
}
}

View file

@ -33,71 +33,67 @@ using WebsitePanel.Server.Utils;
namespace WebsitePanel.Providers.HostedSolution namespace WebsitePanel.Providers.HostedSolution
{ {
/// <summary> /// <summary>
/// Exchange Log Helper Methods /// Exchange Log Helper Methods
/// </summary> /// </summary>
internal class ExchangeLog internal class ExchangeLog
{ {
internal static string LogPrefix = "Exchange"; internal static string LogPrefix = "Exchange";
internal static void LogStart(string message, params object[] args) internal static void LogStart(string message, params object[] args)
{ {
string text = String.Format(message, args); string text = String.Format(message, args);
Log.WriteStart("{0} {1}", LogPrefix, text); Log.WriteStart("{0} {1}", LogPrefix, text);
} }
internal static void LogEnd(string message, params object[] args) internal static void LogEnd(string message, params object[] args)
{ {
string text = String.Format(message, args); string text = String.Format(message, args);
Log.WriteEnd("{0} {1}", LogPrefix, text); Log.WriteEnd("{0} {1}", LogPrefix, text);
} }
internal static void LogInfo(string message, params object[] args) internal static void LogInfo(string message, params object[] args)
{ {
string text = String.Format(message, args); string text = String.Format(message, args);
Log.WriteInfo("{0} {1}", LogPrefix, text); Log.WriteInfo("{0} {1}", LogPrefix, text);
} }
internal static void LogWarning(string message, params object[] args) internal static void LogWarning(string message, params object[] args)
{ {
string text = String.Format(message, args); string text = String.Format(message, args);
Log.WriteWarning("{0} {1}", LogPrefix, text); Log.WriteWarning("{0} {1}", LogPrefix, text);
} }
internal static void LogError(Exception ex) internal static void LogError(Exception ex)
{ {
Log.WriteError(LogPrefix, ex); Log.WriteError(LogPrefix, ex);
} }
internal static void LogError(string message, Exception ex) internal static void LogError(string message, Exception ex)
{ {
string text = String.Format("{0} {1}", LogPrefix, message); string text = String.Format("{0} {1}", LogPrefix, message);
Log.WriteError(text, ex); Log.WriteError(text, ex);
} }
internal static void DebugInfo(string message, params object[] args) internal static void DebugInfo(string message, params object[] args)
{ {
#if DEBUG string text = String.Format(message, args);
string text = String.Format(message, args); Log.WriteInfo("{0} {1}", LogPrefix, text);
Log.WriteInfo("{0} {1}", LogPrefix, text); }
#endif
}
internal static void DebugCommand(Command cmd) internal static void DebugCommand(Command cmd)
{ {
#if DEBUG StringBuilder sb = new StringBuilder(cmd.CommandText);
StringBuilder sb = new StringBuilder(cmd.CommandText); foreach (CommandParameter parameter in cmd.Parameters)
foreach (CommandParameter parameter in cmd.Parameters) {
{ string formatString = " -{0} {1}";
string formatString = " -{0} {1}"; if (parameter.Value is string)
if (parameter.Value is string) formatString = " -{0} '{1}'";
formatString = " -{0} '{1}'"; else if (parameter.Value is bool)
else if (parameter.Value is bool) formatString = " -{0} ${1}";
formatString = " -{0} ${1}"; sb.AppendFormat(formatString, parameter.Name, parameter.Value);
sb.AppendFormat(formatString, parameter.Name, parameter.Value); }
} Log.WriteInfo("{0} {1}", LogPrefix, sb.ToString());
Log.WriteInfo("{0} {1}", LogPrefix, sb.ToString()); }
#endif }
}
}
} }

View file

@ -30,228 +30,180 @@ using System.Collections.Generic;
namespace WebsitePanel.Providers.HostedSolution namespace WebsitePanel.Providers.HostedSolution
{ {
internal class ExchangeTransaction internal class ExchangeTransaction
{ {
List<TransactionAction> actions = null; List<TransactionAction> actions = null;
public ExchangeTransaction() public ExchangeTransaction()
{ {
actions = new List<TransactionAction>(); actions = new List<TransactionAction>();
} }
internal List<TransactionAction> Actions internal List<TransactionAction> Actions
{ {
get { return actions; } get { return actions; }
} }
internal void RegisterNewOrganizationUnit(string id) internal void RegisterNewOrganizationUnit(string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateOrganizationUnit; action.ActionType = TransactionAction.TransactionActionTypes.CreateOrganizationUnit;
action.Id = id; action.Id = id;
Actions.Add(action); Actions.Add(action);
} }
public void RegisterNewDistributionGroup(string id) public void RegisterNewDistributionGroup(string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateDistributionGroup; action.ActionType = TransactionAction.TransactionActionTypes.CreateDistributionGroup;
action.Id = id; action.Id = id;
Actions.Add(action); Actions.Add(action);
} }
public void RegisterMailEnabledDistributionGroup(string id) public void RegisterMailEnabledDistributionGroup(string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.EnableDistributionGroup; action.ActionType = TransactionAction.TransactionActionTypes.EnableDistributionGroup;
action.Id = id; action.Id = id;
Actions.Add(action); Actions.Add(action);
} }
internal void RegisterNewGlobalAddressList(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateGlobalAddressList;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewAddressList(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateAddressList;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewAddressBookPolicy(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateAddressBookPolicy;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewGlobalAddressList(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateGlobalAddressList;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewAddressList(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateAddressList;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewRoomsAddressList(string id) internal void RegisterNewRoomsAddressList(string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateRoomsAddressList; action.ActionType = TransactionAction.TransactionActionTypes.CreateAddressList;
action.Id = id; action.Id = id;
Actions.Add(action); Actions.Add(action);
} }
internal void RegisterNewAddressPolicy(string id)
internal void RegisterNewOfflineAddressBook(string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateAddressPolicy; action.ActionType = TransactionAction.TransactionActionTypes.CreateOfflineAddressBook;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewActiveSyncPolicy(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateActiveSyncPolicy;
action.Id = id; action.Id = id;
Actions.Add(action); Actions.Add(action);
} }
internal void RegisterNewOfflineAddressBook(string id) internal void RegisterNewAcceptedDomain(string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateOfflineAddressBook; action.ActionType = TransactionAction.TransactionActionTypes.CreateAcceptedDomain;
action.Id = id; action.Id = id;
Actions.Add(action); Actions.Add(action);
} }
internal void RegisterNewActiveSyncPolicy(string id) internal void RegisterNewUPNSuffix(string id, string suffix)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateActiveSyncPolicy; action.ActionType = TransactionAction.TransactionActionTypes.AddUPNSuffix;
action.Id = id; action.Id = id;
Actions.Add(action); action.Suffix = suffix;
} Actions.Add(action);
}
internal void RegisterNewMailbox(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateMailbox;
action.Id = id;
Actions.Add(action);
}
internal void RegisterEnableMailbox(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.EnableMailbox;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewAcceptedDomain(string id) internal void RegisterNewContact(string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateAcceptedDomain; action.ActionType = TransactionAction.TransactionActionTypes.CreateContact;
action.Id = id; action.Id = id;
Actions.Add(action); Actions.Add(action);
} }
internal void RegisterNewUPNSuffix(string id, string suffix) internal void RegisterNewPublicFolder(string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.AddUPNSuffix; action.ActionType = TransactionAction.TransactionActionTypes.CreatePublicFolder;
action.Id = id; action.Id = id;
action.Suffix = suffix; Actions.Add(action);
Actions.Add(action); }
}
internal void RegisterNewMailbox(string id) internal void AddMailBoxFullAccessPermission(string accountName, string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateMailbox; action.ActionType = TransactionAction.TransactionActionTypes.AddMailboxFullAccessPermission;
action.Id = id; action.Id = id;
Actions.Add(action); action.Account = accountName;
} Actions.Add(action);
}
internal void RegisterNewContact(string id) internal void AddSendAsPermission(string accountName, string id)
{ {
TransactionAction action = new TransactionAction(); TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateContact; action.ActionType = TransactionAction.TransactionActionTypes.AddSendAsPermission;
action.Id = id; action.Id = id;
Actions.Add(action); action.Account = accountName;
} Actions.Add(action);
}
internal void RegisterNewPublicFolder(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreatePublicFolder;
action.Id = id;
Actions.Add(action);
}
internal void AddMailBoxFullAccessPermission(string accountName, string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.AddMailboxFullAccessPermission;
action.Id = id;
action.Account = accountName;
Actions.Add(action);
}
internal void AddSendAsPermission(string accountName, string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.AddSendAsPermission;
action.Id = id;
action.Account = accountName;
Actions.Add(action);
}
internal void RemoveMailboxFullAccessPermission(string accountName, string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.RemoveMailboxFullAccessPermission;
action.Id = id;
action.Account = accountName;
Actions.Add(action);
}
internal void RemoveSendAsPermission(string accountName, string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.RemoveSendAsPermission;
action.Id = id;
action.Account = accountName;
Actions.Add(action);
}
}
internal class TransactionAction
{
private TransactionActionTypes actionType;
public TransactionActionTypes ActionType
{
get { return actionType; }
set { actionType = value; }
}
private string id;
public string Id
{
get { return id; }
set { id = value; }
}
private string suffix;
public string Suffix
{
get { return suffix; }
set { suffix = value; }
}
private string account;
public string Account
{
get { return account; }
set { account = value; }
}
internal enum TransactionActionTypes
{
CreateOrganizationUnit,
CreateGlobalAddressList,
CreateAddressList,
CreateAddressPolicy,
CreateOfflineAddressBook,
CreateDistributionGroup,
EnableDistributionGroup,
CreateAcceptedDomain,
AddUPNSuffix,
CreateMailbox,
CreateContact,
CreatePublicFolder,
CreateActiveSyncPolicy,
AddMailboxFullAccessPermission,
AddSendAsPermission,
RemoveMailboxFullAccessPermission,
RemoveSendAsPermission,
CreateRoomsAddressList
};
}
internal void RemoveMailboxFullAccessPermission(string accountName, string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.RemoveMailboxFullAccessPermission;
action.Id = id;
action.Account = accountName;
Actions.Add(action);
}
internal void RemoveSendAsPermission(string accountName, string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.RemoveSendAsPermission;
action.Id = id;
action.Account = accountName;
Actions.Add(action);
}
}
} }

View file

@ -342,9 +342,9 @@ namespace WebsitePanel.Providers.HostedSolution
#region Users #region Users
public void CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled) public int CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled)
{ {
CreateUserInternal(organizationId, loginName, displayName, upn, password, enabled); return CreateUserInternal(organizationId, loginName, displayName, upn, password, enabled);
} }
internal int CreateUserInternal(string organizationId, string loginName, string displayName, string upn, string password, bool enabled) internal int CreateUserInternal(string organizationId, string loginName, string displayName, string upn, string password, bool enabled)
@ -356,36 +356,43 @@ namespace WebsitePanel.Providers.HostedSolution
if (string.IsNullOrEmpty(organizationId)) if (string.IsNullOrEmpty(organizationId))
throw new ArgumentNullException("organizationId"); throw new ArgumentNullException("organizationId");
if (string.IsNullOrEmpty(loginName)) if (string.IsNullOrEmpty(loginName))
throw new ArgumentNullException("loginName"); throw new ArgumentNullException("loginName");
if (string.IsNullOrEmpty(password)) if (string.IsNullOrEmpty(password))
throw new ArgumentNullException("password"); throw new ArgumentNullException("password");
bool userCreated = false; bool userCreated = false;
string userPath = null; string userPath = null;
try try
{ {
string path = GetOrganizationPath(organizationId); string path = GetOrganizationPath(organizationId);
userPath= GetUserPath(organizationId, loginName); userPath = GetUserPath(organizationId, loginName);
if (!ActiveDirectoryUtils.AdObjectExists(userPath)) if (!ActiveDirectoryUtils.AdObjectExists(userPath))
{ {
userPath = ActiveDirectoryUtils.CreateUser(path, loginName, displayName, password, enabled); userPath = ActiveDirectoryUtils.CreateUser(path, upn, loginName, displayName, password, enabled);
DirectoryEntry entry = new DirectoryEntry(userPath); DirectoryEntry entry = new DirectoryEntry(userPath);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.UserPrincipalName, upn); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.UserPrincipalName, upn);
entry.CommitChanges(); entry.CommitChanges();
userCreated = true; userCreated = true;
HostedSolutionLog.DebugInfo("User created: {0}", displayName);
} }
else else
{
HostedSolutionLog.DebugInfo("AD_OBJECT_ALREADY_EXISTS: {0}", userPath);
HostedSolutionLog.LogEnd("CreateUserInternal");
return Errors.AD_OBJECT_ALREADY_EXISTS; return Errors.AD_OBJECT_ALREADY_EXISTS;
}
string groupPath = GetGroupPath(organizationId);
string groupPath = GetGroupPath(organizationId);
HostedSolutionLog.DebugInfo("Group retrieved: {0}", groupPath);
ActiveDirectoryUtils.AddUserToGroup(userPath, groupPath); ActiveDirectoryUtils.AddUserToGroup(userPath, groupPath);
HostedSolutionLog.DebugInfo("Added to group: {0}", groupPath);
} }
catch(Exception e) catch (Exception e)
{ {
HostedSolutionLog.LogError(e); HostedSolutionLog.LogError(e);
try try
@ -393,10 +400,12 @@ namespace WebsitePanel.Providers.HostedSolution
if (userCreated) if (userCreated)
ActiveDirectoryUtils.DeleteADObject(userPath); ActiveDirectoryUtils.DeleteADObject(userPath);
} }
catch(Exception ex) catch (Exception ex)
{ {
HostedSolutionLog.LogError(ex); HostedSolutionLog.LogError(ex);
} }
return Errors.AD_OBJECT_ALREADY_EXISTS;
} }
HostedSolutionLog.LogEnd("CreateUserInternal"); HostedSolutionLog.LogEnd("CreateUserInternal");
@ -492,10 +501,10 @@ namespace WebsitePanel.Providers.HostedSolution
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
OrganizationUser retUser = new OrganizationUser(); OrganizationUser retUser = new OrganizationUser();
retUser.FirstName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.FirstName); retUser.FirstName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.FirstName);
retUser.LastName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.LastName); retUser.LastName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.LastName);
retUser.DisplayName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DisplayName); retUser.DisplayName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DisplayName);
retUser.Initials = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Initials); retUser.Initials = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Initials);
retUser.JobTitle = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.JobTitle); retUser.JobTitle = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.JobTitle);
retUser.Company = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Company); retUser.Company = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Company);
@ -513,10 +522,11 @@ namespace WebsitePanel.Providers.HostedSolution
retUser.Zip = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Zip); retUser.Zip = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Zip);
retUser.Country = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Country); retUser.Country = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Country);
retUser.Notes = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Notes); retUser.Notes = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Notes);
retUser.ExternalEmail = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.ExternalEmail); retUser.ExternalEmail = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.ExternalEmail);
retUser.Disabled = (bool)entry.InvokeGet(ADAttributes.AccountDisabled); retUser.Disabled = (bool)entry.InvokeGet(ADAttributes.AccountDisabled);
retUser.Manager = GetManager(entry); retUser.Manager = GetManager(entry);
retUser.DomainUserName = GetDomainName(loginName); retUser.SamAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName);
retUser.DomainUserName = GetDomainName(ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName));
retUser.DistinguishedName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DistinguishedName); retUser.DistinguishedName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DistinguishedName);
retUser.Locked = (bool)entry.InvokeGet(ADAttributes.AccountLocked); retUser.Locked = (bool)entry.InvokeGet(ADAttributes.AccountLocked);
@ -578,7 +588,7 @@ namespace WebsitePanel.Providers.HostedSolution
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.FirstName, firstName); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.FirstName, firstName);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.LastName, lastName); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.LastName, lastName);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.DisplayName, displayName); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.DisplayName, displayName);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Initials, initials); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Initials, initials);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.JobTitle, jobTitle); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.JobTitle, jobTitle);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Company, company); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Company, company);
@ -596,7 +606,7 @@ namespace WebsitePanel.Providers.HostedSolution
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Zip, zip); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Zip, zip);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Country, country); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Country, country);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Notes, notes); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Notes, notes);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.ExternalEmail, externalEmail); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.ExternalEmail, externalEmail);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.CustomAttribute2, (disabled ? "disabled" : null)); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.CustomAttribute2, (disabled ? "disabled" : null));
@ -626,6 +636,48 @@ namespace WebsitePanel.Providers.HostedSolution
} }
public string GetSamAccountNameByUserPrincipalName(string organizationId, string userPrincipalName)
{
return GetSamAccountNameByUserPrincipalNameInternal(organizationId, userPrincipalName);
}
private string GetSamAccountNameByUserPrincipalNameInternal(string organizationId, string userPrincipalName)
{
HostedSolutionLog.LogStart("GetSamAccountNameByUserPrincipalNameInternal");
HostedSolutionLog.DebugInfo("userPrincipalName : {0}", userPrincipalName);
HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId);
string accountName = string.Empty;
try
{
string path = GetOrganizationPath(organizationId);
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.PropertiesToLoad.Add("userPrincipalName");
searcher.PropertiesToLoad.Add("sAMAccountName");
searcher.Filter = "(userPrincipalName=" + userPrincipalName + ")";
searcher.SearchScope = SearchScope.Subtree;
SearchResult resCollection = searcher.FindOne();
if (resCollection != null)
{
accountName = resCollection.Properties["samaccountname"][0].ToString();
}
HostedSolutionLog.LogEnd("GetSamAccountNameByUserPrincipalNameInternal");
}
catch (Exception e)
{
HostedSolutionLog.DebugInfo("Failed : {0}", e.Message);
}
return accountName;
}
#endregion #endregion
#region Domains #region Domains

View file

@ -131,6 +131,7 @@
<Compile Include="BlackBerry5Provider.cs" /> <Compile Include="BlackBerry5Provider.cs" />
<Compile Include="BlackBerryProvider.cs" /> <Compile Include="BlackBerryProvider.cs" />
<Compile Include="Exchange2010.cs" /> <Compile Include="Exchange2010.cs" />
<Compile Include="Exchange2010SP2.cs" />
<Compile Include="HostedSharePointServer2010.cs" /> <Compile Include="HostedSharePointServer2010.cs" />
<Compile Include="OCSEdge2007R2.cs" /> <Compile Include="OCSEdge2007R2.cs" />
<Compile Include="OCS2007R2.cs" /> <Compile Include="OCS2007R2.cs" />

View file

@ -1,35 +1,7 @@
// Copyright (c) 2012, 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.3053 // Runtime Version:2.0.50727.5456
// //
// 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.
@ -39,17 +11,17 @@
// //
// This source code was auto-generated by wsdl, Version=2.0.50727.42. // This source code was auto-generated by wsdl, Version=2.0.50727.42.
// //
using WebsitePanel.Providers.Common;
using WebsitePanel.Providers.ResultObjects;
namespace WebsitePanel.Providers.HostedSolution { namespace WebsitePanel.Providers.HostedSolution {
using System.Diagnostics; using System.Xml.Serialization;
using System.Web.Services; using System.Web.Services;
using System.ComponentModel; using System.ComponentModel;
using System.Web.Services.Protocols; using System.Web.Services.Protocols;
using System; using System;
using System.Xml.Serialization; using System.Diagnostics;
using WebsitePanel.Providers.Common;
using WebsitePanel.Providers.ResultObjects;
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
@ -72,7 +44,7 @@ namespace WebsitePanel.Providers.HostedSolution {
private System.Threading.SendOrPostCallback DeleteUserOperationCompleted; private System.Threading.SendOrPostCallback DeleteUserOperationCompleted;
private System.Threading.SendOrPostCallback GeUserGeneralSettingsOperationCompleted; private System.Threading.SendOrPostCallback GetUserGeneralSettingsOperationCompleted;
private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted; private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted;
@ -82,9 +54,11 @@ namespace WebsitePanel.Providers.HostedSolution {
private System.Threading.SendOrPostCallback GetPasswordPolicyOperationCompleted; private System.Threading.SendOrPostCallback GetPasswordPolicyOperationCompleted;
private System.Threading.SendOrPostCallback GetSamAccountNameByUserPrincipalNameOperationCompleted;
/// <remarks/> /// <remarks/>
public Organizations() { public Organizations() {
this.Url = "http://exchange-dev:9003/Organizations.asmx"; this.Url = "http://localhost:9006/Organizations.asmx";
} }
/// <remarks/> /// <remarks/>
@ -103,7 +77,7 @@ namespace WebsitePanel.Providers.HostedSolution {
public event DeleteUserCompletedEventHandler DeleteUserCompleted; public event DeleteUserCompletedEventHandler DeleteUserCompleted;
/// <remarks/> /// <remarks/>
public event GeUserGeneralSettingsCompletedEventHandler GeUserGeneralSettingsCompleted; public event GetUserGeneralSettingsCompletedEventHandler GetUserGeneralSettingsCompleted;
/// <remarks/> /// <remarks/>
public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted; public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted;
@ -117,6 +91,9 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/> /// <remarks/>
public event GetPasswordPolicyCompletedEventHandler GetPasswordPolicyCompleted; public event GetPasswordPolicyCompletedEventHandler GetPasswordPolicyCompleted;
/// <remarks/>
public event GetSamAccountNameByUserPrincipalNameCompletedEventHandler GetSamAccountNameByUserPrincipalNameCompleted;
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/OrganizationExists", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/OrganizationExists", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
@ -244,14 +221,15 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateUser", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateUser", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled) { public int CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled) {
this.Invoke("CreateUser", new object[] { object[] results = this.Invoke("CreateUser", new object[] {
organizationId, organizationId,
loginName, loginName,
displayName, displayName,
upn, upn,
password, password,
enabled}); enabled});
return ((int)(results[0]));
} }
/// <remarks/> /// <remarks/>
@ -266,8 +244,9 @@ namespace WebsitePanel.Providers.HostedSolution {
} }
/// <remarks/> /// <remarks/>
public void EndCreateUser(System.IAsyncResult asyncResult) { public int EndCreateUser(System.IAsyncResult asyncResult) {
this.EndInvoke(asyncResult); object[] results = this.EndInvoke(asyncResult);
return ((int)(results[0]));
} }
/// <remarks/> /// <remarks/>
@ -292,7 +271,7 @@ namespace WebsitePanel.Providers.HostedSolution {
private void OnCreateUserOperationCompleted(object arg) { private void OnCreateUserOperationCompleted(object arg) {
if ((this.CreateUserCompleted != null)) { if ((this.CreateUserCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CreateUserCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); this.CreateUserCompleted(this, new CreateUserCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
} }
} }
@ -341,46 +320,46 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GeUserGeneralSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetUserGeneralSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public OrganizationUser GeUserGeneralSettings(string loginName, string organizationId) { public OrganizationUser GetUserGeneralSettings(string loginName, string organizationId) {
object[] results = this.Invoke("GeUserGeneralSettings", new object[] { object[] results = this.Invoke("GetUserGeneralSettings", new object[] {
loginName, loginName,
organizationId}); organizationId});
return ((OrganizationUser)(results[0])); return ((OrganizationUser)(results[0]));
} }
/// <remarks/> /// <remarks/>
public System.IAsyncResult BeginGeUserGeneralSettings(string loginName, string organizationId, System.AsyncCallback callback, object asyncState) { public System.IAsyncResult BeginGetUserGeneralSettings(string loginName, string organizationId, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GeUserGeneralSettings", new object[] { return this.BeginInvoke("GetUserGeneralSettings", new object[] {
loginName, loginName,
organizationId}, callback, asyncState); organizationId}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
public OrganizationUser EndGeUserGeneralSettings(System.IAsyncResult asyncResult) { public OrganizationUser EndGetUserGeneralSettings(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult); object[] results = this.EndInvoke(asyncResult);
return ((OrganizationUser)(results[0])); return ((OrganizationUser)(results[0]));
} }
/// <remarks/> /// <remarks/>
public void GeUserGeneralSettingsAsync(string loginName, string organizationId) { public void GetUserGeneralSettingsAsync(string loginName, string organizationId) {
this.GeUserGeneralSettingsAsync(loginName, organizationId, null); this.GetUserGeneralSettingsAsync(loginName, organizationId, null);
} }
/// <remarks/> /// <remarks/>
public void GeUserGeneralSettingsAsync(string loginName, string organizationId, object userState) { public void GetUserGeneralSettingsAsync(string loginName, string organizationId, object userState) {
if ((this.GeUserGeneralSettingsOperationCompleted == null)) { if ((this.GetUserGeneralSettingsOperationCompleted == null)) {
this.GeUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGeUserGeneralSettingsOperationCompleted); this.GetUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetUserGeneralSettingsOperationCompleted);
} }
this.InvokeAsync("GeUserGeneralSettings", new object[] { this.InvokeAsync("GetUserGeneralSettings", new object[] {
loginName, loginName,
organizationId}, this.GeUserGeneralSettingsOperationCompleted, userState); organizationId}, this.GetUserGeneralSettingsOperationCompleted, userState);
} }
private void OnGeUserGeneralSettingsOperationCompleted(object arg) { private void OnGetUserGeneralSettingsOperationCompleted(object arg) {
if ((this.GeUserGeneralSettingsCompleted != null)) { if ((this.GetUserGeneralSettingsCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.GeUserGeneralSettingsCompleted(this, new GeUserGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); this.GetUserGeneralSettingsCompleted(this, new GetUserGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
} }
} }
@ -745,21 +724,57 @@ namespace WebsitePanel.Providers.HostedSolution {
} }
} }
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetSamAccountNameByUserPrincipalName", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public string GetSamAccountNameByUserPrincipalName(string organizationId, string userPrincipalName) {
object[] results = this.Invoke("GetSamAccountNameByUserPrincipalName", new object[] {
organizationId,
userPrincipalName});
return ((string)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetSamAccountNameByUserPrincipalName(string organizationId, string userPrincipalName, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetSamAccountNameByUserPrincipalName", new object[] {
organizationId,
userPrincipalName}, callback, asyncState);
}
/// <remarks/>
public string EndGetSamAccountNameByUserPrincipalName(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((string)(results[0]));
}
/// <remarks/>
public void GetSamAccountNameByUserPrincipalNameAsync(string organizationId, string userPrincipalName) {
this.GetSamAccountNameByUserPrincipalNameAsync(organizationId, userPrincipalName, null);
}
/// <remarks/>
public void GetSamAccountNameByUserPrincipalNameAsync(string organizationId, string userPrincipalName, object userState) {
if ((this.GetSamAccountNameByUserPrincipalNameOperationCompleted == null)) {
this.GetSamAccountNameByUserPrincipalNameOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetSamAccountNameByUserPrincipalNameOperationCompleted);
}
this.InvokeAsync("GetSamAccountNameByUserPrincipalName", new object[] {
organizationId,
userPrincipalName}, this.GetSamAccountNameByUserPrincipalNameOperationCompleted, userState);
}
private void OnGetSamAccountNameByUserPrincipalNameOperationCompleted(object arg) {
if ((this.GetSamAccountNameByUserPrincipalNameCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.GetSamAccountNameByUserPrincipalNameCompleted(this, new GetSamAccountNameByUserPrincipalNameCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/> /// <remarks/>
public new void CancelAsync(object userState) { public new void CancelAsync(object userState) {
base.CancelAsync(userState); base.CancelAsync(userState);
} }
} }
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void OrganizationExistsCompletedEventHandler(object sender, OrganizationExistsCompletedEventArgs e); public delegate void OrganizationExistsCompletedEventHandler(object sender, OrganizationExistsCompletedEventArgs e);
@ -818,7 +833,29 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CreateUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); public delegate void CreateUserCompletedEventHandler(object sender, CreateUserCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CreateUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal CreateUserCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public int Result {
get {
this.RaiseExceptionIfNecessary();
return ((int)(this.results[0]));
}
}
}
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
@ -826,17 +863,17 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void GeUserGeneralSettingsCompletedEventHandler(object sender, GeUserGeneralSettingsCompletedEventArgs e); public delegate void GetUserGeneralSettingsCompletedEventHandler(object sender, GetUserGeneralSettingsCompletedEventArgs e);
/// <remarks/> /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")] [System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class GeUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { public partial class GetUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results; private object[] results;
internal GeUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : internal GetUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) { base(exception, cancelled, userState) {
this.results = results; this.results = results;
} }
@ -887,4 +924,30 @@ namespace WebsitePanel.Providers.HostedSolution {
} }
} }
} }
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void GetSamAccountNameByUserPrincipalNameCompletedEventHandler(object sender, GetSamAccountNameByUserPrincipalNameCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class GetSamAccountNameByUserPrincipalNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal GetSamAccountNameByUserPrincipalNameCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public string Result {
get {
this.RaiseExceptionIfNecessary();
return ((string)(this.results[0]));
}
}
}
} }

View file

@ -1,4 +1,4 @@
// Copyright (c) 2012, Outercurve Foundation. // Copyright (c) 2011, 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,
@ -31,125 +31,125 @@ using System.Diagnostics;
namespace WebsitePanel.Server.Utils namespace WebsitePanel.Server.Utils
{ {
/// <summary> /// <summary>
/// Application log. /// Application log.
/// </summary> /// </summary>
public sealed class Log public sealed class Log
{ {
private static TraceSwitch logSeverity = new TraceSwitch("Log", "General trace switch"); private static TraceSwitch logSeverity = new TraceSwitch("Log", "General trace switch");
private Log()
{
}
/// <summary> private Log()
/// Write error to the log. {
/// </summary> }
/// <param name="message">Error message.</param>
/// <param name="ex">Exception.</param>
public static void WriteError(string message, Exception ex)
{
try
{
if (logSeverity.TraceError)
{
string line = string.Format("[{0:G}] ERROR: {1}\n{2}\n", DateTime.Now, message, ex);
Trace.TraceError(line);
}
}
catch { }
}
/// <summary> /// <summary>
/// Write error to the log. /// Write error to the log.
/// </summary> /// </summary>
/// <param name="ex">Exception.</param> /// <param name="message">Error message.</param>
public static void WriteError(Exception ex) /// <param name="ex">Exception.</param>
{ public static void WriteError(string message, Exception ex)
{
try
{
if (logSeverity.TraceError)
{
string line = string.Format("[{0:G}] ERROR: {1}\n{2}\n", DateTime.Now, message, ex);
Trace.TraceError(line);
}
}
catch { }
}
try /// <summary>
{ /// Write error to the log.
if (ex != null) /// </summary>
{ /// <param name="ex">Exception.</param>
WriteError(ex.Message, ex); public static void WriteError(Exception ex)
} {
}
catch { }
}
/// <summary> try
/// Write info message to log {
/// </summary> if (ex != null)
/// <param name="message"></param> {
public static void WriteInfo(string message, params object[] args) WriteError(ex.Message, ex);
{ }
try }
{ catch { }
if (logSeverity.TraceInfo) }
{
Trace.TraceInformation(FormatIncomingMessage(message, args));
}
}
catch { }
}
/// <summary> /// <summary>
/// Write info message to log /// Write info message to log
/// </summary> /// </summary>
/// <param name="message"></param> /// <param name="message"></param>
public static void WriteWarning(string message, params object[] args) public static void WriteInfo(string message, params object[] args)
{ {
try try
{ {
if (logSeverity.TraceWarning) if (logSeverity.TraceInfo)
{ {
Trace.TraceWarning(FormatIncomingMessage(message, args)); Trace.TraceInformation(FormatIncomingMessage(message, "INFO", args));
} }
} }
catch { } catch { }
} }
/// <summary> /// <summary>
/// Write start message to log /// Write info message to log
/// </summary> /// </summary>
/// <param name="message"></param> /// <param name="message"></param>
public static void WriteWarning(string message, params object[] args)
{
try
{
if (logSeverity.TraceWarning)
{
Trace.TraceWarning(FormatIncomingMessage(message, "WARNING", args));
}
}
catch { }
}
/// <summary>
/// Write start message to log
/// </summary>
/// <param name="message"></param>
public static void WriteStart(string message, params object[] args) public static void WriteStart(string message, params object[] args)
{ {
try try
{ {
if (logSeverity.TraceInfo) if (logSeverity.TraceInfo)
{ {
Trace.TraceInformation(FormatIncomingMessage(message, args)); Trace.TraceInformation(FormatIncomingMessage(message, "START", args));
} }
} }
catch { } catch { }
} }
/// <summary>
/// Write end message to log
/// </summary>
/// <param name="message"></param>
public static void WriteEnd(string message, params object[] args)
{
try
{
if (logSeverity.TraceInfo)
{
Trace.TraceInformation(FormatIncomingMessage(message, args));
}
}
catch { }
}
private static string FormatIncomingMessage(string message, params object[] args) /// <summary>
{ /// Write end message to log
// /// </summary>
if (args.Length > 0) /// <param name="message"></param>
{ public static void WriteEnd(string message, params object[] args)
message = String.Format(message, args); {
} try
// {
return String.Concat(String.Format("[{0:G}] END: ", DateTime.Now), message); if (logSeverity.TraceInfo)
} {
} Trace.TraceInformation(FormatIncomingMessage(message, "END", args));
}
}
catch { }
}
private static string FormatIncomingMessage(string message, string tag, params object[] args)
{
//
if (args.Length > 0)
{
message = String.Format(message, args);
}
//
return String.Concat(String.Format("[{0:G}] {1}: ", DateTime.Now, tag), message);
}
}
} }

File diff suppressed because it is too large Load diff

View file

@ -67,14 +67,14 @@ namespace WebsitePanel.Server
throw; throw;
} }
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public Organization CreateOrganization(string organizationId) public Organization CreateOrganization(string organizationId)
{ {
try try
{ {
Log.WriteStart("'{0}' CreateOrganization", ProviderSettings.ProviderName); Log.WriteStart("'{0}' CreateOrganization", ProviderSettings.ProviderName);
Organization ret = Organization.CreateOrganization(organizationId); Organization ret = Organization.CreateOrganization(organizationId);
Log.WriteEnd("'{0}' CreateOrganization", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' CreateOrganization", ProviderSettings.ProviderName);
return ret; return ret;
@ -85,21 +85,17 @@ namespace WebsitePanel.Server
throw; throw;
} }
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public void DeleteOrganization(string organizationId) public void DeleteOrganization(string organizationId)
{ {
Organization.DeleteOrganization(organizationId); Organization.DeleteOrganization(organizationId);
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public void CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled) public int CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled)
{ {
Log.WriteStart("'{0} CreateUser", ProviderSettings.ProviderName); return Organization.CreateUser(organizationId, loginName, displayName, upn, password, enabled);
Organization.CreateUser(organizationId, loginName, displayName, upn, password, enabled);
Log.WriteEnd("'{0}' CreateUser", ProviderSettings.ProviderName);
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
@ -109,7 +105,7 @@ namespace WebsitePanel.Server
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public OrganizationUser GeUserGeneralSettings(string loginName, string organizationId) public OrganizationUser GetUserGeneralSettings(string loginName, string organizationId)
{ {
return Organization.GetUserGeneralSettings(loginName, organizationId); return Organization.GetUserGeneralSettings(loginName, organizationId);
} }
@ -132,9 +128,9 @@ namespace WebsitePanel.Server
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public void DeleteOrganizationDomain(string organizationDistinguishedName, string domain) public void DeleteOrganizationDomain(string organizationDistinguishedName, string domain)
{ {
Organization.DeleteOrganizationDomain(organizationDistinguishedName, domain); Organization.DeleteOrganizationDomain(organizationDistinguishedName, domain);
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public void CreateOrganizationDomain(string organizationDistinguishedName, string domain) public void CreateOrganizationDomain(string organizationDistinguishedName, string domain)
{ {
@ -147,5 +143,10 @@ namespace WebsitePanel.Server
return Organization.GetPasswordPolicy(); return Organization.GetPasswordPolicy();
} }
[WebMethod, SoapHeader("settings")]
public string GetSamAccountNameByUserPrincipalName(string organizationId, string userPrincipalName)
{
return Organization.GetSamAccountNameByUserPrincipalName(organizationId, userPrincipalName);
}
} }
} }

View file

@ -3,7 +3,7 @@
<!-- Display Settings --> <!-- Display Settings -->
<PortalName>WebsitePanel</PortalName> <PortalName>WebsitePanel</PortalName>
<!-- Enterprise Server --> <!-- Enterprise Server -->
<EnterpriseServer>http://localhost:9002</EnterpriseServer> <EnterpriseServer>http://localhost:9005</EnterpriseServer>
<!-- General Settings --> <!-- General Settings -->
<CultureCookieName>UserCulture</CultureCookieName> <CultureCookieName>UserCulture</CultureCookieName>
<ThemeCookieName>UserTheme</ThemeCookieName> <ThemeCookieName>UserTheme</ThemeCookieName>

View file

@ -486,7 +486,10 @@
<Control key="storage_usage_details" src="WebsitePanel/ExchangeServer/ExchangeStorageUsageBreakdown.ascx" title="ExchangeStorageUsageBreakdown" type="View" /> <Control key="storage_usage_details" src="WebsitePanel/ExchangeServer/ExchangeStorageUsageBreakdown.ascx" title="ExchangeStorageUsageBreakdown" type="View" />
<Control key="storage_limits" src="WebsitePanel/ExchangeServer/ExchangeStorageLimits.ascx" title="ExchangeStorageLimits" type="View" /> <Control key="storage_limits" src="WebsitePanel/ExchangeServer/ExchangeStorageLimits.ascx" title="ExchangeStorageLimits" type="View" />
<Control key="activesync_policy" src="WebsitePanel/ExchangeServer/ExchangeActiveSyncSettings.ascx" title="ExchangeActiveSyncSettings" type="View" /> <Control key="activesync_policy" src="WebsitePanel/ExchangeServer/ExchangeActiveSyncSettings.ascx" title="ExchangeActiveSyncSettings" type="View" />
<Control key="CRMOrganizationDetails" src="WebsitePanel/CRM/CRMOrganizationDetails.ascx" title="ExchangeActiveSyncSettings" type="View" /> <Control key="mailboxplans" src="WebsitePanel/ExchangeServer/ExchangeMailboxPlans.ascx" title="ExchangeMailboxPlans" type="View" />
<Control key="add_mailboxplan" src="WebsitePanel/ExchangeServer/ExchangeAddMailboxPlan.ascx" title="ExchangeAddMailboxPlan" type="View" />
<Control key="CRMOrganizationDetails" src="WebsitePanel/CRM/CRMOrganizationDetails.ascx" title="ExchangeActiveSyncSettings" type="View" />
<Control key="CRMUsers" src="WebsitePanel/CRM/CRMUsers.ascx" title="CRM Users" type="View" /> <Control key="CRMUsers" src="WebsitePanel/CRM/CRMUsers.ascx" title="CRM Users" type="View" />
<Control key="CRMUserRoles" src="WebsitePanel/CRM/CRMUserRoles.ascx" title="CRM User Roles" type="View" /> <Control key="CRMUserRoles" src="WebsitePanel/CRM/CRMUserRoles.ascx" title="CRM User Roles" type="View" />
<Control key="create_crm_user" src="WebsitePanel/CRM/CreateCRMUser.ascx" title="Create CRM User" type="View" /> <Control key="create_crm_user" src="WebsitePanel/CRM/CreateCRMUser.ascx" title="Create CRM User" type="View" />

View file

@ -2806,7 +2806,7 @@
<value>Contacts per Organization</value> <value>Contacts per Organization</value>
</data> </data>
<data name="Quota.Exchange2007.DiskSpace" xml:space="preserve"> <data name="Quota.Exchange2007.DiskSpace" xml:space="preserve">
<value>Max mailbox size, MB</value> <value>Mailbox storage, MB</value>
</data> </data>
<data name="Quota.Exchange2007.DistributionLists" xml:space="preserve"> <data name="Quota.Exchange2007.DistributionLists" xml:space="preserve">
<value>Distribution Lists per Organization</value> <value>Distribution Lists per Organization</value>
@ -2850,6 +2850,18 @@
<data name="Quota.Exchange2007.PublicFolders" xml:space="preserve"> <data name="Quota.Exchange2007.PublicFolders" xml:space="preserve">
<value>Public Folders per Organization</value> <value>Public Folders per Organization</value>
</data> </data>
<data name="Quota.Exchange2007.KeepDeletedItemsDays" xml:space="preserve">
<value>Keep Deleted Items (Days)</value>
</data>
<data name="Quota.Exchange2007.MaxRecipients" xml:space="preserve">
<value>Maximum Recipients</value>
</data>
<data name="Quota.Exchange2007.MaxSendMessageSizeKB" xml:space="preserve">
<value>Maximum Send Message Size (Kb)</value>
</data>
<data name="Quota.Exchange2007.MaxReceiveMessageSizeKB" xml:space="preserve">
<value>Maximum Receive Message Size (Kb)</value>
</data>
<data name="ResourceGroup.Exchange" xml:space="preserve"> <data name="ResourceGroup.Exchange" xml:space="preserve">
<value>Hosted Exchange</value> <value>Hosted Exchange</value>
</data> </data>
@ -4990,4 +5002,7 @@
<data name="Quota.HostedSharePoint.UseSharedSSL" xml:space="preserve"> <data name="Quota.HostedSharePoint.UseSharedSSL" xml:space="preserve">
<value>Use shared SSL Root</value> <value>Use shared SSL Root</value>
</data> </data>
<data name="Quota.Exchange2007.IsConsumer" xml:space="preserve">
<value>Consumer Organization Support</value>
</data>
</root> </root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

View file

@ -112,10 +112,10 @@
<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="btnCancel.Text" xml:space="preserve"> <data name="btnCancel.Text" xml:space="preserve">
<value>Cancel</value> <value>Cancel</value>
@ -219,4 +219,7 @@
<data name="valRequirePlan.ErrorMessage" xml:space="preserve"> <data name="valRequirePlan.ErrorMessage" xml:space="preserve">
<value>Please select hosting plan</value> <value>Please select hosting plan</value>
</data> </data>
<data name="chkIntegratedOUProvisioning.Text" xml:space="preserve">
<value>Automated Hosted Organization Provisioning</value>
</data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating ActiveSync settings...');</value> <value>ShowProgressDialog('Updating ActiveSync settings...');</value>
@ -151,7 +151,7 @@
<value>Windows SharePoint Services</value> <value>Windows SharePoint Services</value>
</data> </data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Exchange Server 2007 enables users who have mobile devices to synchronize mailbox data by using Exchange ActiveSync. Users can synchronize e-mail, contacts, calendars, and task folders. &lt;/p&gt;&lt;p&gt; <value>&lt;p&gt;Exchange Server enables users who have mobile devices to synchronize mailbox data by using Exchange ActiveSync. Users can synchronize e-mail, contacts, calendars, and task folders. &lt;/p&gt;&lt;p&gt;
ActiveSync mailbox policy allows you to apply a common set of security settings to all users in organization. ActiveSync mailbox policy allows you to apply a common set of security settings to all users in organization.
&lt;/p&gt;</value> &lt;/p&gt;</value>
</data> </data>

View file

@ -112,13 +112,16 @@
<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="btnCancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>Enter domain name, e.g. "mydomain.com" or "sub.mydomain.com"</value> <value>Select a domain name, e.g. "mydomain.com" or "sub.mydomain.com"</value>
</data> </data>
<data name="locTitle.Text" xml:space="preserve"> <data name="locTitle.Text" xml:space="preserve">
<value>Add Domain Name</value> <value>Add Domain Name</value>

View file

@ -112,20 +112,17 @@
<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.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating mailbox settings...');</value>
</data>
<data name="btnSave.Text" xml:space="preserve">
<value>Save Changes</value>
</data>
<data name="chkActiveSync.Text" xml:space="preserve"> <data name="chkActiveSync.Text" xml:space="preserve">
<value>ActiveSync</value> <value>ActiveSync</value>
</data> </data>
<data name="chkHideFromAddressBook" xml:space="preserve">
<value>Hide from Addressbook</value>
</data>
<data name="chkIMAP.Text" xml:space="preserve"> <data name="chkIMAP.Text" xml:space="preserve">
<value>IMAP</value> <value>IMAP</value>
</data> </data>
@ -135,20 +132,11 @@
<data name="chkOWA.Text" xml:space="preserve"> <data name="chkOWA.Text" xml:space="preserve">
<value>OWA/HTTP</value> <value>OWA/HTTP</value>
</data> </data>
<data name="chkPmmAllowed.Text" xml:space="preserve">
<value>Allow these settings to be managed from &lt;b&gt;Personal Mailbox Manager&lt;/b&gt;</value>
</data>
<data name="chkPOP3.Text" xml:space="preserve"> <data name="chkPOP3.Text" xml:space="preserve">
<value>POP3</value> <value>POP3</value>
</data> </data>
<data name="chkUseOrgDeleteRetention.Text" xml:space="preserve">
<value>Use organization defaults</value>
</data>
<data name="chkUseOrgStorageQuotas.Text" xml:space="preserve">
<value>Use organization defaults</value>
</data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>&lt;p&gt;In "Mailbox Features" section you may enable/disable specific access protocols for the mailbox.&lt;/p&gt;&lt;p&gt;You may override mailbox quotas and retention period defined on the organization level. Please note, that you cannot specify storage settings higher than defined in the space hosting plan.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Domain User Name&lt;/b&gt; is used when setting up mailbox in Outlook 2003/2007.&lt;/p&gt;</value> <value>&lt;p&gt; A Mailbox plan is a template that defines the characteristics of a mailbox &lt;/p&gt; &lt;p&gt;The mailbox plan name needs to be unique. A mailbox plan cannot be modified. In case a mailbox needs a mailbox plan with another characteristics, a new mailbox plan needs to be created and assigned to the mailbox. A mailbox plan can only be deleted when the plan is not assigned to any mailboxes. &lt;/p&gt;</value>
</data> </data>
<data name="locDays.Text" xml:space="preserve"> <data name="locDays.Text" xml:space="preserve">
<value>days</value> <value>days</value>
@ -162,11 +150,17 @@
<data name="locKeepDeletedItems.Text" xml:space="preserve"> <data name="locKeepDeletedItems.Text" xml:space="preserve">
<value>Keep deleted items for:</value> <value>Keep deleted items for:</value>
</data> </data>
<data name="locLastLogoff.Text" xml:space="preserve"> <data name="locMailboxSize.Text" xml:space="preserve">
<value>Last Logoff:</value> <value>Mailbox size:</value>
</data> </data>
<data name="locLastLogon.Text" xml:space="preserve"> <data name="locMaxReceiveMessageSizeKB.Text" xml:space="preserve">
<value>Last Logon:</value> <value>Maximum Receive Message Size:</value>
</data>
<data name="locMaxRecipients.Text" xml:space="preserve">
<value>Maximum Recipients:</value>
</data>
<data name="locMaxSendMessageSizeKB.Text" xml:space="preserve">
<value>Maximum Send Message Size:</value>
</data> </data>
<data name="locProhibitSend.Text" xml:space="preserve"> <data name="locProhibitSend.Text" xml:space="preserve">
<value>Prohibit send at:</value> <value>Prohibit send at:</value>
@ -175,13 +169,7 @@
<value>Prohibit send and receive at:</value> <value>Prohibit send and receive at:</value>
</data> </data>
<data name="locTitle.Text" xml:space="preserve"> <data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</value> <value>Add Mailbox plan</value>
</data>
<data name="locTotalItems.Text" xml:space="preserve">
<value>Total Items:</value>
</data>
<data name="locTotalSize.Text" xml:space="preserve">
<value>Total Size (MB):</value>
</data> </data>
<data name="locWhenSizeExceeds.Text" xml:space="preserve"> <data name="locWhenSizeExceeds.Text" xml:space="preserve">
<value>When the mailbox size exceeds the indicated amount:</value> <value>When the mailbox size exceeds the indicated amount:</value>
@ -189,19 +177,25 @@
<data name="secDeleteRetention.Text" xml:space="preserve"> <data name="secDeleteRetention.Text" xml:space="preserve">
<value>Delete Item Retention</value> <value>Delete Item Retention</value>
</data> </data>
<data name="secDomainUser.Text" xml:space="preserve">
<value>Domain User Name</value>
</data>
<data name="secMailboxFeatures.Text" xml:space="preserve"> <data name="secMailboxFeatures.Text" xml:space="preserve">
<value>Mailbox Features</value> <value>Mailbox Features</value>
</data> </data>
<data name="secStatistics.Text" xml:space="preserve"> <data name="secMailboxGeneral.Text" xml:space="preserve">
<value>Mailbox Statistics</value> <value>General</value>
</data>
<data name="secMailboxPlan.Text" xml:space="preserve">
<value>Mailbox plan</value>
</data> </data>
<data name="secStorageQuotas.Text" xml:space="preserve"> <data name="secStorageQuotas.Text" xml:space="preserve">
<value>Mailbox Quotas</value> <value>Quotas</value>
</data> </data>
<data name="Text.PageName" xml:space="preserve"> <data name="Text.PageName" xml:space="preserve">
<value>Mailboxes</value> <value>Mailbox plan</value>
</data>
<data name="valRequireMailboxPlan.ErrorMessage" xml:space="preserve">
<value>Please enter correct mailboxplan</value>
</data>
<data name="valRequireMailboxPlan.Text" xml:space="preserve">
<value>*</value>
</data> </data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating contact settings...');</value> <value>ShowProgressDialog('Updating contact settings...');</value>

View file

@ -112,10 +112,10 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating contact settings...');</value> <value>ShowProgressDialog('Updating contact settings...');</value>

View file

@ -112,10 +112,10 @@
<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="btnCreateContact.Text" xml:space="preserve"> <data name="btnCreateContact.Text" xml:space="preserve">
<value>Create New Contact</value> <value>Create New Contact</value>

View file

@ -112,10 +112,10 @@
<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="btnCreate.OnClientClick" xml:space="preserve"> <data name="btnCreate.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Creating contact...');</value> <value>ShowProgressDialog('Creating contact...');</value>

View file

@ -112,10 +112,10 @@
<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="btnCreate.OnClientClick" xml:space="preserve"> <data name="btnCreate.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Creating distribution list...');</value> <value>ShowProgressDialog('Creating distribution list...');</value>
@ -124,7 +124,7 @@
<value>Create Distribution List</value> <value>Create Distribution List</value>
</data> </data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>&lt;p&gt;&lt;b&gt;Display Name&lt;/b&gt; will be shown in the GAL in Outlook and OWA.&lt;/p&gt;&lt;p&gt;You can add new Domain Names on "Domain Names" page. We always provide you with a free domain that would allow your organization migrating to Exchange as soon as possible.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Primary E-Mail Address&lt;/b&gt; is shown in the GAL and in "From" field of all messages sent from this DL.&lt;/p&gt;</value> <value>&lt;p&gt;&lt;b&gt;Display Name&lt;/b&gt; will be shown in the GAL in Outlook and OWA.&lt;/p&gt;&lt;p&gt;You can add new Domain Names on "Domain Names" page. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Primary E-Mail Address&lt;/b&gt; is shown in the GAL and in "From" field of all messages sent from this DL.&lt;/p&gt;</value>
</data> </data>
<data name="locAccount.Text" xml:space="preserve"> <data name="locAccount.Text" xml:space="preserve">
<value>E-mail Address: *</value> <value>E-mail Address: *</value>
@ -132,22 +132,22 @@
<data name="locDisplayName.Text" xml:space="preserve"> <data name="locDisplayName.Text" xml:space="preserve">
<value>Display Name: *</value> <value>Display Name: *</value>
</data> </data>
<data name="locManagedBy.Text" xml:space="preserve">
<value>Managed by: *</value>
</data>
<data name="locTitle.Text" xml:space="preserve"> <data name="locTitle.Text" xml:space="preserve">
<value>Create New Distribution List</value> <value>Create New Distribution List</value>
</data> </data>
<data name="Text.PageName" xml:space="preserve"> <data name="Text.PageName" xml:space="preserve">
<value>Distribution Lists</value> <value>Distribution Lists</value>
</data> </data>
<data name="valManager.ErrorMessage" xml:space="preserve">
<value>Please specify a manager</value>
</data>
<data name="valRequireDisplayName.ErrorMessage" xml:space="preserve"> <data name="valRequireDisplayName.ErrorMessage" xml:space="preserve">
<value>Enter Display Name</value> <value>Enter Display Name</value>
</data> </data>
<data name="valRequireDisplayName.Text" xml:space="preserve"> <data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value> <value>*</value>
</data> </data>
<data name="locManagedBy.Text" xml:space="preserve">
<value>Managed by: *</value>
</data>
<data name="valManager.ErrorMessage" xml:space="preserve">
<value>Please specify a manager</value>
</data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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="btnCreate.OnClientClick" xml:space="preserve"> <data name="btnCreate.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Creating mailbox...');</value> <value>ShowProgressDialog('Creating mailbox...');</value>
@ -134,7 +134,7 @@
&lt;p&gt;&lt;b&gt;E-Mail Address&lt;/b&gt; is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.&lt;/p&gt; &lt;p&gt;&lt;b&gt;E-Mail Address&lt;/b&gt; is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.&lt;/p&gt;
&lt;p&gt;New organization domains can be added on "Domain Names" page. Temporary domain name is provided by default to allow creating new accounts as soon as possible.&lt;/p&gt; &lt;p&gt;New organization domains can be added on "Domain Names" page.&lt;/p&gt;
&lt;p&gt;Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.</value> &lt;p&gt;Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.</value>
</data> </data>
@ -156,6 +156,9 @@
<data name="locPassword.Text" xml:space="preserve"> <data name="locPassword.Text" xml:space="preserve">
<value>Password: *</value> <value>Password: *</value>
</data> </data>
<data name="locSubscriberNumber.Text" xml:space="preserve">
<value>Subscriber Number: *</value>
</data>
<data name="locTitle.Text" xml:space="preserve"> <data name="locTitle.Text" xml:space="preserve">
<value>Create New Mailbox</value> <value>Create New Mailbox</value>
</data> </data>
@ -183,4 +186,10 @@
<data name="valRequireDisplayName.Text" xml:space="preserve"> <data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value> <value>*</value>
</data> </data>
<data name="valRequireSubscriberNumber.ErrorMessage" xml:space="preserve">
<value>Enter Subscriber Number</value>
</data>
<data name="valRequireSubscriberNumber.Text" xml:space="preserve">
<value>*</value>
</data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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="btnAddEmail.Text" xml:space="preserve"> <data name="btnAddEmail.Text" xml:space="preserve">
<value>Add E-mail Address</value> <value>Add E-mail Address</value>
@ -127,7 +127,7 @@
<value>Set As Primary</value> <value>Set As Primary</value>
</data> </data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>&lt;b&gt;Primary E-Mail Address&lt;/b&gt; is a User Principal Name (UPN). It will be used as a login in Outlook 2003/2007 and Outlook Web Access (OWA). Also, Primary E-Mail Address will be shown in "From" field of messages sent from this mailbox.&lt;/p&gt;&lt;p&gt;You can add new Domain Names on "Domain Names" page. We always provide you with a free domain that would allow your organization migrating to Exchange as soon as possible.&lt;/p&gt;&lt;p&gt;E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.&lt;/p&gt;</value> <value>&lt;b&gt;Primary E-Mail Address&lt;/b&gt; is a User Principal Name (UPN). It will be used as a login in Outlook and Outlook Web Access (OWA). Also, Primary E-Mail Address will be shown in "From" field of messages sent from this mailbox.&lt;/p&gt;&lt;p&gt;You can add new Domain Names on "Domain Names" page.&lt;/p&gt;&lt;p&gt;E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.&lt;/p&gt;</value>
</data> </data>
<data name="gvEmailAddress.Header" xml:space="preserve"> <data name="gvEmailAddress.Header" xml:space="preserve">
<value>E-mail Address</value> <value>E-mail Address</value>

View file

@ -112,10 +112,10 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating distribution list settings...');</value> <value>ShowProgressDialog('Updating distribution list settings...');</value>
@ -144,13 +144,13 @@
<data name="Text.PageName" xml:space="preserve"> <data name="Text.PageName" xml:space="preserve">
<value>Distribution Lists</value> <value>Distribution Lists</value>
</data> </data>
<data name="valManager.ErrorMessage" xml:space="preserve">
<value>Please specify a manager</value>
</data>
<data name="valRequireDisplayName.ErrorMessage" xml:space="preserve"> <data name="valRequireDisplayName.ErrorMessage" xml:space="preserve">
<value>Enter Display Name</value> <value>Enter Display Name</value>
</data> </data>
<data name="valRequireDisplayName.Text" xml:space="preserve"> <data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value> <value>*</value>
</data> </data>
<data name="valManager.ErrorMessage" xml:space="preserve">
<value>Please specify a manager</value>
</data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating distribution list settings...');</value> <value>ShowProgressDialog('Updating distribution list settings...');</value>

View file

@ -112,10 +112,10 @@
<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="btnCreateList.Text" xml:space="preserve"> <data name="btnCreateList.Text" xml:space="preserve">
<value>Create New Distribution List</value> <value>Create New Distribution List</value>

View file

@ -112,10 +112,10 @@
<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="btnAddDomain.Text" xml:space="preserve"> <data name="btnAddDomain.Text" xml:space="preserve">
<value>Add New Domain</value> <value>Add New Domain</value>
@ -142,11 +142,9 @@
<value>Domain Name</value> <value>Domain Name</value>
</data> </data>
<data name="HSFormComments.Text" xml:space="preserve"> <data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Each organization can have several domain names. These domain names are used as part of the primary e-mail address (UPN) of the new accounts. Exchange-enabled organizations use domain name when creating e-mail addresses for mailboxes, distribution lists and mail-enabled public folders. Domain name is also used when creating new site collection in SharePoint.&lt;/p&gt; <value>&lt;p&gt;Each organization can have several domain names. These domain names are used as part of the primary e-mail address (UPN) of the new accounts. Exchange-enabled organizations use domain name when creating e-mail addresses for mailboxes, and distribution lists. Domain name is also used when creating new site collection in SharePoint.&lt;/p&gt;
&lt;p&gt;Default domain name is selected by default when creating a new e-mail address. You can always change default domain name and it will not affect existing accounts.&lt;/p&gt; &lt;p&gt;Default domain name is selected by default when creating a new e-mail address. You can always change default domain name and it will not affect existing accounts.&lt;/p&gt;
&lt;p&gt;For each domain name a corresponding DNS Zone is created. You can edit DNS zone records by clicking domain name link. If you are unsure about the structure of DNS zone, please do not modify zone records.&lt;/p&gt;</value>
&lt;p&gt;For each domain name WebsitePanel creates a corresponding DNS Zone. You can edit DNS zone records by clicking domain name link. If you are unsure about the structure of DNS zone, please do not modify zone records.&lt;/p&gt;</value>
</data> </data>
<data name="locQuota.Text" xml:space="preserve"> <data name="locQuota.Text" xml:space="preserve">
<value>Total Domain Names Used:</value> <value>Total Domain Names Used:</value>

View file

@ -112,10 +112,10 @@
<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="btnAdd.Text" xml:space="preserve"> <data name="btnAdd.Text" xml:space="preserve">
<value>Add record</value> <value>Add record</value>
@ -130,7 +130,7 @@
<value>Save</value> <value>Save</value>
</data> </data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>&lt;p&gt;For each domain name WebsitePanel creates a corresponding DNS Zone. If you are unsure about the structure of DNS zone, please do not modify zone records.&lt;/p&gt;</value> <value>&lt;p&gt;For each domain name a corresponding DNS Zone is created. If you are unsure about the structure of DNS zone, please do not modify zone records.&lt;/p&gt;</value>
</data> </data>
<data name="gvRecords.Empty" xml:space="preserve"> <data name="gvRecords.Empty" xml:space="preserve">
<value>No DNS records defined.</value> <value>No DNS records defined.</value>

View file

@ -112,10 +112,10 @@
<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="btnAddEmail.Text" xml:space="preserve"> <data name="btnAddEmail.Text" xml:space="preserve">
<value>Add E-mail Address</value> <value>Add E-mail Address</value>
@ -130,7 +130,7 @@
<value>Allow these settings to be managed from &lt;b&gt;Personal Mailbox Manager&lt;/b&gt;</value> <value>Allow these settings to be managed from &lt;b&gt;Personal Mailbox Manager&lt;/b&gt;</value>
</data> </data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>&lt;b&gt;Primary E-Mail Address&lt;/b&gt; is a User Principal Name (UPN). It will be used as a login in Outlook 2003/2007 and Outlook Web Access (OWA). Also, Primary E-Mail Address will be shown in "From" field of messages sent from this mailbox.&lt;/p&gt;&lt;p&gt;You can add new Domain Names on "Domain Names" page. We always provide you with a free domain that would allow your organization migrating to Exchange as soon as possible.&lt;/p&gt;&lt;p&gt;E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.&lt;/p&gt;</value> <value>&lt;b&gt;Primary E-Mail Address&lt;/b&gt; is a User Principal Name (UPN). It will be used as a login in Outlook and Outlook Web Access (OWA). Also, Primary E-Mail Address will be shown in "From" field of messages sent from this mailbox.&lt;/p&gt;&lt;p&gt;You can add new Domain Names on "Domain Names" page. &lt;/p&gt;&lt;p&gt;E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.&lt;/p&gt;</value>
</data> </data>
<data name="gvEmailAddress.Header" xml:space="preserve"> <data name="gvEmailAddress.Header" xml:space="preserve">
<value>E-mail Address</value> <value>E-mail Address</value>

View file

@ -112,10 +112,10 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating mailbox settings...');</value> <value>ShowProgressDialog('Updating mailbox settings...');</value>
@ -133,85 +133,22 @@
<value>Allow these settings to be managed from &lt;b&gt;Personal Mailbox Manager&lt;/b&gt;</value> <value>Allow these settings to be managed from &lt;b&gt;Personal Mailbox Manager&lt;/b&gt;</value>
</data> </data>
<data name="HSFormComments.Text" xml:space="preserve"> <data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;The General tab displays general information about the mailbox user. Use this tab to view or modify the display name, password, company information, contact information and address. You can also specify whether to disable the mailbox user or hide the mailbox user from Exchange address lists.&lt;/p&gt;</value> <value>&lt;p&gt;The General tab displays general information about the mailbox Use this tab to view or modify the mailbox characteristics such as size and show in your address book in the Exchange address lists. You can also specify whether to disable the mailbox user.&lt;/p&gt;</value>
</data> </data>
<data name="locAddress.Text" xml:space="preserve"> <data name="locMailboxplanName.Text" xml:space="preserve">
<value>Address:</value> <value>Mailbox plan:</value>
</data> </data>
<data name="locBusinessPhone.Text" xml:space="preserve"> <data name="locQuota.Text" xml:space="preserve">
<value>Business Phone:</value> <value>Mailbox size:</value>
</data>
<data name="locCity.Text" xml:space="preserve">
<value>City:</value>
</data>
<data name="locCompany.Text" xml:space="preserve">
<value>Company:</value>
</data>
<data name="locCountry.Text" xml:space="preserve">
<value>Country/Region:</value>
</data>
<data name="locDepartment.Text" xml:space="preserve">
<value>Department:</value>
</data>
<data name="locDisplayName.Text" xml:space="preserve">
<value>Display Name: *</value>
</data>
<data name="locFax.Text" xml:space="preserve">
<value>Fax:</value>
</data>
<data name="locFirstName.Text" xml:space="preserve">
<value>First Name:</value>
</data>
<data name="locHomePhone.Text" xml:space="preserve">
<value>Home Phone:</value>
</data>
<data name="locInitials.Text" xml:space="preserve">
<value>Initials:</value>
</data>
<data name="locJobTitle.Text" xml:space="preserve">
<value>Job Title:</value>
</data>
<data name="locLastName.Text" xml:space="preserve">
<value>Last Name:</value>
</data>
<data name="locManager.Text" xml:space="preserve">
<value>Manager:</value>
</data>
<data name="locMobilePhone.Text" xml:space="preserve">
<value>Mobile Phone:</value>
</data>
<data name="locNotes.Text" xml:space="preserve">
<value>Notes:</value>
</data>
<data name="locOffice.Text" xml:space="preserve">
<value>Office:</value>
</data>
<data name="locPager.Text" xml:space="preserve">
<value>Pager:</value>
</data>
<data name="locPassword.Text" xml:space="preserve">
<value>Password:</value>
</data>
<data name="locState.Text" xml:space="preserve">
<value>State/Province:</value>
</data> </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>
<data name="locWebPage.Text" xml:space="preserve"> <data name="secCalendarSettings.Text" xml:space="preserve">
<value>Web Page:</value> <value>Calendar Settings</value>
</data> </data>
<data name="locZip.Text" xml:space="preserve"> <data name="secGeneral.Text" xml:space="preserve">
<value>Zip/Postal Code:</value> <value>General</value>
</data>
<data name="secAddressInfo.Text" xml:space="preserve">
<value>Address</value>
</data>
<data name="secCompanyInfo.Text" xml:space="preserve">
<value>Company Information</value>
</data>
<data name="secContactInfo.Text" xml:space="preserve">
<value>Contact Information</value>
</data> </data>
<data name="Text.PageName" xml:space="preserve"> <data name="Text.PageName" xml:space="preserve">
<value>Mailboxes</value> <value>Mailboxes</value>

View file

@ -112,10 +112,10 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating mailbox settings...');</value> <value>ShowProgressDialog('Updating mailbox settings...');</value>

View file

@ -112,13 +112,13 @@
<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="deviceUserAgentColumn.HeaderText" xml:space="preserve"> <data name="cmdDelete.OnClientClick" xml:space="preserve">
<value>User Agent</value> <value>return confirm('Are you sure you want to remove the device partnership?');</value>
</data> </data>
<data name="deviceStatus.HeaderText" xml:space="preserve"> <data name="deviceStatus.HeaderText" xml:space="preserve">
<value>Status</value> <value>Status</value>
@ -126,34 +126,34 @@
<data name="deviceTypeColumn.HeaderText" xml:space="preserve"> <data name="deviceTypeColumn.HeaderText" xml:space="preserve">
<value>Type</value> <value>Type</value>
</data> </data>
<data name="deviceUserAgentColumn.HeaderText" xml:space="preserve">
<value>User Agent</value>
</data>
<data name="gvMobile.EmptyDataText" xml:space="preserve"> <data name="gvMobile.EmptyDataText" xml:space="preserve">
<value>There are no mobile devices.</value> <value>There are no mobile devices.</value>
</data> </data>
<data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Manage mobile devices here.&lt;/p&gt;&lt;p&gt;To add a new device, begin a partnership with Microsoft Exchange from the device and it will appear in the device list.&lt;/p&gt;&lt;p&gt;You can remove devices that you are no longer using. If you forget your device password, you can access it here. If you lose your phone or mobile device, you can initiate a remote device wipe to protect your information.&lt;/p&gt;</value>
</data>
<data name="lastSyncTimeColumn.HeaderText" xml:space="preserve"> <data name="lastSyncTimeColumn.HeaderText" xml:space="preserve">
<value>Last Sync Time</value> <value>Last Sync Time</value>
</data> </data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="OK" xml:space="preserve"> <data name="OK" xml:space="preserve">
<value>OK</value> <value>OK</value>
</data> </data>
<data name="PendingWipe" xml:space="preserve"> <data name="PendingWipe" xml:space="preserve">
<value>Pending Wipe</value> <value>Pending Wipe</value>
</data> </data>
<data name="Text.PageName" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="Unknown" xml:space="preserve"> <data name="Unknown" xml:space="preserve">
<value>Unknown</value> <value>Unknown</value>
</data> </data>
<data name="WipeSuccessful" xml:space="preserve"> <data name="WipeSuccessful" xml:space="preserve">
<value>Wipe Successful</value> <value>Wipe Successful</value>
</data> </data>
<data name="cmdDelete.OnClientClick" xml:space="preserve">
<value>return confirm('Are you sure you want to remove the device partnership?');</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Manage mobile devices here.&lt;/p&gt;&lt;p&gt;To add a new device, begin a partnership with Microsoft Exchange from the device and it will appear in the device list.&lt;/p&gt;&lt;p&gt;You can remove devices that you are no longer using. If you forget your device password, you can access it here. If you lose your phone or mobile device, you can initiate a remote device wipe to protect your information.&lt;/p&gt;</value>
</data>
</root> </root>

View file

@ -112,11 +112,26 @@
<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="btnBack.Text" xml:space="preserve">
<value>Back</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Cancel Pending Wipe Request</value>
</data>
<data name="btnWipeAllData.OnClientClick" xml:space="preserve">
<value>return confirm('Are you sure you want to wipe all data from your device?');</value>
</data>
<data name="btnWipeAllData.Text" xml:space="preserve">
<value>Wipe All Data from Device</value>
</data>
<data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Manage the mobile device here.&lt;/p&gt;&lt;p&gt;If you forget your device password, you can access it here. If you lose your phone or mobile device, you can initiate a remote device wipe to protect your information . You can also cancel a wipe request if it was initiated by accident or the device was found subsequently.&lt;/p&gt;</value>
</data>
<data name="locDeviceAcnowledgeTime.Text" xml:space="preserve"> <data name="locDeviceAcnowledgeTime.Text" xml:space="preserve">
<value>Device wipe acnowledge time:</value> <value>Device wipe acnowledge time:</value>
</data> </data>
@ -165,37 +180,22 @@
<data name="locStatus.Text" xml:space="preserve"> <data name="locStatus.Text" xml:space="preserve">
<value>Status:</value> <value>Status:</value>
</data> </data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="OK" xml:space="preserve"> <data name="OK" xml:space="preserve">
<value>OK</value> <value>OK</value>
</data> </data>
<data name="PendingWipe" xml:space="preserve"> <data name="PendingWipe" xml:space="preserve">
<value>Pending wipe</value> <value>Pending wipe</value>
</data> </data>
<data name="Text.PageName" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="Unknown" xml:space="preserve"> <data name="Unknown" xml:space="preserve">
<value>Unknown</value> <value>Unknown</value>
</data> </data>
<data name="WipeSuccessful" xml:space="preserve"> <data name="WipeSuccessful" xml:space="preserve">
<value>Wipe successful</value> <value>Wipe successful</value>
</data> </data>
<data name="btnBack.Text" xml:space="preserve">
<value>Back</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Cancel Pending Wipe Request</value>
</data>
<data name="btnWipeAllData.Text" xml:space="preserve">
<value>Wipe All Data from Device</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Manage the mobile device here.&lt;/p&gt;&lt;p&gt;If you forget your device password, you can access it here. If you lose your phone or mobile device, you can initiate a remote device wipe to protect your information . You can also cancel a wipe request if it was initiated by accident or the device was found subsequently.&lt;/p&gt;</value>
</data>
<data name="btnWipeAllData.OnClientClick" xml:space="preserve">
<value>return confirm('Are you sure you want to wipe all data from your device?');</value>
</data>
</root> </root>

View file

@ -112,17 +112,23 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" 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>&lt;p&gt;When you grant &lt;b&gt;Full Access&lt;/b&gt; permission to a user, that user can open this mailbox and access all of its content.&lt;/p&gt; &lt;br&gt;&lt;p&gt;When you grant &lt;b&gt;Send As&lt;/b&gt; permission to a user, that user can send messages as this mailbox. &lt;/p&gt; &lt;br&gt;&lt;p&gt;We do not recommend to use this setting together “Send on behalf” (“Send as”) it may work unpredictable&lt;/p&gt;</value> <value>&lt;p&gt;When you grant &lt;b&gt;Full Access&lt;/b&gt; permission to a user, that user can open this mailbox and access all of its content.&lt;/p&gt; &lt;br&gt;&lt;p&gt;When you grant &lt;b&gt;Send As&lt;/b&gt; permission to a user, that user can send messages as this mailbox. &lt;/p&gt; &lt;br&gt;&lt;p&gt;We do not recommend to use this setting together “Send on behalf” (“Send as”) it may work unpredictable&lt;/p&gt;</value>
</data> </data>
<data name="grandPermission.Text" xml:space="preserve">
<value>Grant this permission to:</value>
</data>
<data name="secFullAccessPermission.Text" xml:space="preserve"> <data name="secFullAccessPermission.Text" xml:space="preserve">
<value>Full Access</value> <value>Full Access</value>
</data> </data>
@ -132,10 +138,4 @@
<data name="Text.PageName" xml:space="preserve"> <data name="Text.PageName" xml:space="preserve">
<value>Permissions</value> <value>Permissions</value>
</data> </data>
<data name="grandPermission.Text" xml:space="preserve">
<value>Grant this permission to:</value>
</data>
<data name="btnSave.Text" xml:space="preserve">
<value>Save Changes</value>
</data>
</root> </root>

View file

@ -112,36 +112,42 @@
<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="locDomainTemplates.Text" xml:space="preserve"> <data name="btnAddMailboxPlan.Text" xml:space="preserve">
<value>Domain Templates</value> <value>Add New Mailbox plan</value>
</data> </data>
<data name="locEcpDomain.Text" xml:space="preserve"> <data name="btnSetDefaultMailboxPlan.Text" xml:space="preserve">
<value>Exchange Control Panel URL:</value> <value>Set Default Mailbox plan</value>
</data> </data>
<data name="locEcpURLDescr.Text" xml:space="preserve"> <data name="cmdDelete.OnClientClick" xml:space="preserve">
<value>You can use [DOMAIN_NAME] variable for organization default domain.</value> <value>if(!confirm('Are you sure you want to delete selected mailbox plan?')) return false; else ShowProgressDialog('Deleting Mailbox plan...');</value>
</data> </data>
<data name="locOfferID.Text" xml:space="preserve"> <data name="cmdDelete.Text" xml:space="preserve">
<value>Offer ID:</value> <value>Delete</value>
</data> </data>
<data name="locOrganizationTemplate.Text" xml:space="preserve"> <data name="cmdDelete.ToolTip" xml:space="preserve">
<value>Organization Template</value> <value>Delete Mailbox plan</value>
</data> </data>
<data name="locProgramID.Text" xml:space="preserve"> <data name="gvMailboxPlan.Header" xml:space="preserve">
<value>Program ID:</value> <value>Mailbox plan</value>
</data> </data>
<data name="locTemporaryDomain.Text" xml:space="preserve"> <data name="gvMailboxPlanDefault.Header" xml:space="preserve">
<value>Temporary domain:</value> <value>Default Mailbox plan</value>
</data> </data>
<data name="requireOfferID.Text" xml:space="preserve"> <data name="gvMailboxPlans.Empty" xml:space="preserve">
<value>*</value> <value>No mailbox plans have been added yet. To add a new mailbox plan click "Add New Mailbox plan" button.</value>
</data> </data>
<data name="requireProgramID.Text" xml:space="preserve"> <data name="HSFormComments.Text" xml:space="preserve">
<value>*</value> <value>&lt;p&gt; A Mailbox plan is a template that defines the characteristics of a mailbox &lt;/p&gt; &lt;p&gt;The mailbox plan name needs to be unique. A mailbox plan cannot be modified. In case a mailbox needs a mailbox plan with another characteristics, a new mailbox plan needs to be created and assigned to the mailbox. A mailbox plan can only be deleted when the plan is not assigned to any mailboxes. &lt;/p&gt;</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Mailbox plans</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Mailbox plans</value>
</data> </data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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="btnSend.Text" xml:space="preserve"> <data name="btnSend.Text" xml:space="preserve">
<value>Send</value> <value>Send</value>

View file

@ -112,10 +112,10 @@
<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="btnCreateMailbox.Text" xml:space="preserve"> <data name="btnCreateMailbox.Text" xml:space="preserve">
<value>Create New Mailbox</value> <value>Create New Mailbox</value>
@ -132,6 +132,9 @@
<data name="cmdSearch.AlternateText" xml:space="preserve"> <data name="cmdSearch.AlternateText" xml:space="preserve">
<value>Search</value> <value>Search</value>
</data> </data>
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
<value>Domain Account</value>
</data>
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve"> <data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
<value>Display Name</value> <value>Display Name</value>
</data> </data>
@ -147,6 +150,12 @@
<data name="gvMailboxesEmail.Header" xml:space="preserve"> <data name="gvMailboxesEmail.Header" xml:space="preserve">
<value>Primary E-mail Address</value> <value>Primary E-mail Address</value>
</data> </data>
<data name="gvMailboxesMailboxPlan.Header" xml:space="preserve">
<value>Mailbox plan</value>
</data>
<data name="gvSubscriberNumber.Header" xml:space="preserve">
<value>Subscriber</value>
</data>
<data name="HSFormComments.Text" xml:space="preserve"> <data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;&lt;b&gt;Mailboxes&lt;/b&gt; are used to receive and send electronic messages. Each mailbox is a separate Exchange account which may be a person, room or inventory unit.&lt;/p&gt; <value>&lt;p&gt;&lt;b&gt;Mailboxes&lt;/b&gt; are used to receive and send electronic messages. Each mailbox is a separate Exchange account which may be a person, room or inventory unit.&lt;/p&gt;
@ -165,7 +174,4 @@
<data name="Text.PageName" xml:space="preserve"> <data name="Text.PageName" xml:space="preserve">
<value>Mailboxes</value> <value>Mailboxes</value>
</data> </data>
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
<value>Domain Account</value>
</data>
</root> </root>

View file

@ -1,162 +0,0 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating storage settings...');</value>
</data>
<data name="btnSave.Text" xml:space="preserve">
<value>Save Changes</value>
</data>
<data name="btnSaveApply.OnClientClick" xml:space="preserve">
<value>if(!confirm('Please be aware that applying new storage settings to all mailboxes can take significant time to complete. Do you want to proceed?')) return false; else ShowProgressDialog('Applying storage settings to mailboxes...');</value>
</data>
<data name="btnSaveApply.Text" xml:space="preserve">
<value>Save and Apply to All Mailboxes</value>
</data>
<data name="FormComments.Text" xml:space="preserve">
<value>&lt;p&gt;You can change storage limits and deleted items retention policy.&lt;/p&gt;&lt;p&gt;The settings will be applied for for new mailboxes only. By clicking "Save and Apply to All Mailboxes" button you can override these settings for all existing mailboxes.&lt;/p&gt;&lt;p&gt;Please note, that you cannot specify storage settings higher than defined in the space hosting plan.&lt;/p&gt;</value>
</data>
<data name="locIssueWarning.Text" xml:space="preserve">
<value>Issue warning at:</value>
</data>
<data name="locKeepDeletedItems.Text" xml:space="preserve">
<value>Keep deleted items for:</value>
</data>
<data name="locProhibitSend.Text" xml:space="preserve">
<value>Prohibit send at:</value>
</data>
<data name="locProhibitSendReceive.Text" xml:space="preserve">
<value>Prohibit send and receive at:</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Storage Settings</value>
</data>
<data name="locWhenSizeExceeds.Text" xml:space="preserve">
<value>When the mailbox size exceeds the indicated amount:</value>
</data>
<data name="secDeletionSettings.Text" xml:space="preserve">
<value>Deletion Settings</value>
</data>
<data name="secStorageLimits.Text" xml:space="preserve">
<value>Storage Settings</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Storage Settings</value>
</data>
</root>

View file

@ -112,10 +112,10 @@
<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="btnRecalculate.OnClientClick" xml:space="preserve"> <data name="btnRecalculate.OnClientClick" xml:space="preserve">
<value>return confirm('Recalculating organization disk space may require certain time to complete and this task will be performed asynchronously. New disk space value will be available in a few minutes. Proceed with disk space calculation?');</value> <value>return confirm('Recalculating organization disk space may require certain time to complete and this task will be performed asynchronously. New disk space value will be available in a few minutes. Proceed with disk space calculation?');</value>
@ -123,8 +123,11 @@
<data name="btnRecalculate.Text" xml:space="preserve"> <data name="btnRecalculate.Text" xml:space="preserve">
<value>Recalculate Disk Space</value> <value>Recalculate Disk Space</value>
</data> </data>
<data name="btnUsedSize.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Please wait...');</value>
</data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Organization disk space usage is calculated on timely basis (usually once a day). You can recalculate it right now by clicking "Recalculate Disk Space" button.&lt;/p&gt;&lt;p&gt;Click on the link with used disk space to see usage breakdown by all organization mailboxes and public folders.&lt;/p&gt;</value> <value>&lt;p&gt;Organization disk space actual usage is calculated on timely basis (usually once a day). You can recalculate it right now by clicking "Recalculate Disk Space" button.&lt;/p&gt;&lt;p&gt;Click on the link with used disk space to see actual usage breakdown by all organization mailboxes.&lt;/p&gt;</value>
</data> </data>
<data name="locAllocatedSize.Text" xml:space="preserve"> <data name="locAllocatedSize.Text" xml:space="preserve">
<value>Allocated Disk Space (MB):</value> <value>Allocated Disk Space (MB):</value>
@ -136,7 +139,7 @@
<value>Storage Usage</value> <value>Storage Usage</value>
</data> </data>
<data name="locUsedSize.Text" xml:space="preserve"> <data name="locUsedSize.Text" xml:space="preserve">
<value>Used Disk Space (MB):</value> <value>Allocated Disk Space (MB):</value>
</data> </data>
<data name="Text.PageName" xml:space="preserve"> <data name="Text.PageName" xml:space="preserve">
<value>Storage Usage</value> <value>Storage Usage</value>
@ -144,7 +147,4 @@
<data name="Unlimited.Text" xml:space="preserve"> <data name="Unlimited.Text" xml:space="preserve">
<value>Unlimited</value> <value>Unlimited</value>
</data> </data>
<data name="btnUsedSize.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Please wait...');</value>
</data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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="btnOK.Text" xml:space="preserve"> <data name="btnOK.Text" xml:space="preserve">
<value> OK </value> <value> OK </value>

View file

@ -112,10 +112,10 @@
<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="btnCreate.OnClientClick" xml:space="preserve"> <data name="btnCreate.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Creating Organization...');</value> <value>ShowProgressDialog('Creating Organization...');</value>
@ -124,7 +124,7 @@
<value>Create Organization</value> <value>Create Organization</value>
</data> </data>
<data name="FormComments.Text" xml:space="preserve"> <data name="FormComments.Text" xml:space="preserve">
<value>&lt;p&gt;&lt;b&gt;Organization name&lt;/b&gt; is used just as display name for references purposes. It will not be used somewhere on Exchange Server.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Organization ID&lt;/b&gt; is an unique organization identifier. It can contain only numbers and letters and cannot be longer than 9 symbols. Organization ID will be used as GAL name and as a root public folder.&lt;/p&gt;</value> <value>&lt;p&gt;&lt;b&gt;Organization name&lt;/b&gt; is used just as display name for references purposes. It will not be used somewhere on Exchange Server.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Organization ID&lt;/b&gt; is an unique organization identifier. Organization ID will be used as GAL name.&lt;/p&gt;</value>
</data> </data>
<data name="locOrganizationID.Text" xml:space="preserve"> <data name="locOrganizationID.Text" xml:space="preserve">
<value>Organization ID: *</value> <value>Organization ID: *</value>

View file

@ -112,10 +112,10 @@
<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="btnCreate.OnClientClick" xml:space="preserve"> <data name="btnCreate.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Creating user...');</value> <value>ShowProgressDialog('Creating user...');</value>
@ -131,7 +131,7 @@
&lt;p&gt;&lt;b&gt;E-Mail Address&lt;/b&gt; is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.&lt;/p&gt; &lt;p&gt;&lt;b&gt;E-Mail Address&lt;/b&gt; is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.&lt;/p&gt;
&lt;p&gt;New organization domains can be added on "Domain Names" page. Temporary domain name is provided by default to allow creating new users as soon as possible.&lt;/p&gt; &lt;p&gt;New organization domains can be added on "Domain Names" page.&lt;/p&gt;
&lt;p&gt;Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.&lt;/p&gt;</value> &lt;p&gt;Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.&lt;/p&gt;</value>
</data> </data>
@ -144,6 +144,9 @@
<data name="locPassword.Text" xml:space="preserve"> <data name="locPassword.Text" xml:space="preserve">
<value>Password: *</value> <value>Password: *</value>
</data> </data>
<data name="locSubscriberNumber.Text" xml:space="preserve">
<value>Subscriber Number: *</value>
</data>
<data name="locTitle.Text" xml:space="preserve"> <data name="locTitle.Text" xml:space="preserve">
<value>Create New User</value> <value>Create New User</value>
</data> </data>
@ -156,4 +159,10 @@
<data name="valRequireDisplayName.Text" xml:space="preserve"> <data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value> <value>*</value>
</data> </data>
<data name="valRequireSubscriberNumber.ErrorMessage" xml:space="preserve">
<value>Enter Subscriber Number</value>
</data>
<data name="valRequireSubscriberNumber.Text" xml:space="preserve">
<value>*</value>
</data>
</root> </root>

View file

@ -112,57 +112,16 @@
<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="HSFormComments.Text" xml:space="preserve"> <data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Welcome to the organization home page!&lt;/p&gt; <value>&lt;p&gt;Welcome to the organization home page!&lt;/p&gt;
&lt;p&gt;Using the left menu you can manage organization domain names and users.&lt;/p&gt; &lt;p&gt;Using the left menu you can manage organization domain names and users.&lt;/p&gt;
&lt;p&gt;Organization statistics displays current status of the organization.&lt;/p&gt;</value> &lt;p&gt;Organization statistics displays current status of the organization.&lt;/p&gt;</value>
</data> </data>
<data name="lnkAllocatedDiskspace.Text" xml:space="preserve">
<value>Allocated Diskspace (MB)</value>
</data>
<data name="lnkContacts.Text" xml:space="preserve">
<value>Contacts:</value>
</data>
<data name="lnkDomains.Text" xml:space="preserve">
<value>Domain Names:</value>
</data>
<data name="lnkFolders.Text" xml:space="preserve">
<value>Public Folders:</value>
</data>
<data name="lnkLists.Text" xml:space="preserve">
<value>Distribution Lists:</value>
</data>
<data name="lnkMailboxes.Text" xml:space="preserve">
<value>Mailboxes:</value>
</data>
<data name="lnkSiteCollections.Text" xml:space="preserve">
<value>Site Collections:</value>
</data>
<data name="lnkUsedDiskspace.Text" xml:space="preserve">
<value>Used Diskspace (MB)</value>
</data>
<data name="lnkUsers.Text" xml:space="preserve">
<value>Users:</value>
</data>
<data name="locHeadStatistics.Text" xml:space="preserve">
<value>Organization Statistics</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Home</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Home</value>
</data>
<data name="Unlimited.Text" xml:space="preserve">
<value>Unlimited</value>
</data>
<data name="lblCreated.Text" xml:space="preserve"> <data name="lblCreated.Text" xml:space="preserve">
<value>Created:</value> <value>Created:</value>
</data> </data>
@ -172,22 +131,82 @@
<data name="lblOrganizationName.Text" xml:space="preserve"> <data name="lblOrganizationName.Text" xml:space="preserve">
<value>Organization Name:</value> <value>Organization Name:</value>
</data> </data>
<data name="lnkCRMUsers.Text" xml:space="preserve">
<value>CRM Users:</value>
</data>
<data name="litTotalUserDiskSpace.Text" xml:space="preserve"> <data name="litTotalUserDiskSpace.Text" xml:space="preserve">
<value>Total Used Disk Space, MB:</value> <value>Total Used Disk Space, MB:</value>
</data> </data>
<data name="litUsedDiskSpace.Text" xml:space="preserve"> <data name="litUsedDiskSpace.Text" xml:space="preserve">
<value>Used Disk Space, MB:</value> <value>Used Disk Space, MB:</value>
</data> </data>
<data name="lnkAllocatedDiskspace.Text" xml:space="preserve">
<value>Allocated Diskspace (MB)</value>
</data>
<data name="lnkBESUsers.Text" xml:space="preserve">
<value>BlackBerry Users:</value>
</data>
<data name="lnkContacts.Text" xml:space="preserve">
<value>Contacts:</value>
</data>
<data name="lnkCRMUsers.Text" xml:space="preserve">
<value>CRM Users:</value>
</data>
<data name="lnkDomains.Text" xml:space="preserve">
<value>Domain Names:</value>
</data>
<data name="lnkExchangeStorage.Text" xml:space="preserve">
<value>Storage (Mb):</value>
</data>
<data name="lnkFolders.Text" xml:space="preserve">
<value>Public Folders:</value>
</data>
<data name="lnkLists.Text" xml:space="preserve">
<value>Distribution Lists:</value>
</data>
<data name="lnkLyncUsers.Text" xml:space="preserve">
<value>Users:</value>
</data>
<data name="lnkMailboxes.Text" xml:space="preserve">
<value>Mailboxes:</value>
</data>
<data name="lnkOCSUsers.Text" xml:space="preserve">
<value>OCS Users:</value>
</data>
<data name="lnkSiteCollections.Text" xml:space="preserve">
<value>Site Collections:</value>
</data>
<data name="lnkUsedDiskspace.Text" xml:space="preserve">
<value>Used Diskspace (MB)</value>
</data>
<data name="lnkUsers.Text" xml:space="preserve">
<value>Users:</value>
</data>
<data name="locBESStatistics.Text" xml:space="preserve">
<value>BlackBerry</value>
</data>
<data name="locCRM.Text" xml:space="preserve"> <data name="locCRM.Text" xml:space="preserve">
<value>CRM</value> <value>CRM</value>
</data> </data>
<data name="locExchangeStatistics.Text" xml:space="preserve"> <data name="locExchangeStatistics.Text" xml:space="preserve">
<value>Exchange</value> <value>Exchange</value>
</data> </data>
<data name="locHeadStatistics.Text" xml:space="preserve">
<value>Organization</value>
</data>
<data name="locLyncStatistics.Text" xml:space="preserve">
<value>Lync</value>
</data>
<data name="locOCSStatistics.Text" xml:space="preserve">
<value>OCS</value>
</data>
<data name="locSharePoint.Text" xml:space="preserve"> <data name="locSharePoint.Text" xml:space="preserve">
<value>SharePoint</value> <value>SharePoint</value>
</data> </data>
<data name="locTitle.Text" xml:space="preserve">
<value>Home</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Home</value>
</data>
<data name="Unlimited.Text" xml:space="preserve">
<value>Unlimited</value>
</data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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.OnClientClick" xml:space="preserve"> <data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating user settings...');</value> <value>ShowProgressDialog('Updating user settings...');</value>
@ -126,11 +126,15 @@
<data name="chkDisable.Text" xml:space="preserve"> <data name="chkDisable.Text" xml:space="preserve">
<value>Disable User</value> <value>Disable User</value>
</data> </data>
<data name="chkLocked.Text" xml:space="preserve">
<value>Account is locked out</value>
</data>
<data name="chkSetPassword.Text" xml:space="preserve">
<value>Set Password</value>
</data>
<data name="HSFormComments.Text" xml:space="preserve"> <data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;&lt;b&gt;Display Name&lt;/b&gt; is a “friendly” name used by other programs, such as Microsoft Exchange or SharePoint.&lt;/p&gt; <value>&lt;p&gt;&lt;b&gt;Display Name&lt;/b&gt; is a “friendly” name used by other programs, such as Microsoft Exchange or SharePoint.&lt;/p&gt;
&lt;p&gt;Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.&lt;/p&gt; &lt;p&gt;Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.&lt;/p&gt;
&lt;p&gt;You can specify manager account to build organizational structure of your company.&lt;/p&gt;</value> &lt;p&gt;You can specify manager account to build organizational structure of your company.&lt;/p&gt;</value>
</data> </data>
<data name="locAddress.Text" xml:space="preserve"> <data name="locAddress.Text" xml:space="preserve">
@ -154,6 +158,9 @@
<data name="locDisplayName.Text" xml:space="preserve"> <data name="locDisplayName.Text" xml:space="preserve">
<value>Display Name: *</value> <value>Display Name: *</value>
</data> </data>
<data name="locExternalEmailAddress.Text" xml:space="preserve">
<value>External e-mail:</value>
</data>
<data name="locFax.Text" xml:space="preserve"> <data name="locFax.Text" xml:space="preserve">
<value>Fax:</value> <value>Fax:</value>
</data> </data>
@ -193,6 +200,9 @@
<data name="locState.Text" xml:space="preserve"> <data name="locState.Text" xml:space="preserve">
<value>State/Province:</value> <value>State/Province:</value>
</data> </data>
<data name="locSubscriberNumber.Text" xml:space="preserve">
<value>Subscriber Number:</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>
@ -226,10 +236,4 @@
<data name="valRequireDisplayName.Text" xml:space="preserve"> <data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value> <value>*</value>
</data> </data>
<data name="locExternalEmailAddress.Text" xml:space="preserve">
<value>External e-mail:</value>
</data>
<data name="chkLocked.Text" xml:space="preserve">
<value>Account is locked out</value>
</data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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="btnSend.Text" xml:space="preserve"> <data name="btnSend.Text" xml:space="preserve">
<value>Send</value> <value>Send</value>

View file

@ -112,10 +112,10 @@
<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="btnCreateUser.Text" xml:space="preserve"> <data name="btnCreateUser.Text" xml:space="preserve">
<value>Create New User</value> <value>Create New User</value>
@ -132,12 +132,21 @@
<data name="cmdSearch.AlternateText" xml:space="preserve"> <data name="cmdSearch.AlternateText" xml:space="preserve">
<value>Search</value> <value>Search</value>
</data> </data>
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
<value>Domain Account</value>
</data>
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve"> <data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
<value>Display Name</value> <value>Display Name</value>
</data> </data>
<data name="ddlSearchColumnEmail.Text" xml:space="preserve"> <data name="ddlSearchColumnEmail.Text" xml:space="preserve">
<value>E-mail Address</value> <value>E-mail Address</value>
</data> </data>
<data name="ddlSearchColumnSubscriberNumber" xml:space="preserve">
<value>Subscriber Number</value>
</data>
<data name="gvSubscriberNumber.Header" xml:space="preserve">
<value>Subscriber</value>
</data>
<data name="gvUsers.Empty" xml:space="preserve"> <data name="gvUsers.Empty" xml:space="preserve">
<value>No users have been created. To create a new user click "Create New Users" button.</value> <value>No users have been created. To create a new user click "Create New Users" button.</value>
</data> </data>
@ -149,14 +158,11 @@
</data> </data>
<data name="HSFormComments.Text" xml:space="preserve"> <data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;Active Directory user accounts are used to:&lt;/p&gt; <value>&lt;p&gt;Active Directory user accounts are used to:&lt;/p&gt;
&lt;p&gt;• Authenticate the identity of a user.&lt;br&gt; &lt;p&gt;• Authenticate the identity of a user.&lt;br&gt;
• Authorize or deny access to domain resources.&lt;br&gt; • Authorize or deny access to domain resources.&lt;br&gt;
• Administer other security principals.&lt;br&gt; • Administer other security principals.&lt;br&gt;
• Audit actions performed using the user account.&lt;/p&gt; • Audit actions performed using the user account.&lt;/p&gt;
&lt;p&gt;Primary E-Mail Address is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.&lt;/p&gt; &lt;p&gt;Primary E-Mail Address is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.&lt;/p&gt;
&lt;p&gt;User account can also represent Exchange mailbox, which may be a person, room or inventory unit.&lt;/p&gt;</value> &lt;p&gt;User account can also represent Exchange mailbox, which may be a person, room or inventory unit.&lt;/p&gt;</value>
</data> </data>
<data name="locQuota.Text" xml:space="preserve"> <data name="locQuota.Text" xml:space="preserve">
@ -168,7 +174,4 @@
<data name="Text.PageName" xml:space="preserve"> <data name="Text.PageName" xml:space="preserve">
<value>Users</value> <value>Users</value>
</data> </data>
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
<value>Domain Account</value>
</data>
</root> </root>

View file

@ -112,10 +112,10 @@
<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="btnCreate.Text" xml:space="preserve"> <data name="btnCreate.Text" xml:space="preserve">
<value>Create New Organization</value> <value>Create New Organization</value>
@ -158,10 +158,8 @@
</data> </data>
<data name="HSFormComments.Text" xml:space="preserve"> <data name="HSFormComments.Text" xml:space="preserve">
<value>&lt;p&gt;&lt;b&gt;Organization&lt;/b&gt; is a group of Active Directory users, contacts and groups.&lt;br&gt;&lt;br&gt; <value>&lt;p&gt;&lt;b&gt;Organization&lt;/b&gt; is a group of Active Directory users, contacts and groups.&lt;br&gt;&lt;br&gt;
All accounts within one organization are located in the same Organizational Unit and are not visible to members of other organizations.&lt;br&gt;&lt;br&gt; All accounts within one organization are located in the same Organizational Unit and are not visible to members of other organizations.&lt;br&gt;&lt;br&gt;
Exchange-enabled organization has its own Global Address List (GAL) and Offline Address Book (OAB). Mailboxes, contacts, and distribution lists of Exchange-enabled organization share the same GAL and OAB&lt;/p&gt;</value>
Exchange-enabled organization has its own Global Address List (GAL) and Offline Address Book (OAB). Mailboxes, contacts, distribution lists and public folders of Exchange-enabled organization share the same GAL and OAB&lt;/p&gt;</value>
</data> </data>
<data name="locQuota.Text" xml:space="preserve"> <data name="locQuota.Text" xml:space="preserve">
<value>Total Organizations Created:</value> <value>Total Organizations Created:</value>

View file

@ -59,7 +59,7 @@
<asp:Localize ID="locMaxAttachmentSize" runat="server" <asp:Localize ID="locMaxAttachmentSize" runat="server"
meta:resourcekey="locMaxAttachmentSize" Text="Maximum attachment size:"></asp:Localize></td> meta:resourcekey="locMaxAttachmentSize" Text="Maximum attachment size:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizeMaxAttachmentSize" runat="server" ValidationGroup="EditMailbox" /> <wsp:SizeBox id="sizeMaxAttachmentSize" runat="server" ValidationGroup="EditMailbox" DisplayUnitsKB="true" DisplayUnitsMB="false" DisplayUnitsPct="false"/>
</td> </td>
</tr> </tr>
</table> </table>
@ -137,7 +137,7 @@
<asp:Localize ID="locNumberAttempts" runat="server" <asp:Localize ID="locNumberAttempts" runat="server"
meta:resourcekey="locNumberAttempts" Text="Number of failed attempts allowed:"></asp:Localize></td> meta:resourcekey="locNumberAttempts" Text="Number of failed attempts allowed:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizeNumberAttempts" runat="server" ValidationGroup="EditMailbox" DisplayUnits="false" /> <wsp:SizeBox id="sizeNumberAttempts" runat="server" ValidationGroup="EditMailbox" DisplayUnits="false" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="false"/>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -146,7 +146,7 @@
meta:resourcekey="locMinimumPasswordLength" Text="Minimum password length:"></asp:Localize></td> meta:resourcekey="locMinimumPasswordLength" Text="Minimum password length:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizeMinimumPasswordLength" runat="server" ValidationGroup="EditMailbox" <wsp:SizeBox id="sizeMinimumPasswordLength" runat="server" ValidationGroup="EditMailbox"
DisplayUnits="false" EmptyValue="0" /> DisplayUnits="false" EmptyValue="0" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="false"/>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -154,7 +154,7 @@
<asp:Localize ID="locTimeReenter" runat="server" <asp:Localize ID="locTimeReenter" runat="server"
meta:resourcekey="locTimeReenter" Text="Time without user input before password must be re-entered:"></asp:Localize></td> meta:resourcekey="locTimeReenter" Text="Time without user input before password must be re-entered:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizeTimeReenter" runat="server" ValidationGroup="EditMailbox" DisplayUnits="false" /> <wsp:SizeBox id="sizeTimeReenter" runat="server" ValidationGroup="EditMailbox" DisplayUnits="false" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="false"/>
<asp:Localize ID="locMinutes" runat="server" <asp:Localize ID="locMinutes" runat="server"
meta:resourcekey="locMinutes" Text="minutes"></asp:Localize> meta:resourcekey="locMinutes" Text="minutes"></asp:Localize>
</td> </td>
@ -164,7 +164,7 @@
<asp:Localize ID="locPasswordExpiration" runat="server" <asp:Localize ID="locPasswordExpiration" runat="server"
meta:resourcekey="locPasswordExpiration" Text="Password expiration:"></asp:Localize></td> meta:resourcekey="locPasswordExpiration" Text="Password expiration:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizePasswordExpiration" runat="server" ValidationGroup="EditMailbox" DisplayUnits="false" /> <wsp:SizeBox id="sizePasswordExpiration" runat="server" ValidationGroup="EditMailbox" DisplayUnits="false" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="false"/>
<asp:Localize ID="locDays" runat="server" <asp:Localize ID="locDays" runat="server"
meta:resourcekey="locDays" Text="days"></asp:Localize> meta:resourcekey="locDays" Text="days"></asp:Localize>
</td> </td>
@ -174,7 +174,7 @@
<asp:Localize ID="locPasswordHistory" runat="server" <asp:Localize ID="locPasswordHistory" runat="server"
meta:resourcekey="locPasswordHistory" Text="Enforce password history:"></asp:Localize></td> meta:resourcekey="locPasswordHistory" Text="Enforce password history:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizePasswordHistory" runat="server" ValidationGroup="EditMailbox" DisplayUnits="false" RequireValidatorEnabled="true" /> <wsp:SizeBox id="sizePasswordHistory" runat="server" ValidationGroup="EditMailbox" DisplayUnits="false" RequireValidatorEnabled="true" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="false"/>
</td> </td>
</tr> </tr>
</table> </table>

View file

@ -28,6 +28,7 @@
using System; using System;
using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.HostedSolution;
using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
@ -39,6 +40,9 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
BindPolicy(); BindPolicy();
} }
} }
protected void btnSave_Click(object sender, EventArgs e) protected void btnSave_Click(object sender, EventArgs e)
@ -55,7 +59,7 @@ namespace WebsitePanel.Portal.ExchangeServer
// bind data // bind data
chkAllowNonProvisionable.Checked = policy.AllowNonProvisionableDevices; chkAllowNonProvisionable.Checked = policy.AllowNonProvisionableDevices;
chkAllowAttachments.Checked = policy.AttachmentsEnabled; chkAllowAttachments.Checked = policy.AttachmentsEnabled;
sizeMaxAttachmentSize.ValueKB = policy.MaxAttachmentSizeKB; sizeMaxAttachmentSize.ValueKB = policy.MaxAttachmentSizeKB;

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.832
// //
// 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.ExchangeServer { namespace WebsitePanel.Portal.ExchangeServer {
/// <summary>
/// ExchangeActiveSyncSettings class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class ExchangeActiveSyncSettings { public partial class ExchangeActiveSyncSettings {
/// <summary> /// <summary>

View file

@ -26,12 +26,7 @@
<tr> <tr>
<td class="FormLabel150"><asp:Localize ID="locDomainName" runat="server" meta:resourcekey="locDomainName" Text="Domain Name:"></asp:Localize></td> <td class="FormLabel150"><asp:Localize ID="locDomainName" runat="server" meta:resourcekey="locDomainName" Text="Domain Name:"></asp:Localize></td>
<td> <td>
<asp:TextBox ID="txtDomainName" runat="server" CssClass="HugeTextBox200"></asp:TextBox> <asp:DropDownList id="ddlDomains" runat="server" CssClass="NormalTextBox" DataTextField="DomainName" DataValueField="DomainID" style="vertical-align:middle;"></asp:DropDownList>
<asp:RequiredFieldValidator ID="valRequireDomainName" runat="server" meta:resourcekey="valRequireDomainName" ControlToValidate="txtDomainName"
ErrorMessage="Enter Domain Name" ValidationGroup="CreateDomain" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator id="valRequireCorrectDomain" runat="server" ValidationExpression="^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.){1,10}[a-zA-Z]{2,6}$"
ErrorMessage='Please, enter correct domain name in the form "mydomain.com" or "sub.mydomain.com"' ControlToValidate="txtDomainName"
Display="Dynamic" meta:resourcekey="valRequireCorrectDomain" ValidationGroup="CreateDomain">*</asp:RegularExpressionValidator>
</td> </td>
</tr> </tr>
</table> </table>
@ -39,6 +34,7 @@
<div class="FormFooterClean"> <div class="FormFooterClean">
<asp:Button id="btnAdd" runat="server" Text="Add Domain" CssClass="Button1" meta:resourcekey="btnAdd" ValidationGroup="CreateDomain" OnClick="btnAdd_Click" OnClientClick="ShowProgressDialog('Creating Domain...');"></asp:Button> <asp:Button id="btnAdd" runat="server" Text="Add Domain" CssClass="Button1" meta:resourcekey="btnAdd" ValidationGroup="CreateDomain" OnClick="btnAdd_Click" OnClientClick="ShowProgressDialog('Creating Domain...');"></asp:Button>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="CreateDomain" /> <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="CreateDomain" />
<asp:Button id="btnCancel" runat="server" Text="Cancel" CssClass="Button1" meta:resourcekey="btnCancel" OnClick="btnCancel_Click"></asp:Button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -27,21 +27,55 @@
// 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 WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class ExchangeAddDomainName : WebsitePanelModuleBase public partial class ExchangeAddDomainName : WebsitePanelModuleBase
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PanelSecurity.PackageId);
} OrganizationDomainName[] list = ES.Services.Organizations.GetOrganizationDomains(PanelRequest.ItemID);
foreach (DomainInfo d in domains)
{
if (!d.IsDomainPointer & !d.IsInstantAlias)
{
bool bAdd = true;
foreach (OrganizationDomainName acceptedDomain in list)
{
if (d.DomainName.ToLower() == acceptedDomain.DomainName.ToLower())
{
bAdd = false;
break;
}
}
if (bAdd) ddlDomains.Items.Add(d.DomainName.ToLower());
}
}
if (ddlDomains.Items.Count == 0) btnAdd.Enabled = false;
}
protected void btnAdd_Click(object sender, EventArgs e) protected void btnAdd_Click(object sender, EventArgs e)
{ {
AddDomain(); AddDomain();
} }
protected void btnCancel_Click(object sender, EventArgs e)
{
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "domains", "SpaceID=" + PanelSecurity.PackageId));
}
private void AddDomain() private void AddDomain()
{ {
if (!Page.IsValid) if (!Page.IsValid)
@ -51,7 +85,7 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
int result = ES.Services.Organizations.AddOrganizationDomain(PanelRequest.ItemID, int result = ES.Services.Organizations.AddOrganizationDomain(PanelRequest.ItemID,
txtDomainName.Text.Trim()); ddlDomains.SelectedValue.Trim());
if (result < 0) if (result < 0)
{ {
@ -67,5 +101,5 @@ namespace WebsitePanel.Portal.ExchangeServer
messageBox.ShowErrorMessage("EXCHANGE_ADD_DOMAIN", ex); messageBox.ShowErrorMessage("EXCHANGE_ADD_DOMAIN", ex);
} }
} }
} }
} }

View file

@ -76,31 +76,13 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::System.Web.UI.WebControls.Localize locDomainName; protected global::System.Web.UI.WebControls.Localize locDomainName;
/// <summary> /// <summary>
/// txtDomainName control. /// ddlDomains 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.TextBox txtDomainName; protected global::System.Web.UI.WebControls.DropDownList ddlDomains;
/// <summary>
/// valRequireDomainName 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 valRequireDomainName;
/// <summary>
/// valRequireCorrectDomain 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.RegularExpressionValidator valRequireCorrectDomain;
/// <summary> /// <summary>
/// btnAdd control. /// btnAdd control.
@ -120,6 +102,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1;
/// <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>
/// FormComments control. /// FormComments control.
/// </summary> /// </summary>

View file

@ -1,11 +1,10 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ExchangeMailboxAdvancedSettings.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.ExchangeMailboxAdvancedSettings" %> <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ExchangeAddMailboxPlan.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.ExchangeAddMailboxPlan" %>
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> <%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
<%@ Register Src="UserControls/MailboxTabs.ascx" TagName="MailboxTabs" TagPrefix="wsp" %>
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %> <%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
<%@ Register Src="UserControls/SizeBox.ascx" TagName="SizeBox" TagPrefix="wsp" %> <%@ Register Src="UserControls/SizeBox.ascx" TagName="SizeBox" TagPrefix="wsp" %>
<%@ Register Src="UserControls/DaysBox.ascx" TagName="DaysBox" TagPrefix="wsp" %> <%@ Register Src="UserControls/DaysBox.ascx" TagName="DaysBox" TagPrefix="wsp" %>
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %> <%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
<%@ 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" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/> <wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
@ -16,19 +15,35 @@
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" /> <wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" />
</div> </div>
<div class="Left"> <div class="Left">
<wsp:Menu id="menu" runat="server" SelectedItem="mailboxes" /> <wsp:Menu id="menu" runat="server" SelectedItem="mailboxplans" />
</div> </div>
<div class="Content"> <div class="Content">
<div class="Center"> <div class="Center">
<div class="Title"> <div class="Title">
<asp:Image ID="Image1" SkinID="ExchangeMailbox48" runat="server" /> <asp:Image ID="Image1" SkinID="ExchangeDomainNameAdd48" runat="server" />
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit Mailbox"></asp:Localize> <asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Add Mailboxplan"></asp:Localize>
- </div>
<asp:Literal ID="litDisplayName" runat="server" Text="John Smith" />
</div>
<div class="FormBody"> <div class="FormBody">
<wsp:MailboxTabs id="tabs" runat="server" SelectedTab="mailbox_advanced" /> <wsp:SimpleMessageBox id="messageBox" runat="server" />
<wsp:SimpleMessageBox id="messageBox" runat="server" />
<wsp:CollapsiblePanel id="secMailboxPlan" runat="server"
TargetControlID="MailboxPlan" meta:resourcekey="secMailboxPlan" Text="Mailboxplan">
</wsp:CollapsiblePanel>
<asp:Panel ID="MailboxPlan" runat="server" Height="0" style="overflow:hidden;">
<table>
<tr>
<td class="FormLabel200" align="right">
</td>
<td>
<asp:TextBox ID="txtMailboxPlan" runat="server" CssClass="TextBox200" ></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireMailboxPlan" runat="server" meta:resourcekey="valRequireMailboxPlan" ControlToValidate="txtMailboxPlan"
ErrorMessage="Enter mailbox plan name" ValidationGroup="CreateMailboxPlan" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
</td>
</tr>
</table>
<br />
</asp:Panel>
<wsp:CollapsiblePanel id="secMailboxFeatures" runat="server" <wsp:CollapsiblePanel id="secMailboxFeatures" runat="server"
TargetControlID="MailboxFeatures" meta:resourcekey="secMailboxFeatures" Text="Mailbox Features"> TargetControlID="MailboxFeatures" meta:resourcekey="secMailboxFeatures" Text="Mailbox Features">
@ -63,66 +78,70 @@
</table> </table>
<br /> <br />
</asp:Panel> </asp:Panel>
<wsp:CollapsiblePanel id="secMailboxGeneral" runat="server"
<wsp:CollapsiblePanel id="secStatistics" runat="server" TargetControlID="MailboxGeneral" meta:resourcekey="secMailboxGeneral" Text="Mailbox General">
TargetControlID="Statistics" meta:resourcekey="secStatistics" Text="Storage Statistics">
</wsp:CollapsiblePanel> </wsp:CollapsiblePanel>
<asp:Panel ID="Statistics" runat="server" Height="0" style="overflow:hidden;"> <asp:Panel ID="MailboxGeneral" runat="server" Height="0" style="overflow:hidden;">
<table cellpadding="4"> <table>
<tr> <tr>
<td class="FormLabel150"><asp:Localize ID="locTotalItems" runat="server" meta:resourcekey="locTotalItems" Text="Total Items:"></asp:Localize></td>
<td> <td>
<asp:Label ID="lblTotalItems" runat="server" CssClass="NormalBold">177</asp:Label> <asp:CheckBox ID="chkHideFromAddressBook" runat="server" meta:resourcekey="chkHideFromAddressBook" Text="Hide from Addressbook"></asp:CheckBox>
</td> </td>
</tr> </tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locTotalSize" runat="server" meta:resourcekey="locTotalSize" Text="Total Size (MB):"></asp:Localize></td>
<td>
<asp:Label ID="lblTotalSize" runat="server" CssClass="NormalBold">16</asp:Label>
</td>
</tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locLastLogon" runat="server" meta:resourcekey="locLastLogon" Text="Last Logon:"></asp:Localize></td>
<td>
<asp:Label ID="lblLastLogon" runat="server" CssClass="NormalBold"></asp:Label>
</td>
</tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locLastLogoff" runat="server" meta:resourcekey="locLastLogoff" Text="Last Logoff:"></asp:Localize></td>
<td>
<asp:Label ID="lblLastLogoff" runat="server" CssClass="NormalBold"></asp:Label>
</td>
</tr>
</table> </table>
<br /> <br />
</asp:Panel> </asp:Panel>
<wsp:CollapsiblePanel id="secStorageQuotas" runat="server" <wsp:CollapsiblePanel id="secStorageQuotas" runat="server"
TargetControlID="StorageQuotas" meta:resourcekey="secStorageQuotas" Text="Storage Quotas"> TargetControlID="StorageQuotas" meta:resourcekey="secStorageQuotas" Text="Storage Quotas">
</wsp:CollapsiblePanel> </wsp:CollapsiblePanel>
<asp:Panel ID="StorageQuotas" runat="server" Height="0" style="overflow:hidden;"> <asp:Panel ID="StorageQuotas" runat="server" Height="0" style="overflow:hidden;">
<table> <table>
<tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locMailboxSize" runat="server" meta:resourcekey="locMailboxSize" Text="Mailbox size:"></asp:Localize></td>
<td>
<wsp:SizeBox id="mailboxSize" runat="server" ValidationGroup="CreateMailboxPlan" DisplayUnitsKB="false" DisplayUnitsMB="true" DisplayUnitsPct="false" RequireValidatorEnabled="true"/>
</td>
</tr>
<tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locMaxRecipients" runat="server" meta:resourcekey="locMaxRecipients" Text="Maximum Recipients:"></asp:Localize></td>
<td>
<wsp:SizeBox id="maxRecipients" runat="server" ValidationGroup="CreateMailboxPlan" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="false" RequireValidatorEnabled="true"/>
</td>
</tr>
<tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locMaxSendMessageSizeKB" runat="server" meta:resourcekey="locMaxSendMessageSizeKB" Text="Maximum Send Message Size (Kb):"></asp:Localize></td>
<td>
<wsp:SizeBox id="maxSendMessageSizeKB" runat="server" ValidationGroup="CreateMailboxPlan" DisplayUnitsKB="true" DisplayUnitsMB="false" DisplayUnitsPct="false" RequireValidatorEnabled="true"/>
</td>
</tr>
<tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locMaxReceiveMessageSizeKB" runat="server" meta:resourcekey="locMaxReceiveMessageSizeKB" Text="Maximum Receive Message Size (Kb):"></asp:Localize></td>
<td>
<wsp:SizeBox id="maxReceiveMessageSizeKB" runat="server" ValidationGroup="CreateMailboxPlan" DisplayUnitsKB="true" DisplayUnitsMB="false" DisplayUnitsPct="false" RequireValidatorEnabled="true"/>
</td>
</tr>
<tr> <tr>
<td class="FormLabel200" colspan="2"><asp:Localize ID="locWhenSizeExceeds" runat="server" meta:resourcekey="locWhenSizeExceeds" Text="When the mailbox size exceeds the indicated amount:"></asp:Localize></td> <td class="FormLabel200" colspan="2"><asp:Localize ID="locWhenSizeExceeds" runat="server" meta:resourcekey="locWhenSizeExceeds" Text="When the mailbox size exceeds the indicated amount:"></asp:Localize></td>
</tr> </tr>
<tr> <tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locIssueWarning" runat="server" meta:resourcekey="locIssueWarning" Text="Issue warning at:"></asp:Localize></td> <td class="FormLabel200" align="right"><asp:Localize ID="locIssueWarning" runat="server" meta:resourcekey="locIssueWarning" Text="Issue warning at:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizeIssueWarning" runat="server" ValidationGroup="EditMailbox" /> <wsp:SizeBox id="sizeIssueWarning" runat="server" ValidationGroup="CreateMailboxPlan" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="true" RequireValidatorEnabled="true"/>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locProhibitSend" runat="server" meta:resourcekey="locProhibitSend" Text="Prohibit send at:"></asp:Localize></td> <td class="FormLabel200" align="right"><asp:Localize ID="locProhibitSend" runat="server" meta:resourcekey="locProhibitSend" Text="Prohibit send at:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizeProhibitSend" runat="server" ValidationGroup="EditMailbox" /> <wsp:SizeBox id="sizeProhibitSend" runat="server" ValidationGroup="CreateMailboxPlan" DisplayUnitsKB="false" DisplayUnitsMB="false" DisplayUnitsPct="true" RequireValidatorEnabled="true"/>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locProhibitSendReceive" runat="server" meta:resourcekey="locProhibitSendReceive" Text="Prohibit send and receive at:"></asp:Localize></td> <td class="FormLabel200" align="right"><asp:Localize ID="locProhibitSendReceive" runat="server" meta:resourcekey="locProhibitSendReceive" Text="Prohibit send and receive at:"></asp:Localize></td>
<td> <td>
<wsp:SizeBox id="sizeProhibitSendReceive" runat="server" ValidationGroup="EditMailbox" /> <wsp:SizeBox id="sizeProhibitSendReceive" runat="server" ValidationGroup="CreateMailboxPlan" DisplayUnitsKB=false DisplayUnitsMB="false" DisplayUnitsPct="true" RequireValidatorEnabled="true"/>
</td> </td>
</tr> </tr>
</table> </table>
@ -138,44 +157,17 @@
<tr> <tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locKeepDeletedItems" runat="server" meta:resourcekey="locKeepDeletedItems" Text="Keep deleted items for:"></asp:Localize></td> <td class="FormLabel200" align="right"><asp:Localize ID="locKeepDeletedItems" runat="server" meta:resourcekey="locKeepDeletedItems" Text="Keep deleted items for:"></asp:Localize></td>
<td> <td>
<wsp:DaysBox id="daysKeepDeletedItems" runat="server" ValidationGroup="EditMailbox" /> <wsp:DaysBox id="daysKeepDeletedItems" runat="server" ValidationGroup="CreateMailboxPlan" />
</td> </td>
</tr> </tr>
</table> </table>
<br /> <br />
</asp:Panel> </asp:Panel>
<br />
<wsp:CollapsiblePanel id="secDomainUser" runat="server"
TargetControlID="DomainUser" meta:resourcekey="secDomainUser" Text="Domain User Name">
</wsp:CollapsiblePanel>
<asp:Panel ID="DomainUser" runat="server" Height="0" style="overflow:hidden;">
<table>
<tr>
<td class="FormLabel200" align="right">
</td>
<td>
<asp:TextBox ID="txtAccountName" runat="server" CssClass="TextBox200" ReadOnly="true" Text="Username"></asp:TextBox>
</td>
</tr>
</table>
<br />
</asp:Panel>
<table style="width:100%;margin-top:10px;">
<tr>
<td align="center">
<asp:CheckBox ID="chkPmmAllowed" Visible="false" runat="server" meta:resourcekey="chkPmmAllowed" AutoPostBack="true"
Text="Allow these settings to be managed from Personal Mailbox Manager" OnCheckedChanged="chkPmmAllowed_CheckedChanged" />
</td>
</tr>
</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> <asp:Button id="btnAdd" runat="server" Text="Add Mailboxplan" CssClass="Button1" meta:resourcekey="btnAdd" ValidationGroup="CreateMailboxPlan" OnClick="btnAdd_Click" OnClientClick="ShowProgressDialog('Creating Mailboxplan...');"></asp:Button>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="CreateMailboxPlan" />
ShowSummary="False" ValidationGroup="EditMailbox" />
</div> </div>
</div> </div>
</div> </div>

View file

@ -0,0 +1,192 @@
// Copyright (c) 2011, 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;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.HostedSolution;
using WebsitePanel.Providers.ResultObjects;
namespace WebsitePanel.Portal.ExchangeServer
{
public partial class ExchangeAddMailboxPlan : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (PanelRequest.GetInt("MailboxPlanId") != 0)
{
Providers.HostedSolution.ExchangeMailboxPlan plan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(PanelRequest.ItemID, PanelRequest.GetInt("MailboxPlanId"));
txtMailboxPlan.Text = plan.MailboxPlan;
mailboxSize.ValueKB = plan.MailboxSizeMB;
maxRecipients.ValueKB = plan.MaxRecipients;
maxSendMessageSizeKB.ValueKB = plan.MaxSendMessageSizeKB;
maxReceiveMessageSizeKB.ValueKB = plan.MaxReceiveMessageSizeKB;
chkPOP3.Checked = plan.EnablePOP;
chkIMAP.Checked = plan.EnableIMAP;
chkOWA.Checked = plan.EnableOWA;
chkMAPI.Checked = plan.EnableMAPI;
chkActiveSync.Checked = plan.EnableActiveSync;
sizeIssueWarning.ValueKB = plan.IssueWarningPct;
sizeProhibitSend.ValueKB = plan.ProhibitSendPct;
sizeProhibitSendReceive.ValueKB = plan.ProhibitSendReceivePct;
daysKeepDeletedItems.ValueDays = plan.KeepDeletedItemsDays;
chkHideFromAddressBook.Checked = plan.HideFromAddressBook;
/*
txtMailboxPlan.Enabled = false;
mailboxSize.Enabled = false;
maxRecipients.Enabled = false;
maxSendMessageSizeKB.Enabled = false;
maxReceiveMessageSizeKB.Enabled = false;
chkPOP3.Enabled = false;
chkIMAP.Enabled = false;
chkOWA.Enabled = false;
chkMAPI.Enabled = false;
chkActiveSync.Enabled = false;
sizeIssueWarning.Enabled = false;
sizeProhibitSend.Enabled = false;
sizeProhibitSendReceive.Enabled = false;
daysKeepDeletedItems.Enabled = false;
chkHideFromAddressBook.Enabled = false;
btnAdd.Enabled = false;
*/
locTitle.Text = plan.MailboxPlan;
this.DisableControls = true;
}
else
{
PackageContext cntx = ES.Services.Packages.GetPackageContext(PanelSecurity.PackageId);
if (cntx != null)
{
foreach (QuotaValueInfo quota in cntx.QuotasArray)
{
switch (quota.QuotaId)
{
case 365:
maxRecipients.ValueKB = quota.QuotaAllocatedValue;
break;
case 366:
maxSendMessageSizeKB.ValueKB = quota.QuotaAllocatedValue;
break;
case 367:
maxReceiveMessageSizeKB.ValueKB = quota.QuotaAllocatedValue;
break;
case 83:
chkPOP3.Checked = Convert.ToBoolean(quota.QuotaAllocatedValue);
chkPOP3.Enabled = Convert.ToBoolean(quota.QuotaAllocatedValue);
break;
case 84:
chkIMAP.Checked = Convert.ToBoolean(quota.QuotaAllocatedValue);
chkIMAP.Enabled = Convert.ToBoolean(quota.QuotaAllocatedValue);
break;
case 85:
chkOWA.Checked = Convert.ToBoolean(quota.QuotaAllocatedValue);
chkOWA.Enabled = Convert.ToBoolean(quota.QuotaAllocatedValue);
break;
case 86:
chkMAPI.Checked = Convert.ToBoolean(quota.QuotaAllocatedValue);
chkMAPI.Enabled = Convert.ToBoolean(quota.QuotaAllocatedValue);
break;
case 87:
chkActiveSync.Checked = Convert.ToBoolean(quota.QuotaAllocatedValue);
chkActiveSync.Enabled = Convert.ToBoolean(quota.QuotaAllocatedValue);
break;
case 364:
daysKeepDeletedItems.ValueDays = quota.QuotaAllocatedValue;
break;
}
sizeIssueWarning.ValueKB = 100;
sizeProhibitSend.ValueKB = 100;
sizeProhibitSendReceive.ValueKB = 100;
}
}
else
this.DisableControls = true;
}
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
AddMailboxPlan();
}
private void AddMailboxPlan()
{
try
{
Providers.HostedSolution.ExchangeMailboxPlan plan = new Providers.HostedSolution.ExchangeMailboxPlan();
plan.MailboxPlan = txtMailboxPlan.Text;
plan.MailboxSizeMB = mailboxSize.ValueKB;
if ((plan.MailboxSizeMB == 0)) plan.MailboxSizeMB = 1;
plan.IsDefault = false;
plan.MaxRecipients = maxRecipients.ValueKB;
plan.MaxSendMessageSizeKB = maxSendMessageSizeKB.ValueKB;
plan.MaxReceiveMessageSizeKB = maxReceiveMessageSizeKB.ValueKB;
plan.EnablePOP = chkPOP3.Checked;
plan.EnableIMAP = chkIMAP.Checked;
plan.EnableOWA = chkOWA.Checked;
plan.EnableMAPI = chkMAPI.Checked;
plan.EnableActiveSync = chkActiveSync.Checked;
plan.IssueWarningPct = sizeIssueWarning.ValueKB;
if ((plan.IssueWarningPct == 0)) plan.IssueWarningPct = 100;
plan.ProhibitSendPct = sizeProhibitSend.ValueKB;
if ((plan.ProhibitSendPct == 0)) plan.ProhibitSendPct = 100;
plan.ProhibitSendReceivePct = sizeProhibitSendReceive.ValueKB;
if ((plan.ProhibitSendReceivePct == 0)) plan.ProhibitSendReceivePct = 100;
plan.KeepDeletedItemsDays = daysKeepDeletedItems.ValueDays;
plan.HideFromAddressBook = chkHideFromAddressBook.Checked;
int result = ES.Services.ExchangeServer.AddExchangeMailboxPlan(PanelRequest.ItemID,
plan);
if (result < 0)
{
messageBox.ShowResultMessage(result);
return;
}
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "mailboxplans",
"SpaceID=" + PanelSecurity.PackageId));
}
catch (Exception ex)
{
messageBox.ShowErrorMessage("EXCHANGE_ADD_MAILBOXPLAN", ex);
}
}
}
}

View file

@ -1,17 +1,16 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.1433
// //
// 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.ExchangeServer { namespace WebsitePanel.Portal.ExchangeServer {
public partial class ExchangeMailboxAdvancedSettings { public partial class ExchangeAddMailboxPlan {
/// <summary> /// <summary>
/// asyncTasks control. /// asyncTasks control.
@ -58,24 +57,6 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Localize locTitle; protected global::System.Web.UI.WebControls.Localize locTitle;
/// <summary>
/// litDisplayName 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.Literal litDisplayName;
/// <summary>
/// tabs control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.MailboxTabs tabs;
/// <summary> /// <summary>
/// messageBox control. /// messageBox control.
/// </summary> /// </summary>
@ -85,6 +66,42 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
/// <summary>
/// secMailboxPlan control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secMailboxPlan;
/// <summary>
/// MailboxPlan 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.Panel MailboxPlan;
/// <summary>
/// txtMailboxPlan 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 txtMailboxPlan;
/// <summary>
/// valRequireMailboxPlan 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 valRequireMailboxPlan;
/// <summary> /// <summary>
/// secMailboxFeatures control. /// secMailboxFeatures control.
/// </summary> /// </summary>
@ -149,94 +166,31 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::System.Web.UI.WebControls.CheckBox chkActiveSync; protected global::System.Web.UI.WebControls.CheckBox chkActiveSync;
/// <summary> /// <summary>
/// secStatistics control. /// secMailboxGeneral 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::WebsitePanel.Portal.CollapsiblePanel secStatistics; protected global::WebsitePanel.Portal.CollapsiblePanel secMailboxGeneral;
/// <summary> /// <summary>
/// Statistics control. /// MailboxGeneral 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.Panel Statistics; protected global::System.Web.UI.WebControls.Panel MailboxGeneral;
/// <summary> /// <summary>
/// locTotalItems control. /// chkHideFromAddressBook 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.Localize locTotalItems; protected global::System.Web.UI.WebControls.CheckBox chkHideFromAddressBook;
/// <summary>
/// lblTotalItems 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 lblTotalItems;
/// <summary>
/// locTotalSize 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 locTotalSize;
/// <summary>
/// lblTotalSize 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 lblTotalSize;
/// <summary>
/// locLastLogon 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 locLastLogon;
/// <summary>
/// lblLastLogon 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 lblLastLogon;
/// <summary>
/// locLastLogoff 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 locLastLogoff;
/// <summary>
/// lblLastLogoff 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 lblLastLogoff;
/// <summary> /// <summary>
/// secStorageQuotas control. /// secStorageQuotas control.
@ -256,6 +210,78 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Panel StorageQuotas; protected global::System.Web.UI.WebControls.Panel StorageQuotas;
/// <summary>
/// locMailboxSize 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 locMailboxSize;
/// <summary>
/// mailboxSize control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox mailboxSize;
/// <summary>
/// locMaxRecipients 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 locMaxRecipients;
/// <summary>
/// maxRecipients control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox maxRecipients;
/// <summary>
/// locMaxSendMessageSizeKB 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 locMaxSendMessageSizeKB;
/// <summary>
/// maxSendMessageSizeKB control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox maxSendMessageSizeKB;
/// <summary>
/// locMaxReceiveMessageSizeKB 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 locMaxReceiveMessageSizeKB;
/// <summary>
/// maxReceiveMessageSizeKB control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.SizeBox maxReceiveMessageSizeKB;
/// <summary> /// <summary>
/// locWhenSizeExceeds control. /// locWhenSizeExceeds control.
/// </summary> /// </summary>
@ -356,49 +382,13 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.DaysBox daysKeepDeletedItems; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.DaysBox daysKeepDeletedItems;
/// <summary> /// <summary>
/// secDomainUser control. /// btnAdd 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::WebsitePanel.Portal.CollapsiblePanel secDomainUser; protected global::System.Web.UI.WebControls.Button btnAdd;
/// <summary>
/// DomainUser 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.Panel DomainUser;
/// <summary>
/// txtAccountName 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 txtAccountName;
/// <summary>
/// chkPmmAllowed 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 chkPmmAllowed;
/// <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> /// <summary>
/// ValidationSummary1 control. /// ValidationSummary1 control.

View file

@ -30,19 +30,22 @@ using System;
using System.Web.UI.WebControls; using System.Web.UI.WebControls;
using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.HostedSolution;
using Microsoft.Security.Application; using Microsoft.Security.Application;
using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class ExchangeContactGeneralSettings : WebsitePanelModuleBase public partial class ExchangeContactGeneralSettings : WebsitePanelModuleBase
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
if (!IsPostBack) if (!IsPostBack)
{ {
BindMapiRichTextFormat(); BindMapiRichTextFormat();
BindSettings(); BindSettings();
} }
}
}
private void BindMapiRichTextFormat() private void BindMapiRichTextFormat()
{ {
@ -60,8 +63,8 @@ namespace WebsitePanel.Portal.ExchangeServer
// get settings // get settings
ExchangeContact contact = ES.Services.ExchangeServer.GetContactGeneralSettings(PanelRequest.ItemID, ExchangeContact contact = ES.Services.ExchangeServer.GetContactGeneralSettings(PanelRequest.ItemID,
PanelRequest.AccountID); PanelRequest.AccountID);
litDisplayName.Text = AntiXss.HtmlEncode(contact.DisplayName); litDisplayName.Text = AntiXss.HtmlEncode(contact.DisplayName);
// bind form // bind form
txtDisplayName.Text = contact.DisplayName; txtDisplayName.Text = contact.DisplayName;
@ -95,7 +98,7 @@ namespace WebsitePanel.Portal.ExchangeServer
} }
catch (Exception ex) catch (Exception ex)
{ {
messageBox.ShowErrorMessage("EXCHANGE_GET_CONTACT_SETTINGS", ex); messageBox.ShowErrorMessage("EXCHANGE_GET_CONTACT_SETTINGS", ex);
} }
} }
@ -143,13 +146,13 @@ namespace WebsitePanel.Portal.ExchangeServer
return; return;
} }
litDisplayName.Text = AntiXss.HtmlEncode(txtDisplayName.Text); litDisplayName.Text = AntiXss.HtmlEncode(txtDisplayName.Text);
messageBox.ShowSuccessMessage("EXCHANGE_UPDATE_CONTACT_SETTINGS"); messageBox.ShowSuccessMessage("EXCHANGE_UPDATE_CONTACT_SETTINGS");
} }
catch (Exception ex) catch (Exception ex)
{ {
messageBox.ShowErrorMessage("EXCHANGE_UPDATE_CONTACT_SETTINGS", ex); messageBox.ShowErrorMessage("EXCHANGE_UPDATE_CONTACT_SETTINGS", ex);
} }
} }
@ -157,5 +160,5 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
SaveSettings(); SaveSettings();
} }
} }
} }

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.1433
// //
// 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.ExchangeServer { namespace WebsitePanel.Portal.ExchangeServer {
/// <summary>
/// ExchangeContactGeneralSettings class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class ExchangeContactGeneralSettings { public partial class ExchangeContactGeneralSettings {
/// <summary> /// <summary>

View file

@ -38,17 +38,20 @@ using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls; using System.Web.UI.HtmlControls;
using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.HostedSolution;
using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class ExchangeContactMailFlowSettings : WebsitePanelModuleBase public partial class ExchangeContactMailFlowSettings : WebsitePanelModuleBase
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
if (!IsPostBack) if (!IsPostBack)
{ {
BindSettings(); BindSettings();
} }
} }
private void BindSettings() private void BindSettings()
@ -59,12 +62,12 @@ namespace WebsitePanel.Portal.ExchangeServer
ExchangeContact contact = ES.Services.ExchangeServer.GetContactMailFlowSettings( ExchangeContact contact = ES.Services.ExchangeServer.GetContactMailFlowSettings(
PanelRequest.ItemID, PanelRequest.AccountID); PanelRequest.ItemID, PanelRequest.AccountID);
litDisplayName.Text = contact.DisplayName; litDisplayName.Text = contact.DisplayName;
// bind form // bind form
acceptAccounts.SetAccounts(contact.AcceptAccounts); acceptAccounts.SetAccounts(contact.AcceptAccounts);
chkSendersAuthenticated.Checked = contact.RequireSenderAuthentication; chkSendersAuthenticated.Checked = contact.RequireSenderAuthentication;
rejectAccounts.SetAccounts(contact.RejectAccounts); rejectAccounts.SetAccounts(contact.RejectAccounts);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -92,11 +95,11 @@ namespace WebsitePanel.Portal.ExchangeServer
return; return;
} }
messageBox.ShowSuccessMessage("EXCHANGE_UPDATE_CONTACT_MAILFLOW"); messageBox.ShowSuccessMessage("EXCHANGE_UPDATE_CONTACT_MAILFLOW");
} }
catch (Exception ex) catch (Exception ex)
{ {
messageBox.ShowErrorMessage("EXCHANGE_UPDATE_CONTACT_MAILFLOW", ex); messageBox.ShowErrorMessage("EXCHANGE_UPDATE_CONTACT_MAILFLOW", ex);
} }
} }
@ -104,5 +107,5 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
SaveSettings(); SaveSettings();
} }
} }
} }

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.312
// //
// 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.ExchangeServer { namespace WebsitePanel.Portal.ExchangeServer {
/// <summary>
/// ExchangeContactMailFlowSettings class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class ExchangeContactMailFlowSettings { public partial class ExchangeContactMailFlowSettings {
/// <summary> /// <summary>

View file

@ -32,13 +32,6 @@
<div class="FormButtonsBarCleanRight"> <div class="FormButtonsBarCleanRight">
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch"> <asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
<asp:Localize ID="locSearch" runat="server" meta:resourcekey="locSearch" Visible="false"></asp:Localize> <asp:Localize ID="locSearch" runat="server" meta:resourcekey="locSearch" Visible="false"></asp:Localize>
<asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="True"
onselectedindexchanged="ddlPageSize_SelectedIndexChanged">
<asp:ListItem>10</asp:ListItem>
<asp:ListItem Selected="True">20</asp:ListItem>
<asp:ListItem>50</asp:ListItem>
<asp:ListItem>100</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="ddlSearchColumn" runat="server" CssClass="NormalTextBox"> <asp:DropDownList ID="ddlSearchColumn" runat="server" CssClass="NormalTextBox">
<asp:ListItem Value="DisplayName" meta:resourcekey="ddlSearchColumnDisplayName">DisplayName</asp:ListItem> <asp:ListItem Value="DisplayName" meta:resourcekey="ddlSearchColumnDisplayName">DisplayName</asp:ListItem>
<asp:ListItem Value="PrimaryEmailAddress" meta:resourcekey="ddlSearchColumnEmail">Email</asp:ListItem> <asp:ListItem Value="PrimaryEmailAddress" meta:resourcekey="ddlSearchColumnEmail">Email</asp:ListItem>
@ -51,7 +44,7 @@
<asp:GridView ID="gvContacts" runat="server" AutoGenerateColumns="False" EnableViewState="true" <asp:GridView ID="gvContacts" runat="server" AutoGenerateColumns="False" EnableViewState="true"
Width="100%" EmptyDataText="gvContacts" CssSelectorClass="NormalGridView" Width="100%" EmptyDataText="gvContacts" CssSelectorClass="NormalGridView"
OnRowCommand="gvContacts_RowCommand" AllowPaging="True" AllowSorting="True" OnRowCommand="gvContacts_RowCommand" AllowPaging="True" AllowSorting="True"
DataSourceID="odsAccountsPaged" PageSize="20"> DataSourceID="odsAccountsPaged">
<Columns> <Columns>
<asp:TemplateField HeaderText="gvContactsDisplayName" SortExpression="DisplayName"> <asp:TemplateField HeaderText="gvContactsDisplayName" SortExpression="DisplayName">
<ItemStyle Width="50%"></ItemStyle> <ItemStyle Width="50%"></ItemStyle>

View file

@ -38,49 +38,52 @@ using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls; using System.Web.UI.HtmlControls;
using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.HostedSolution;
using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class ExchangeContacts : WebsitePanelModuleBase public partial class ExchangeContacts : WebsitePanelModuleBase
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
if (!IsPostBack) if (!IsPostBack)
{ {
BindStats(); BindStats();
} }
}
private void BindStats()
{ }
// quota values
OrganizationStatistics stats =
ES.Services.ExchangeServer.GetOrganizationStatistics(PanelRequest.ItemID);
contactsQuota.QuotaUsedValue = stats.CreatedContacts;
contactsQuota.QuotaValue = stats.AllocatedContacts;
}
protected void btnCreateContact_Click(object sender, EventArgs e) private void BindStats()
{ {
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "create_contact", // quota values
"SpaceID=" + PanelSecurity.PackageId.ToString())); OrganizationStatistics stats =
} ES.Services.ExchangeServer.GetOrganizationStatistics(PanelRequest.ItemID);
contactsQuota.QuotaUsedValue = stats.CreatedContacts;
contactsQuota.QuotaValue = stats.AllocatedContacts;
}
public string GetContactEditUrl(string accountId) protected void btnCreateContact_Click(object sender, EventArgs e)
{ {
return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "contact_settings", Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "create_contact",
"AccountID=" + accountId, "SpaceID=" + PanelSecurity.PackageId.ToString()));
"ItemID=" + PanelRequest.ItemID.ToString()); }
}
protected void odsAccountsPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e) public string GetContactEditUrl(string accountId)
{ {
if (e.Exception != null) return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "contact_settings",
{ "AccountID=" + accountId,
messageBox.ShowErrorMessage("EXCHANGE_GET_CONTACTS", e.Exception); "ItemID=" + PanelRequest.ItemID.ToString());
e.ExceptionHandled = true; }
}
} protected void odsAccountsPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.Exception != null)
{
messageBox.ShowErrorMessage("EXCHANGE_GET_CONTACTS", e.Exception);
e.ExceptionHandled = true;
}
}
protected void gvContacts_RowCommand(object sender, GridViewCommandEventArgs e) protected void gvContacts_RowCommand(object sender, GridViewCommandEventArgs e)
{ {
@ -101,25 +104,13 @@ namespace WebsitePanel.Portal.ExchangeServer
// rebind grid // rebind grid
gvContacts.DataBind(); gvContacts.DataBind();
BindStats(); BindStats();
} }
catch (Exception ex) catch (Exception ex)
{ {
messageBox.ShowErrorMessage("EXCHANGE_DELETE_CONTACT", ex); messageBox.ShowErrorMessage("EXCHANGE_DELETE_CONTACT", ex);
} }
} }
} }
}
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
gvContacts.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue);
// rebind grid
gvContacts.DataBind();
// bind stats
BindStats();
}
}
} }

View file

@ -93,15 +93,6 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.Localize locSearch; protected global::System.Web.UI.WebControls.Localize locSearch;
/// <summary>
/// ddlPageSize 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 ddlPageSize;
/// <summary> /// <summary>
/// ddlSearchColumn control. /// ddlSearchColumn control.
/// </summary> /// </summary>

View file

@ -40,12 +40,12 @@ using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class ExchangeCreateContact : WebsitePanelModuleBase public partial class ExchangeCreateContact : WebsitePanelModuleBase
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
} }
protected void btnCreate_Click(object sender, EventArgs e) protected void btnCreate_Click(object sender, EventArgs e)
{ {
@ -68,7 +68,7 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
messageBox.ShowResultMessage(BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS); messageBox.ShowResultMessage(BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS);
return; return;
} }
if (accountId < 0) if (accountId < 0)
@ -86,5 +86,5 @@ namespace WebsitePanel.Portal.ExchangeServer
messageBox.ShowErrorMessage("EXCHANGE_CREATE_CONTACT", ex); messageBox.ShowErrorMessage("EXCHANGE_CREATE_CONTACT", ex);
} }
} }
} }
} }

View file

@ -1,31 +1,159 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <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.ExchangeServer { namespace WebsitePanel.Portal.ExchangeServer {
public partial class ExchangeCreateContact { public partial class ExchangeCreateContact {
protected WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
protected WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb; /// <summary>
protected WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu; /// asyncTasks control.
protected System.Web.UI.WebControls.Image Image1; /// </summary>
protected System.Web.UI.WebControls.Localize locTitle; /// <remarks>
protected WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; /// Auto-generated field.
protected System.Web.UI.WebControls.Localize locDisplayName; /// To modify move field declaration from designer file to code-behind file.
protected System.Web.UI.WebControls.TextBox txtDisplayName; /// </remarks>
protected System.Web.UI.WebControls.RequiredFieldValidator valRequireDisplayName; protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
protected System.Web.UI.WebControls.Localize locEmail;
protected System.Web.UI.WebControls.TextBox txtEmail; /// <summary>
protected System.Web.UI.WebControls.RequiredFieldValidator valRequireAccount; /// breadcrumb control.
protected System.Web.UI.WebControls.RegularExpressionValidator valCorrectEmail; /// </summary>
protected System.Web.UI.WebControls.Button btnCreate; /// <remarks>
protected System.Web.UI.WebControls.ValidationSummary ValidationSummary1; /// Auto-generated field.
protected System.Web.UI.WebControls.Localize FormComments; /// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
/// <summary>
/// menu control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
/// <summary>
/// Image1 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.Image Image1;
/// <summary>
/// locTitle 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 locTitle;
/// <summary>
/// messageBox control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
/// <summary>
/// locDisplayName 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 locDisplayName;
/// <summary>
/// txtDisplayName 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 txtDisplayName;
/// <summary>
/// valRequireDisplayName 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 valRequireDisplayName;
/// <summary>
/// locEmail 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 locEmail;
/// <summary>
/// txtEmail 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 txtEmail;
/// <summary>
/// valRequireAccount 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 valRequireAccount;
/// <summary>
/// valCorrectEmail 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.RegularExpressionValidator valCorrectEmail;
/// <summary>
/// btnCreate 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 btnCreate;
/// <summary>
/// ValidationSummary1 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.ValidationSummary ValidationSummary1;
/// <summary>
/// FormComments 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 FormComments;
} }
} }

View file

@ -36,15 +36,16 @@ using System.Web.UI;
using System.Web.UI.WebControls; 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.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class ExchangeCreateDistributionList : WebsitePanelModuleBase public partial class ExchangeCreateDistributionList : WebsitePanelModuleBase
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
} }
protected void btnCreate_Click(object sender, EventArgs e) protected void btnCreate_Click(object sender, EventArgs e)
{ {
@ -56,7 +57,7 @@ namespace WebsitePanel.Portal.ExchangeServer
if (!Page.IsValid) if (!Page.IsValid)
return; return;
try try
{ {
@ -66,7 +67,7 @@ namespace WebsitePanel.Portal.ExchangeServer
email.AccountName, email.AccountName,
email.DomainName, email.DomainName,
manager.GetAccountId()); manager.GetAccountId());
if (accountId < 0) if (accountId < 0)
{ {
@ -90,6 +91,6 @@ namespace WebsitePanel.Portal.ExchangeServer
} }
} }
} }

View file

@ -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.1873
// //
// 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>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View file

@ -7,6 +7,7 @@
<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %> <%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %>
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %> <%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
<%@ 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" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/> <wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
@ -50,7 +51,7 @@
</td> </td>
</tr> </tr>
</table> </table>
<table id="NewUserTable" runat="server"> <table id="NewUserTable" runat="server">
<tr> <tr>
@ -61,6 +62,14 @@
ErrorMessage="Enter Display Name" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator> ErrorMessage="Enter Display Name" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
</td> </td>
</tr> </tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locSubscriberNumber" runat="server" meta:resourcekey="locSubscriberNumber" Text="Subscriber Number: *"></asp:Localize></td>
<td>
<asp:TextBox ID="txtSubscriberNumber" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireSubscriberNumber" runat="server" meta:resourcekey="valRequireSubscriberNumber" ControlToValidate="txtSubscriberNumber"
ErrorMessage="Enter Subscriber Number" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
</td>
</tr>
<tr> <tr>
<td class="FormLabel150"><asp:Localize ID="locAccount" runat="server" meta:resourcekey="locAccount" Text="E-mail Address: *"></asp:Localize></td> <td class="FormLabel150"><asp:Localize ID="locAccount" runat="server" meta:resourcekey="locAccount" Text="E-mail Address: *"></asp:Localize></td>
<td> <td>
@ -91,21 +100,23 @@
<td class="FormLabel150"><asp:Localize ID="Localize1" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *"></asp:Localize></td> <td class="FormLabel150"><asp:Localize ID="Localize1" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *"></asp:Localize></td>
<td><uc1:UserSelector id="userSelector" runat="server"></uc1:UserSelector></td> <td><uc1:UserSelector id="userSelector" runat="server"></uc1:UserSelector></td>
</tr> </tr>
</table> </table>
</ContentTemplate> </ContentTemplate>
</asp:UpdatePanel> </asp:UpdatePanel>
<table> <table>
<tr> <tr>
<td class="FormLabel150"> <td class="FormLabel150">
<asp:CheckBox ID="chkSendInstructions" runat="server" meta:resourcekey="chkSendInstructions" Text="Send Setup Instructions" Checked="true" /> <asp:Localize ID="locMailboxplanName" runat="server" meta:resourcekey="locMailboxplanName" Text="Mailboxplan Name: *"></asp:Localize>
</td> </td>
<td><wsp:EmailControl id="sendInstructionEmail" runat="server" RequiredEnabled="true" ValidationGroup="CreateMailbox"></wsp:EmailControl></td> <td>
<wsp:MailboxPlanSelector ID="mailboxPlanSelector" runat="server" />
</tr> </td>
</tr>
</table> </table>
<div class="FormFooterClean"> <div class="FormFooterClean">

View file

@ -33,18 +33,18 @@ using WebsitePanel.Providers.ResultObjects;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class ExchangeCreateMailbox : WebsitePanelModuleBase public partial class ExchangeCreateMailbox : WebsitePanelModuleBase
{ {
private bool IsNewUser private bool IsNewUser
{ {
get get
{ {
return NewUserTable.Visible; return NewUserTable.Visible;
} }
} }
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
if (!IsPostBack) if (!IsPostBack)
{ {
password.SetPackagePolicy(PanelSecurity.PackageId, UserSettings.EXCHANGE_POLICY, "MailboxPasswordPolicy"); password.SetPackagePolicy(PanelSecurity.PackageId, UserSettings.EXCHANGE_POLICY, "MailboxPasswordPolicy");
@ -64,16 +64,32 @@ namespace WebsitePanel.Portal.ExchangeServer
messageBox.ShowMessage(passwordPolicy, "EXCHANGE_CREATE_MAILBOX", "HostedOrganization"); messageBox.ShowMessage(passwordPolicy, "EXCHANGE_CREATE_MAILBOX", "HostedOrganization");
return; return;
} }
PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId); PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
if (package != null) if (package != null)
{ {
UserInfo user = ES.Services.Users.GetUserById(package.UserId); //UserInfo user = ES.Services.Users.GetUserById(package.UserId);
if (user != null) //if (user != null)
sendInstructionEmail.Text = user.Email; //sendInstructionEmail.Text = user.Email;
} }
}
} WebsitePanel.Providers.HostedSolution.ExchangeMailboxPlan[] plans = ES.Services.ExchangeServer.GetExchangeMailboxPlans(PanelRequest.ItemID);
if (plans.Length == 0)
btnCreate.Enabled = false;
}
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER))
{
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
{
locSubscriberNumber.Visible = txtSubscriberNumber.Visible = valRequireSubscriberNumber.Enabled = false;
}
}
}
protected void btnCreate_Click(object sender, EventArgs e) protected void btnCreate_Click(object sender, EventArgs e)
{ {
@ -92,23 +108,27 @@ namespace WebsitePanel.Portal.ExchangeServer
string accountName = IsNewUser ? string.Empty : userSelector.GetAccount(); string accountName = IsNewUser ? string.Empty : userSelector.GetAccount();
ExchangeAccountType type = IsNewUser ExchangeAccountType type = IsNewUser
? (ExchangeAccountType) Utils.ParseInt(rbMailboxType.SelectedValue, 1) ? (ExchangeAccountType)Utils.ParseInt(rbMailboxType.SelectedValue, 1)
: ExchangeAccountType.Mailbox; : ExchangeAccountType.Mailbox;
string domain = IsNewUser ? email.DomainName : userSelector.GetPrimaryEmailAddress().Split('@')[1]; string domain = IsNewUser ? email.DomainName : userSelector.GetPrimaryEmailAddress().Split('@')[1];
int accountId = IsNewUser ? 0 : userSelector.GetAccountId(); int accountId = IsNewUser ? 0 : userSelector.GetAccountId();
string subscriberNumber = IsNewUser ? txtSubscriberNumber.Text.Trim() : userSelector.GetSubscriberNumber();
accountId = ES.Services.ExchangeServer.CreateMailbox(PanelRequest.ItemID, accountId, type, accountId = ES.Services.ExchangeServer.CreateMailbox(PanelRequest.ItemID, accountId, type,
accountName, accountName,
displayName, displayName,
name, name,
domain, domain,
password.Password, password.Password,
chkSendInstructions.Checked, false,
sendInstructionEmail.Text); "",
Convert.ToInt32(mailboxPlanSelector.MailboxPlanId),
subscriberNumber);
if (accountId < 0) if (accountId < 0)
{ {
messageBox.ShowResultMessage(accountId); messageBox.ShowResultMessage(accountId);
@ -125,7 +145,7 @@ namespace WebsitePanel.Portal.ExchangeServer
} }
} }
protected void rbtnUserExistingUser_CheckedChanged(object sender, EventArgs e) protected void rbtnUserExistingUser_CheckedChanged(object sender, EventArgs e)
{ {
@ -138,7 +158,7 @@ namespace WebsitePanel.Portal.ExchangeServer
NewUserTable.Visible = true; NewUserTable.Visible = true;
ExistingUserTable.Visible = false; ExistingUserTable.Visible = false;
} }
} }
} }

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.1378
// //
// 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.ExchangeServer { namespace WebsitePanel.Portal.ExchangeServer {
/// <summary>
/// ExchangeCreateMailbox class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class ExchangeCreateMailbox { public partial class ExchangeCreateMailbox {
/// <summary> /// <summary>
@ -145,6 +138,33 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireDisplayName; protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireDisplayName;
/// <summary>
/// locSubscriberNumber 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 locSubscriberNumber;
/// <summary>
/// txtSubscriberNumber 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 txtSubscriberNumber;
/// <summary>
/// valRequireSubscriberNumber 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 valRequireSubscriberNumber;
/// <summary> /// <summary>
/// locAccount control. /// locAccount control.
/// </summary> /// </summary>
@ -227,22 +247,22 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.UserSelector userSelector; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.UserSelector userSelector;
/// <summary> /// <summary>
/// chkSendInstructions control. /// locMailboxplanName 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.CheckBox chkSendInstructions; protected global::System.Web.UI.WebControls.Localize locMailboxplanName;
/// <summary> /// <summary>
/// sendInstructionEmail control. /// mailboxPlanSelector 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::WebsitePanel.Portal.UserControls.EmailControl sendInstructionEmail; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.MailboxPlanSelector mailboxPlanSelector;
/// <summary> /// <summary>
/// btnCreate control. /// btnCreate control.

View file

@ -7,13 +7,12 @@
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %> <%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
<script language="javascript"> <script language="javascript">
function SelectAllCheckboxes(box) function SelectAllCheckboxes(box) {
{ var state = box.checked;
var state = box.checked;
var elm = box.parentElement.parentElement.parentElement.parentElement.getElementsByTagName("INPUT"); var elm = box.parentElement.parentElement.parentElement.parentElement.getElementsByTagName("INPUT");
for(i = 0; i < elm.length; i++) for (i = 0; i < elm.length; i++)
if(elm[i].type == "checkbox" && elm[i].id != box.id && elm[i].checked != state && !elm[i].disabled) if (elm[i].type == "checkbox" && elm[i].id != box.id && elm[i].checked != state && !elm[i].disabled)
elm[i].checked = state; elm[i].checked = state;
} }
</script> </script>

View file

@ -1,4 +1,4 @@
// Copyright (c) 2012, Outercurve Foundation. // Copyright (c) 2011, 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,
@ -42,16 +42,17 @@ using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class ExchangeDistributionListEmailAddresses : WebsitePanelModuleBase public partial class ExchangeDistributionListEmailAddresses : WebsitePanelModuleBase
{ {
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
if (!IsPostBack) if (!IsPostBack)
{ {
BindEmails(); BindEmails();
} }
} }
private void BindEmails() private void BindEmails()
{ {
@ -79,11 +80,11 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
if (!Page.IsValid) if (!Page.IsValid)
return; return;
btnDeleteAddresses.Enabled = true;
btnSetAsPrimary.Enabled = true;
try btnDeleteAddresses.Enabled = true;
btnSetAsPrimary.Enabled = true;
try
{ {
int result = ES.Services.ExchangeServer.AddDistributionListEmailAddress( int result = ES.Services.ExchangeServer.AddDistributionListEmailAddress(
PanelRequest.ItemID, PanelRequest.AccountID, email.Email); PanelRequest.ItemID, PanelRequest.AccountID, email.Email);
@ -94,17 +95,17 @@ namespace WebsitePanel.Portal.ExchangeServer
return; return;
} }
// rebind // rebind
BindEmails(); BindEmails();
} }
catch (Exception ex) catch (Exception ex)
{ {
messageBox.ShowErrorMessage("EXCHANGE_DLIST_ADD_EMAIL", ex); messageBox.ShowErrorMessage("EXCHANGE_DLIST_ADD_EMAIL", ex);
} }
// clear field // clear field
email.AccountName = ""; email.AccountName = "";
} }
protected void btnSetAsPrimary_Click(object sender, EventArgs e) protected void btnSetAsPrimary_Click(object sender, EventArgs e)
@ -113,10 +114,10 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
string email = null; string email = null;
bool Checked = false; bool Checked = false;
for (int i = 0; i < gvEmails.Rows.Count; i++) for (int i = 0; i < gvEmails.Rows.Count; i++)
{ {
GridViewRow row = gvEmails.Rows[i]; GridViewRow row = gvEmails.Rows[i];
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect"); CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
if (chkSelect.Checked) if (chkSelect.Checked)
@ -145,14 +146,14 @@ namespace WebsitePanel.Portal.ExchangeServer
return; return;
} }
// rebind // rebind
BindEmails(); BindEmails();
messageBox.ShowSuccessMessage("EXCHANGE_MAILBOX_SET_DEFAULT_EMAIL"); messageBox.ShowSuccessMessage("EXCHANGE_MAILBOX_SET_DEFAULT_EMAIL");
} }
catch (Exception ex) catch (Exception ex)
{ {
messageBox.ShowErrorMessage("EXCHANGE_DLIST_SET_DEFAULT_EMAIL", ex); messageBox.ShowErrorMessage("EXCHANGE_DLIST_SET_DEFAULT_EMAIL", ex);
} }
} }
@ -187,13 +188,13 @@ namespace WebsitePanel.Portal.ExchangeServer
return; return;
} }
// rebind // rebind
BindEmails(); BindEmails();
} }
catch (Exception ex) catch (Exception ex)
{ {
messageBox.ShowErrorMessage("EXCHANGE_DLIST_DELETE_EMAILS", ex); messageBox.ShowErrorMessage("EXCHANGE_DLIST_DELETE_EMAILS", ex);
} }
} }
} }
} }

View file

@ -1,34 +1,186 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <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.ExchangeServer { namespace WebsitePanel.Portal.ExchangeServer {
public partial class ExchangeDistributionListEmailAddresses { public partial class ExchangeDistributionListEmailAddresses {
protected WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
protected WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu; /// <summary>
protected System.Web.UI.WebControls.Image Image1; /// breadcrumb control.
protected System.Web.UI.WebControls.Localize locTitle; /// </summary>
protected System.Web.UI.WebControls.Literal litDisplayName; /// <remarks>
protected WebsitePanel.Portal.ExchangeServer.UserControls.DistributionListTabs tabs; /// Auto-generated field.
protected WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; /// To modify move field declaration from designer file to code-behind file.
protected System.Web.UI.WebControls.Label lblAddEmail; /// </remarks>
protected System.Web.UI.WebControls.Localize locAccount; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
protected WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress email;
protected System.Web.UI.WebControls.Button btnAddEmail; /// <summary>
protected WebsitePanel.Portal.CollapsiblePanel secExistingAddresses; /// menu control.
protected System.Web.UI.WebControls.Panel ExistingAddresses; /// </summary>
protected System.Web.UI.WebControls.GridView gvEmails; /// <remarks>
protected System.Web.UI.WebControls.Localize locTotal; /// Auto-generated field.
protected System.Web.UI.WebControls.Label lblTotal; /// To modify move field declaration from designer file to code-behind file.
protected System.Web.UI.WebControls.Button btnSetAsPrimary; /// </remarks>
protected System.Web.UI.WebControls.Button btnDeleteAddresses; protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
protected System.Web.UI.WebControls.Localize FormComments;
/// <summary>
/// Image1 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.Image Image1;
/// <summary>
/// locTitle 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 locTitle;
/// <summary>
/// litDisplayName 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.Literal litDisplayName;
/// <summary>
/// tabs control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.DistributionListTabs tabs;
/// <summary>
/// messageBox control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
/// <summary>
/// lblAddEmail 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 lblAddEmail;
/// <summary>
/// locAccount 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 locAccount;
/// <summary>
/// email control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress email;
/// <summary>
/// btnAddEmail 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 btnAddEmail;
/// <summary>
/// secExistingAddresses control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secExistingAddresses;
/// <summary>
/// ExistingAddresses 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.Panel ExistingAddresses;
/// <summary>
/// gvEmails 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 gvEmails;
/// <summary>
/// locTotal 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 locTotal;
/// <summary>
/// lblTotal 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 lblTotal;
/// <summary>
/// btnSetAsPrimary 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 btnSetAsPrimary;
/// <summary>
/// btnDeleteAddresses 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 btnDeleteAddresses;
/// <summary>
/// FormComments 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 FormComments;
} }
} }

Some files were not shown because too many files have changed in this diff Show more