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,
[ItemID] [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,
[PrimaryEmailAddress] [nvarchar](300) COLLATE Latin1_General_CI_AS NULL,
[MailEnabledPublicFolder] [bit] NULL,
@ -37,6 +37,8 @@ CREATE TABLE [dbo].[ExchangeAccounts](
[SamAccountName] [nvarchar](100) COLLATE Latin1_General_CI_AS NULL,
[AccountPassword] [nvarchar](200) COLLATE Latin1_General_CI_AS NULL,
[CreatedDate] [datetime] NOT NULL,
[MailboxPlanId] [int] NULL,
[SubscriberNumber] [nvarchar] (32) COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_ExchangeAccounts] PRIMARY KEY CLUSTERED
(
[AccountID] ASC
@ -54,6 +56,32 @@ SET QUOTED_IDENTIFIER ON
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,
DisplayName,
PrimaryEmailAddress,
MailEnabledPublicFolder
MailEnabledPublicFolder,
SubscriberNumber
FROM
ExchangeAccounts
WHERE
@ -109,6 +138,7 @@ END
GO
@ -150,21 +180,71 @@ CREATE PROCEDURE [dbo].[GetExchangeAccounts]
)
AS
SELECT
AccountID,
ItemID,
AccountType,
AccountName,
DisplayName,
PrimaryEmailAddress,
MailEnabledPublicFolder
E.AccountID,
E.ItemID,
E.AccountType,
E.AccountName,
E.DisplayName,
E.PrimaryEmailAddress,
E.MailEnabledPublicFolder,
E.MailboxPlanId,
P.MailboxPlan,
E.SubscriberNumber
FROM
ExchangeAccounts
ExchangeAccounts AS E
INNER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
WHERE
ItemID = @ItemID AND
(AccountType = @AccountType OR @AccountType IS NULL)
E.ItemID = @ItemID AND
(E.AccountType = @AccountType OR @AccountType IS NULL)
ORDER BY DisplayName
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
SELECT
AccountID,
ItemID,
AccountType,
AccountName,
DisplayName,
PrimaryEmailAddress,
MailEnabledPublicFolder,
MailboxManagerActions,
SamAccountName,
AccountPassword
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
ExchangeAccounts AS E
LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
WHERE
ItemID = @ItemID AND
AccountID = @AccountID
E.ItemID = @ItemID AND
E.AccountID = @AccountID
RETURN
@ -311,14 +395,14 @@ GO
CREATE PROCEDURE ExchangeAccountExists
CREATE PROCEDURE [dbo].[ExchangeAccountExists]
(
@AccountName nvarchar(20),
@Exists bit OUTPUT
)
AS
SET @Exists = 0
IF EXISTS(SELECT * FROM ExchangeAccounts WHERE AccountName = @AccountName)
IF EXISTS(SELECT * FROM ExchangeAccounts WHERE sAMAccountName LIKE '%\'+@AccountName)
BEGIN
SET @Exists = 1
END
@ -352,6 +436,10 @@ RETURN
@ -936,7 +1024,7 @@ GO
CREATE PROCEDURE SearchExchangeAccounts
CREATE PROCEDURE [dbo].[SearchExchangeAccounts]
(
@ActorID int,
@ItemID int,
@ -986,7 +1074,8 @@ SELECT
EA.AccountName,
EA.DisplayName,
EA.PrimaryEmailAddress,
EA.MailEnabledPublicFolder
EA.MailEnabledPublicFolder,
EA.SubscriberNumber
FROM ExchangeAccounts AS EA
WHERE ' + @condition
@ -1026,6 +1115,7 @@ RETURN
GO
@ -1080,6 +1170,10 @@ END
IF @SortColumn IS NULL OR @SortColumn = ''
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)
set @sql = '
@ -1094,9 +1188,10 @@ WITH Accounts AS (
EA.AccountName,
EA.DisplayName,
EA.PrimaryEmailAddress,
EA.MailEnabledPublicFolder
FROM ExchangeAccounts AS EA
WHERE ' + @condition + '
EA.MailEnabledPublicFolder,
EA.MailboxPlanId,
EA.SubscriberNumber ' + @joincondition +
' WHERE ' + @condition + '
)
SELECT * FROM Accounts
@ -1118,6 +1213,7 @@ RETURN
GO
SET ANSI_NULLS ON
GO
@ -1407,13 +1503,15 @@ CREATE PROCEDURE [dbo].[AddExchangeAccount]
@AccountID int OUTPUT,
@ItemID int,
@AccountType int,
@AccountName nvarchar(20),
@AccountName nvarchar(300),
@DisplayName nvarchar(300),
@PrimaryEmailAddress nvarchar(300),
@MailEnabledPublicFolder bit,
@MailboxManagerActions varchar(200),
@SamAccountName nvarchar(100),
@AccountPassword nvarchar(200)
@AccountPassword nvarchar(200),
@MailboxPlanId int,
@SubscriberNumber nvarchar(32)
)
AS
@ -1427,7 +1525,9 @@ INSERT INTO ExchangeAccounts
MailEnabledPublicFolder,
MailboxManagerActions,
SamAccountName,
AccountPassword
AccountPassword,
MailboxPlanId,
SubscriberNumber
)
VALUES
(
@ -1439,7 +1539,9 @@ VALUES
@MailEnabledPublicFolder,
@MailboxManagerActions,
@SamAccountName,
@AccountPassword
@AccountPassword,
@MailboxPlanId,
@SubscriberNumber
)
SET @AccountID = SCOPE_IDENTITY()
@ -1475,6 +1577,7 @@ RETURN
GO
@ -3538,9 +3641,9 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe
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)
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
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
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
@ -3560,16 +3663,6 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe
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)
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)
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)
@ -3602,7 +3695,7 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe
GO
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (205, 13, 1, N'HostedSolution.Organizations', N'Organizations', 2, 0, 29)
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
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
@ -3748,6 +3841,16 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe
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)
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)
GO
@ -5866,7 +5969,7 @@ SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ExchangeOrganizations](
[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
(
[ItemID] ASC
@ -5980,8 +6083,10 @@ CREATE PROCEDURE DeleteExchangeOrganization
@ItemID int
)
AS
DELETE FROM ExchangeOrganizations
WHERE ItemID = @ItemID
BEGIN TRAN
DELETE FROM ExchangeMailboxPlans WHERE ItemID = @ItemID
DELETE FROM ExchangeOrganizations WHERE ItemID = @ItemID
COMMIT TRAN
RETURN
@ -6053,7 +6158,7 @@ GO
CREATE PROCEDURE AddExchangeOrganization
(
@ItemID int,
@OrganizationID nvarchar(10)
@OrganizationID nvarchar(128)
)
AS
@ -6241,7 +6346,8 @@ SELECT
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 2 AND ItemID = @ItemID) AS CreatedContacts,
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 3 AND ItemID = @ItemID) AS CreatedDistributionLists,
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders,
(SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains
(SELECT 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
@ -6272,7 +6378,6 @@ RETURN
GO
@ -6611,18 +6716,26 @@ GO
CREATE PROCEDURE [dbo].[UpdateExchangeAccount]
(
@AccountID int,
@AccountName nvarchar(20),
@AccountName nvarchar(300),
@DisplayName nvarchar(300),
@PrimaryEmailAddress nvarchar(300),
@AccountType int,
@SamAccountName nvarchar(100),
@MailEnabledPublicFolder bit,
@MailboxManagerActions varchar(200),
@Password varchar(200)
@Password varchar(200),
@MailboxPlanId int,
@SubscriberNumber varchar(32)
)
AS
BEGIN TRAN
IF (@MailboxPlanId = -1)
BEGIN
SET @MailboxPlanId = NULL
END
UPDATE ExchangeAccounts SET
AccountName = @AccountName,
DisplayName = @DisplayName,
@ -6630,7 +6743,9 @@ UPDATE ExchangeAccounts SET
MailEnabledPublicFolder = @MailEnabledPublicFolder,
MailboxManagerActions = @MailboxManagerActions,
AccountType =@AccountType,
SamAccountName = @SamAccountName
SamAccountName = @SamAccountName,
MailboxPlanId = @MailboxPlanId,
SubscriberNumber = @SubscriberNumber
WHERE
AccountID = @AccountID
@ -6667,6 +6782,10 @@ RETURN
GO
@ -8899,7 +9018,8 @@ SELECT
EA.AccountType,
EA.AccountName,
EA.DisplayName,
EA.PrimaryEmailAddress
EA.PrimaryEmailAddress,
EA.SubscriberNumber
FROM ExchangeAccounts AS EA
WHERE ' + @condition
@ -8936,6 +9056,8 @@ RETURN
@ -20551,7 +20673,7 @@ GO
CREATE PROCEDURE GetPackages
CREATE PROCEDURE [dbo].[GetPackages]
(
@ActorID 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 HostingPlans AS HP ON P.PlanID = HP.PlanID
WHERE
P.UserID <> @UserID
AND dbo.CheckUserParent(@UserID, P.UserID) = 1
P.UserID = @UserID
RETURN
@ -23257,6 +23378,8 @@ INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName]
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)
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
GO
SET QUOTED_IDENTIFIER ON
@ -25738,21 +25861,27 @@ AS
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
ELSE IF @QuotaID = 319 -- BB Users
SET @Result = (SELECT COUNT(ea.AccountID)
FROM
ExchangeAccounts ea
INNER JOIN
BlackBerryUsers bu
ON
ea.AccountID = bu.AccountID
INNER JOIN
ServiceItems si
ON
ea.ItemID = si.ItemID
INNER JOIN
PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE
pt.ParentPackageID = @PackageID)
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
ELSE IF @QuotaID = 206 -- HostedSolution.Users
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID AND ea.AccountType IN (1,5,6,7))
ELSE IF @QuotaID = 78 -- Exchange2007.Mailboxes
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.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
SET @Result = (SELECT COUNT(SI.ItemID) FROM Quotas AS Q
INNER JOIN ServiceItems AS SI ON SI.ItemTypeID = Q.ItemTypeID
@ -25761,14 +25890,10 @@ AS
RETURN @Result
END
GO
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
@ -44451,6 +44576,7 @@ EXEC sp_xml_removedocument @idoc
COMMIT TRAN
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
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])
REFERENCES [dbo].[Schedule] ([ScheduleID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ScheduleParameters] CHECK CONSTRAINT [FK_ScheduleParameters_Schedule]
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])
REFERENCES [dbo].[ServiceItems] ([ItemID])
ON DELETE CASCADE
@ -44713,6 +45092,12 @@ ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ExchangeOrganizations] CHECK CONSTRAINT [FK_ExchangeOrganizations_ServiceItems]
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])
REFERENCES [dbo].[ServiceItems] ([ItemID])
ON DELETE CASCADE
@ -45117,4 +45502,5 @@ ON DELETE CASCADE
GO
ALTER TABLE [dbo].[ServiceProperties] CHECK CONSTRAINT [FK_ServiceProperties_Services]
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_MAPIENABLED = "Exchange2007.MAPIEnabled"; // MAPI 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_USERS = "MsSQL2000.Users"; // Users
public const string MSSQL2000_MAXDATABASESIZE = "MsSQL2000.MaxDatabaseSize"; // Max Database Size

View file

@ -2065,33 +2065,36 @@ namespace WebsitePanel.EnterpriseServer
#endregion
#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 mailboxManagerActions, string samAccountName, string accountPassword)
{
SqlParameter outParam = new SqlParameter("@AccountID", SqlDbType.Int);
outParam.Direction = ParameterDirection.Output;
string mailboxManagerActions, string samAccountName, string accountPassword, int mailboxPlanId, string subscriberNumber)
{
SqlParameter outParam = new SqlParameter("@AccountID", SqlDbType.Int);
outParam.Direction = ParameterDirection.Output;
SqlHelper.ExecuteNonQuery(
ConnectionString,
CommandType.StoredProcedure,
"AddExchangeAccount",
outParam,
new SqlParameter("@ItemID", itemId),
new SqlParameter("@AccountType", accountType),
new SqlParameter("@AccountName", accountName),
new SqlParameter("@DisplayName", displayName),
new SqlParameter("@PrimaryEmailAddress", primaryEmailAddress),
new SqlParameter("@MailEnabledPublicFolder", mailEnabledPublicFolder),
SqlHelper.ExecuteNonQuery(
ConnectionString,
CommandType.StoredProcedure,
"AddExchangeAccount",
outParam,
new SqlParameter("@ItemID", itemId),
new SqlParameter("@AccountType", accountType),
new SqlParameter("@AccountName", accountName),
new SqlParameter("@DisplayName", displayName),
new SqlParameter("@PrimaryEmailAddress", primaryEmailAddress),
new SqlParameter("@MailEnabledPublicFolder", mailEnabledPublicFolder),
new SqlParameter("@MailboxManagerActions", mailboxManagerActions),
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)
{
@ -2159,6 +2162,7 @@ namespace WebsitePanel.EnterpriseServer
);
}
public static void DeleteExchangeAccountEmailAddress(int accountId, string emailAddress)
{
SqlHelper.ExecuteNonQuery(
@ -2255,26 +2259,27 @@ namespace WebsitePanel.EnterpriseServer
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 mailboxManagerActions, string samAccountName, string accountPassword)
{
SqlHelper.ExecuteNonQuery(
ConnectionString,
CommandType.StoredProcedure,
"UpdateExchangeAccount",
new SqlParameter("@AccountID", accountId),
new SqlParameter("@AccountName", accountName),
new SqlParameter("@DisplayName", displayName),
string mailboxManagerActions, string samAccountName, string accountPassword, int mailboxPlanId, string subscriberNumber)
{
SqlHelper.ExecuteNonQuery(
ConnectionString,
CommandType.StoredProcedure,
"UpdateExchangeAccount",
new SqlParameter("@AccountID", accountId),
new SqlParameter("@AccountName", accountName),
new SqlParameter("@DisplayName", displayName),
new SqlParameter("@AccountType", (int)accountType),
new SqlParameter("@PrimaryEmailAddress", primaryEmailAddress),
new SqlParameter("@MailEnabledPublicFolder", mailEnabledPublicFolder),
new SqlParameter("@PrimaryEmailAddress", primaryEmailAddress),
new SqlParameter("@MailEnabledPublicFolder", mailEnabledPublicFolder),
new SqlParameter("@MailboxManagerActions", mailboxManagerActions),
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)
{
@ -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)
{
return SqlHelper.ExecuteReader(
@ -2398,6 +2414,97 @@ namespace WebsitePanel.EnterpriseServer
#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
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();
ServiceProviderProxy.Init(ws, serviceId);
@ -710,9 +710,6 @@ namespace WebsitePanel.EnterpriseServer
org.Id = 1;
org.OrganizationId = "fabrikam";
org.Name = "Fabrikam Inc";
org.IssueWarningKB = 150000;
org.ProhibitSendKB = 170000;
org.ProhibitSendReceiveKB = 190000;
org.KeepDeletedItemsDays = 14;
org.GlobalAddressList = "FabrikamGAL";
return org;
@ -980,8 +977,17 @@ namespace WebsitePanel.EnterpriseServer
OrganizationUsersPaged result = new OrganizationUsersPaged();
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>();
ObjectUtils.FillCollectionFromDataView(accounts, ds.Tables[1].DefaultView);
foreach (OrganizationUser user in Tmpaccounts.ToArray())
{
accounts.Add(GetUserGeneralSettings(itemId, user.AccountId));
}
result.PageUsers = accounts.ToArray();
return result;
}
@ -993,22 +999,23 @@ namespace WebsitePanel.EnterpriseServer
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,
string.Empty, CryptoUtils.Encrypt(accountPassword));
}
sAMAccountName, CryptoUtils.Encrypt(accountPassword), 0, subscriberNumber.Trim());
}
public static string GetAccountName(string loginName)
{
string []parts = loginName.Split('@');
return parts != null && parts.Length > 1 ? parts[0] : loginName;
//string []parts = loginName.Split('@');
//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))
throw new ArgumentNullException("displayName");
@ -1023,55 +1030,171 @@ namespace WebsitePanel.EnterpriseServer
throw new ArgumentNullException("password");
accountName = string.Empty;
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
if (accountCheck < 0) return accountCheck;
// place log record
TaskManager.StartTask("ORGANIZATION", "CREATE_USER");
TaskManager.ItemId = itemId;
TaskManager.Write("Organization ID :" + itemId);
TaskManager.Write("name :" + name);
TaskManager.Write("domain :" + domain);
TaskManager.Write("subscriberNumber :" + subscriberNumber);
// e-mail
string email = name + "@" + domain;
int userId = -1;
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);
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)
try
{
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;
}
private static void AddAccountEmailAddress(int accountId, string emailAddress)
{
@ -1080,28 +1203,40 @@ namespace WebsitePanel.EnterpriseServer
private static string BuildAccountName(string orgId, string name)
{
int maxLen = 19 - orgId.Length;
// try to choose name
int i = 0;
while (true)
string accountName = name = name.Replace(" ", "");
string CounterStr = "00000";
int counter = 0;
bool bFound = false;
do
{
string num = i > 0 ? i.ToString() : "";
int len = maxLen - num.Length;
accountName = genSamLogin(name, CounterStr);
if (name.Length > len)
name = name.Substring(0, len);
if (!AccountExists(accountName)) bFound = true;
string accountName = name + num + "_" + orgId;
// check if already exists
if (!AccountExists(accountName))
return accountName;
i++;
CounterStr = counter.ToString("d5");
counter++;
}
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)
{
return DataProvider.ExchangeAccountExists(accountName);
@ -1180,6 +1315,18 @@ namespace WebsitePanel.EnterpriseServer
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)
{
// try to get organization
@ -1217,11 +1364,16 @@ namespace WebsitePanel.EnterpriseServer
string accountName = GetAccountName(account.AccountName);
OrganizationUser retUser = orgProxy.GeUserGeneralSettings(accountName, org.OrganizationId);
OrganizationUser retUser = orgProxy.GetUserGeneralSettings(accountName, org.OrganizationId);
retUser.AccountId = accountId;
retUser.AccountName = account.AccountName;
retUser.PrimaryEmailAddress = account.PrimaryEmailAddress;
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;
}
@ -1240,7 +1392,7 @@ namespace WebsitePanel.EnterpriseServer
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, string externalEmail)
string webPage, string notes, string externalEmail, string subscriberNumber)
{
// check account
@ -1253,6 +1405,10 @@ namespace WebsitePanel.EnterpriseServer
try
{
displayName = displayName.Trim();
firstName = firstName.Trim();
lastName = lastName.Trim();
// load organization
Organization org = GetOrganization(itemId);
if (org == null)
@ -1303,6 +1459,7 @@ namespace WebsitePanel.EnterpriseServer
// update account
account.DisplayName = displayName;
account.SubscriberNumber = subscriberNumber;
//account.
if (!String.IsNullOrEmpty(password))
@ -1329,7 +1486,8 @@ namespace WebsitePanel.EnterpriseServer
{
DataProvider.UpdateExchangeAccount(account.AccountId, account.AccountName, account.AccountType, account.DisplayName,
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
return ObjectUtils.CreateListFromDataReader<OrganizationUser>(
DataProvider.SearchOrganizationAccounts(SecurityContext.User.UserId, itemId,
filterColumn, filterValue, sortColumn, includeMailboxes));
List<OrganizationUser> Tmpaccounts = ObjectUtils.CreateListFromDataReader<OrganizationUser>(
DataProvider.SearchOrganizationAccounts(SecurityContext.User.UserId, itemId,
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
public static List<OrganizationDomainName> GetOrganizationDomains(int itemId)

View file

@ -46,80 +46,81 @@ namespace WebsitePanel.EnterpriseServer
[ToolboxItem(false)]
public class esExchangeServer : WebService
{
#region Organizations
[WebMethod]
public DataSet GetRawExchangeOrganizationsPaged(int packageId, bool recursive,
string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
{
return ExchangeServerController.GetRawExchangeOrganizationsPaged(packageId, recursive,
filterColumn, filterValue, sortColumn, startRow, maximumRows);
}
#region Organizations
[WebMethod]
public DataSet GetRawExchangeOrganizationsPaged(int packageId, bool recursive,
string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
{
return ExchangeServerController.GetRawExchangeOrganizationsPaged(packageId, recursive,
filterColumn, filterValue, sortColumn, startRow, maximumRows);
}
[WebMethod]
public OrganizationsPaged GetExchangeOrganizationsPaged(int packageId, bool recursive,
string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
{
return ExchangeServerController.GetExchangeOrganizationsPaged(packageId, recursive,
filterColumn, filterValue, sortColumn, startRow, maximumRows);
}
[WebMethod]
public OrganizationsPaged GetExchangeOrganizationsPaged(int packageId, bool recursive,
string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
{
return ExchangeServerController.GetExchangeOrganizationsPaged(packageId, recursive,
filterColumn, filterValue, sortColumn, startRow, maximumRows);
}
[WebMethod]
public List<Organization> GetExchangeOrganizations(int packageId, bool recursive)
{
return ExchangeServerController.GetExchangeOrganizations(packageId, recursive);
}
[WebMethod]
public List<Organization> GetExchangeOrganizations(int packageId, bool recursive)
{
return ExchangeServerController.GetExchangeOrganizations(packageId, recursive);
}
[WebMethod]
public Organization GetOrganization(int itemId)
{
return ExchangeServerController.GetOrganization(itemId);
}
[WebMethod]
public Organization GetOrganization(int itemId)
{
return ExchangeServerController.GetOrganization(itemId);
}
[WebMethod]
public OrganizationStatistics GetOrganizationStatistics(int itemId)
{
return ExchangeServerController.GetOrganizationStatistics(itemId);
}
[WebMethod]
public OrganizationStatistics GetOrganizationStatistics(int itemId)
{
return ExchangeServerController.GetOrganizationStatistics(itemId);
}
[WebMethod]
public int DeleteOrganization(int itemId)
{
return ExchangeServerController.DeleteOrganization(itemId);
}
[WebMethod]
public Organization GetOrganizationStorageLimits(int itemId)
{
return ExchangeServerController.GetOrganizationStorageLimits(itemId);
}
[WebMethod]
public int DeleteOrganization(int itemId)
{
return ExchangeServerController.DeleteOrganization(itemId);
}
[WebMethod]
public int SetOrganizationStorageLimits(int itemId, int issueWarningKB, int prohibitSendKB,
int prohibitSendReceiveKB, int keepDeletedItemsDays, bool applyToMailboxes)
{
return ExchangeServerController.SetOrganizationStorageLimits(itemId, issueWarningKB, prohibitSendKB,
prohibitSendReceiveKB, keepDeletedItemsDays, applyToMailboxes);
}
[WebMethod]
public Organization GetOrganizationStorageLimits(int itemId)
{
return ExchangeServerController.GetOrganizationStorageLimits(itemId);
}
[WebMethod]
public ExchangeItemStatistics[] GetMailboxesStatistics(int itemId)
{
return ExchangeServerController.GetMailboxesStatistics(itemId);
}
[WebMethod]
public int SetOrganizationStorageLimits(int itemId, int issueWarningKB, int prohibitSendKB,
int prohibitSendReceiveKB, int keepDeletedItemsDays, bool applyToMailboxes)
{
return ExchangeServerController.SetOrganizationStorageLimits(itemId, issueWarningKB, prohibitSendKB,
prohibitSendReceiveKB, keepDeletedItemsDays, applyToMailboxes);
}
[WebMethod]
public ExchangeItemStatistics[] GetPublicFoldersStatistics(int itemId)
{
return ExchangeServerController.GetPublicFoldersStatistics(itemId);
}
[WebMethod]
public ExchangeItemStatistics[] GetMailboxesStatistics(int itemId)
{
return ExchangeServerController.GetMailboxesStatistics(itemId);
}
[WebMethod]
public int CalculateOrganizationDiskspace(int itemId)
{
return ExchangeServerController.CalculateOrganizationDiskspace(itemId);
}
[WebMethod]
public ExchangeMailboxStatistics GetMailboxStatistics(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxStatistics(itemId, accountId);
}
[WebMethod]
public int CalculateOrganizationDiskspace(int itemId)
{
return ExchangeServerController.CalculateOrganizationDiskspace(itemId);
}
[WebMethod]
public ExchangeActiveSyncPolicy GetActiveSyncPolicy(int itemId)
@ -139,14 +140,14 @@ namespace WebsitePanel.EnterpriseServer
passwordRecoveryEnabled, deviceEncryptionEnabled, allowSimplePassword, maxPasswordFailedAttempts,
minPasswordLength, inactivityLockMin, passwordExpirationDays, passwordHistory, refreshInteval);
}
#endregion
#endregion
#region Domains
[WebMethod]
#region Domains
[WebMethod]
public int AddAuthoritativeDomain(int itemId, int domainId)
{
{
return ExchangeServerController.AddAuthoritativeDomain(itemId, domainId);
}
}
[WebMethod]
public int DeleteAuthoritativeDomain(int itemId, int domainId)
@ -155,42 +156,42 @@ namespace WebsitePanel.EnterpriseServer
}
#endregion
#endregion
#region Accounts
[WebMethod]
public ExchangeAccountsPaged GetAccountsPaged(int itemId, string accountTypes,
string filterColumn, string filterValue, string sortColumn,
int startRow, int maximumRows)
{
#region Accounts
[WebMethod]
public ExchangeAccountsPaged GetAccountsPaged(int itemId, string accountTypes,
string filterColumn, string filterValue, string sortColumn,
int startRow, int maximumRows)
{
return ExchangeServerController.GetAccountsPaged(itemId, accountTypes,
filterColumn, filterValue, sortColumn,
startRow, maximumRows);
}
filterColumn, filterValue, sortColumn,
startRow, maximumRows);
}
[WebMethod]
public List<ExchangeAccount> GetAccounts(int itemId, ExchangeAccountType accountType)
{
return ExchangeServerController.GetAccounts(itemId, accountType);
}
[WebMethod]
public List<ExchangeAccount> GetAccounts(int itemId, ExchangeAccountType accountType)
{
return ExchangeServerController.GetAccounts(itemId, accountType);
}
[WebMethod]
public List<ExchangeAccount> SearchAccounts(int itemId,
bool includeMailboxes, bool includeContacts, bool includeDistributionLists,
[WebMethod]
public List<ExchangeAccount> SearchAccounts(int itemId,
bool includeMailboxes, bool includeContacts, bool includeDistributionLists,
bool includeRooms, bool includeEquipment,
string filterColumn, string filterValue, string sortColumn)
{
return ExchangeServerController.SearchAccounts(itemId,
includeMailboxes, includeContacts, includeDistributionLists,
string filterColumn, string filterValue, string sortColumn)
{
return ExchangeServerController.SearchAccounts(itemId,
includeMailboxes, includeContacts, includeDistributionLists,
includeRooms, includeEquipment,
filterColumn, filterValue, sortColumn);
}
filterColumn, filterValue, sortColumn);
}
[WebMethod]
public ExchangeAccount GetAccount(int itemId, int accountId)
{
return ExchangeServerController.GetAccount(itemId, accountId);
}
[WebMethod]
public ExchangeAccount GetAccount(int itemId, int accountId)
{
return ExchangeServerController.GetAccount(itemId, accountId);
}
[WebMethod]
public ExchangeAccount SearchAccount(ExchangeAccountType accountType, string primaryEmailAddress)
@ -204,21 +205,21 @@ namespace WebsitePanel.EnterpriseServer
return ExchangeServerController.CheckAccountCredentials(itemId, email, password);
}
#endregion
#endregion
#region Mailboxes
[WebMethod]
public int CreateMailbox(int itemId, int accountId, ExchangeAccountType accountType, string accountName, string displayName,
string name, string domain, string password, bool sendSetupInstructions, string setupInstructionMailAddress)
{
return ExchangeServerController.CreateMailbox(itemId, accountId, accountType, accountName, displayName, name, domain, password, sendSetupInstructions, setupInstructionMailAddress);
}
#region Mailboxes
[WebMethod]
public int CreateMailbox(int itemId, int accountId, ExchangeAccountType accountType, string accountName, string displayName,
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, mailboxPlanId, subscriberNumber);
}
[WebMethod]
public int DeleteMailbox(int itemId, int accountId)
{
return ExchangeServerController.DeleteMailbox(itemId, accountId);
}
[WebMethod]
public int DeleteMailbox(int itemId, int accountId)
{
return ExchangeServerController.DeleteMailbox(itemId, accountId);
}
[WebMethod]
public int DisableMailbox(int itemId, int accountId)
@ -227,87 +228,66 @@ namespace WebsitePanel.EnterpriseServer
}
[WebMethod]
public ExchangeMailbox GetMailboxGeneralSettings(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxGeneralSettings(itemId, accountId);
}
[WebMethod]
public ExchangeMailbox GetMailboxGeneralSettings(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxGeneralSettings(itemId, accountId);
}
[WebMethod]
public int SetMailboxGeneralSettings(int itemId, int accountId, string displayName,
string password, bool hideAddressBook, 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)
{
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]
public int SetMailboxGeneralSettings(int itemId, int accountId, bool hideAddressBook, bool disabled)
{
return ExchangeServerController.SetMailboxGeneralSettings(itemId, accountId, hideAddressBook, disabled);
}
[WebMethod]
public ExchangeEmailAddress[] GetMailboxEmailAddresses(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxEmailAddresses(itemId, accountId);
}
[WebMethod]
public ExchangeEmailAddress[] GetMailboxEmailAddresses(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxEmailAddresses(itemId, accountId);
}
[WebMethod]
public int AddMailboxEmailAddress(int itemId, int accountId, string emailAddress)
{
return ExchangeServerController.AddMailboxEmailAddress(itemId, accountId, emailAddress);
}
[WebMethod]
public int AddMailboxEmailAddress(int itemId, int accountId, string emailAddress)
{
return ExchangeServerController.AddMailboxEmailAddress(itemId, accountId, emailAddress);
}
[WebMethod]
public int SetMailboxPrimaryEmailAddress(int itemId, int accountId, string emailAddress)
{
return ExchangeServerController.SetMailboxPrimaryEmailAddress(itemId, accountId, emailAddress);
}
[WebMethod]
public int SetMailboxPrimaryEmailAddress(int itemId, int accountId, string emailAddress)
{
return ExchangeServerController.SetMailboxPrimaryEmailAddress(itemId, accountId, emailAddress);
}
[WebMethod]
public int DeleteMailboxEmailAddresses(int itemId, int accountId, string[] emailAddresses)
{
return ExchangeServerController.DeleteMailboxEmailAddresses(itemId, accountId, emailAddresses);
}
[WebMethod]
public int DeleteMailboxEmailAddresses(int itemId, int accountId, string[] emailAddresses)
{
return ExchangeServerController.DeleteMailboxEmailAddresses(itemId, accountId, emailAddresses);
}
[WebMethod]
public ExchangeMailbox GetMailboxMailFlowSettings(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxMailFlowSettings(itemId, accountId);
}
[WebMethod]
public ExchangeMailbox GetMailboxMailFlowSettings(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxMailFlowSettings(itemId, accountId);
}
[WebMethod]
public int SetMailboxMailFlowSettings(int itemId, int accountId,
bool enableForwarding, string forwardingAccountName, bool forwardToBoth,
string[] sendOnBehalfAccounts, string[] acceptAccounts, string[] rejectAccounts,
int maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB,
[WebMethod]
public int SetMailboxMailFlowSettings(int itemId, int accountId,
bool enableForwarding, string forwardingAccountName, bool forwardToBoth,
string[] sendOnBehalfAccounts, string[] acceptAccounts, string[] rejectAccounts,
bool requireSenderAuthentication)
{
return ExchangeServerController.SetMailboxMailFlowSettings(itemId, accountId,
enableForwarding, forwardingAccountName, forwardToBoth,
sendOnBehalfAccounts, acceptAccounts, rejectAccounts,
maxRecipients, maxSendMessageSizeKB, maxReceiveMessageSizeKB,
requireSenderAuthentication);
}
{
return ExchangeServerController.SetMailboxMailFlowSettings(itemId, accountId,
enableForwarding, forwardingAccountName, forwardToBoth,
sendOnBehalfAccounts, acceptAccounts, rejectAccounts,
requireSenderAuthentication);
}
[WebMethod]
public ExchangeMailbox GetMailboxAdvancedSettings(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxAdvancedSettings(itemId, accountId);
}
[WebMethod]
public int SetMailboxAdvancedSettings(int itemId, int accountId, bool enablePOP,
bool enableIMAP, bool enableOWA, bool enableMAPI, bool enableActiveSync,
int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays)
{
return ExchangeServerController.SetMailboxAdvancedSettings(itemId, accountId, enablePOP,
enableIMAP, enableOWA, enableMAPI, enableActiveSync,
issueWarningKB, prohibitSendKB, prohibitSendReceiveKB, keepDeletedItemsDays);
}
[WebMethod]
public int SetExchangeMailboxPlan(int itemId, int accountId, int mailboxPlanId)
{
return ExchangeServerController.SetExchangeMailboxPlan(itemId, accountId, mailboxPlanId);
}
[WebMethod]
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);
}
[WebMethod]
[WebMethod]
public ExchangeMailbox GetMailboxPermissions(int itemId, int accountId)
{
return ExchangeServerController.GetMailboxPermissions(itemId, accountId);
return ExchangeServerController.GetMailboxPermissions(itemId, accountId);
}
[WebMethod]
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]
public int DeleteContact(int itemId, int accountId)
{
return ExchangeServerController.DeleteContact(itemId, accountId);
}
#endregion
[WebMethod]
public ExchangeContact GetContactGeneralSettings(int itemId, int accountId)
{
return ExchangeServerController.GetContactGeneralSettings(itemId, accountId);
}
#region Contacts
[WebMethod]
public int CreateContact(int itemId, string displayName, string email)
{
return ExchangeServerController.CreateContact(itemId, displayName, email);
}
[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,
[WebMethod]
public int DeleteContact(int itemId, int accountId)
{
return ExchangeServerController.DeleteContact(itemId, accountId);
}
[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)
{
return ExchangeServerController.SetContactGeneralSettings(itemId, accountId, displayName, emailAddress,
hideAddressBook, firstName, initials,
lastName, address, city, state, zip, country,
jobTitle, company, department, office, managerAccountName,
businessPhone, fax, homePhone, mobilePhone, pager,
webPage, notes, useMapiRichTextFormat);
}
{
return ExchangeServerController.SetContactGeneralSettings(itemId, accountId, displayName, emailAddress,
hideAddressBook, firstName, initials,
lastName, address, city, state, zip, country,
jobTitle, company, department, office, managerAccountName,
businessPhone, fax, homePhone, mobilePhone, pager,
webPage, notes, useMapiRichTextFormat);
}
[WebMethod]
public ExchangeContact GetContactMailFlowSettings(int itemId, int accountId)
{
return ExchangeServerController.GetContactMailFlowSettings(itemId, accountId);
}
[WebMethod]
public ExchangeContact GetContactMailFlowSettings(int itemId, int accountId)
{
return ExchangeServerController.GetContactMailFlowSettings(itemId, accountId);
}
[WebMethod]
public int SetContactMailFlowSettings(int itemId, int accountId,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{
return ExchangeServerController.SetContactMailFlowSettings(itemId, accountId,
acceptAccounts, rejectAccounts, requireSenderAuthentication);
}
#endregion
[WebMethod]
public int SetContactMailFlowSettings(int itemId, int accountId,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{
return ExchangeServerController.SetContactMailFlowSettings(itemId, accountId,
acceptAccounts, rejectAccounts, requireSenderAuthentication);
}
#endregion
#region Distribution Lists
[WebMethod]
public int CreateDistributionList(int itemId, string displayName, string name, string domain, int managerId)
{
return ExchangeServerController.CreateDistributionList(itemId, displayName, name, domain, managerId);
}
#region Distribution Lists
[WebMethod]
public int CreateDistributionList(int itemId, string displayName, string name, string domain, int managerId)
{
return ExchangeServerController.CreateDistributionList(itemId, displayName, name, domain, managerId);
}
[WebMethod]
public int DeleteDistributionList(int itemId, int accountId)
{
return ExchangeServerController.DeleteDistributionList(itemId, accountId);
}
[WebMethod]
public int DeleteDistributionList(int itemId, int accountId)
{
return ExchangeServerController.DeleteDistributionList(itemId, accountId);
}
[WebMethod]
public ExchangeDistributionList GetDistributionListGeneralSettings(int itemId, int accountId)
{
return ExchangeServerController.GetDistributionListGeneralSettings(itemId, accountId);
}
[WebMethod]
public ExchangeDistributionList GetDistributionListGeneralSettings(int itemId, int accountId)
{
return ExchangeServerController.GetDistributionListGeneralSettings(itemId, accountId);
}
[WebMethod]
public int SetDistributionListGeneralSettings(int itemId, int accountId, string displayName,
bool hideAddressBook, string managerAccount, string[] memberAccounts,
string notes)
{
return ExchangeServerController.SetDistributionListGeneralSettings(itemId, accountId, displayName,
hideAddressBook, managerAccount, memberAccounts,
notes);
}
[WebMethod]
public int SetDistributionListGeneralSettings(int itemId, int accountId, string displayName,
bool hideAddressBook, string managerAccount, string[] memberAccounts,
string notes)
{
return ExchangeServerController.SetDistributionListGeneralSettings(itemId, accountId, displayName,
hideAddressBook, managerAccount, memberAccounts,
notes);
}
[WebMethod]
public ExchangeDistributionList GetDistributionListMailFlowSettings(int itemId, int accountId)
{
return ExchangeServerController.GetDistributionListMailFlowSettings(itemId, accountId);
}
[WebMethod]
public ExchangeDistributionList GetDistributionListMailFlowSettings(int itemId, int accountId)
{
return ExchangeServerController.GetDistributionListMailFlowSettings(itemId, accountId);
}
[WebMethod]
public int SetDistributionListMailFlowSettings(int itemId, int accountId,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{
return ExchangeServerController.SetDistributionListMailFlowSettings(itemId, accountId,
acceptAccounts, rejectAccounts, requireSenderAuthentication);
}
[WebMethod]
public int SetDistributionListMailFlowSettings(int itemId, int accountId,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{
return ExchangeServerController.SetDistributionListMailFlowSettings(itemId, accountId,
acceptAccounts, rejectAccounts, requireSenderAuthentication);
}
[WebMethod]
public ExchangeEmailAddress[] GetDistributionListEmailAddresses(int itemId, int accountId)
{
return ExchangeServerController.GetDistributionListEmailAddresses(itemId, accountId);
}
[WebMethod]
public ExchangeEmailAddress[] GetDistributionListEmailAddresses(int itemId, int accountId)
{
return ExchangeServerController.GetDistributionListEmailAddresses(itemId, accountId);
}
[WebMethod]
public int AddDistributionListEmailAddress(int itemId, int accountId, string emailAddress)
{
return ExchangeServerController.AddDistributionListEmailAddress(itemId, accountId, emailAddress);
}
[WebMethod]
public int AddDistributionListEmailAddress(int itemId, int accountId, string emailAddress)
{
return ExchangeServerController.AddDistributionListEmailAddress(itemId, accountId, emailAddress);
}
[WebMethod]
public int SetDistributionListPrimaryEmailAddress(int itemId, int accountId, string emailAddress)
{
return ExchangeServerController.SetDistributionListPrimaryEmailAddress(itemId, accountId, emailAddress);
}
[WebMethod]
public int SetDistributionListPrimaryEmailAddress(int itemId, int accountId, string emailAddress)
{
return ExchangeServerController.SetDistributionListPrimaryEmailAddress(itemId, accountId, emailAddress);
}
[WebMethod]
public int DeleteDistributionListEmailAddresses(int itemId, int accountId, string[] emailAddresses)
{
return ExchangeServerController.DeleteDistributionListEmailAddresses(itemId, accountId, emailAddresses);
}
[WebMethod]
public int DeleteDistributionListEmailAddresses(int itemId, int accountId, string[] emailAddresses)
{
return ExchangeServerController.DeleteDistributionListEmailAddresses(itemId, accountId, emailAddresses);
}
[WebMethod]
public ResultObject SetDistributionListPermissions(int itemId, int accountId, string[] sendAsAccounts, string[] sendOnBehalfAccounts)
@ -470,9 +450,77 @@ namespace WebsitePanel.EnterpriseServer
{
return ExchangeServerController.GetDistributionListPermissions(itemId, accountId);
}
#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
[WebMethod]
public int CreatePublicFolder(int itemId, string parentFolder, string folderName,
@ -560,39 +608,7 @@ namespace WebsitePanel.EnterpriseServer
}
#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.
//
// Redistribution and use in source and binary forms, with or without modification,
@ -46,10 +46,10 @@ namespace WebsitePanel.EnterpriseServer
#region Organizations
[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);
}
[WebMethod]
@ -60,7 +60,7 @@ namespace WebsitePanel.EnterpriseServer
filterColumn, filterValue, sortColumn, startRow, maximumRows);
}
[WebMethod]
public List<Organization> GetOrganizations(int packageId, bool recursive)
{
@ -72,13 +72,13 @@ namespace WebsitePanel.EnterpriseServer
{
return OrganizationController.GetOrganizationUserSummuryLetter(itemId, accountId, pmm, emailMode, signup);
}
[WebMethod]
public int SendOrganizationUserSummuryLetter(int itemId, int accountId, bool signup, string to, string cc)
{
return OrganizationController.SendSummaryLetter(itemId, accountId, signup, to, cc);
}
[WebMethod]
public int DeleteOrganization(int itemId)
{
@ -97,6 +97,13 @@ namespace WebsitePanel.EnterpriseServer
return OrganizationController.GetOrganization(itemId);
}
[WebMethod]
public int GetAccountIdByUserPrincipalName(int itemId, string userPrincipalName)
{
return OrganizationController.GetAccountIdByUserPrincipalName(itemId, userPrincipalName);
}
#endregion
@ -107,13 +114,13 @@ namespace WebsitePanel.EnterpriseServer
{
return OrganizationController.AddOrganizationDomain(itemId, domainName);
}
[WebMethod]
public List<OrganizationDomainName> GetOrganizationDomains(int itemId)
{
return OrganizationController.GetOrganizationDomains(itemId);
}
[WebMethod]
public int DeleteOrganizationDomain(int itemId, int domainId)
{
@ -132,15 +139,22 @@ namespace WebsitePanel.EnterpriseServer
#region Users
[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;
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]
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);
}
@ -157,30 +171,30 @@ namespace WebsitePanel.EnterpriseServer
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, string externalEmail)
string webPage, string notes, string externalEmail, string subscriberNumber)
{
return OrganizationController.SetUserGeneralSettings(itemId, accountId, displayName,
password, hideAddressBook, disabled, locked, firstName, initials,
lastName, address, city, state, zip, country,
jobTitle, company, department, office, managerAccountName,
businessPhone, fax, homePhone, mobilePhone, pager,
webPage, notes, externalEmail);
webPage, notes, externalEmail, subscriberNumber);
}
[WebMethod]
public List<OrganizationUser> SearchAccounts(int itemId,
public List<OrganizationUser> SearchAccounts(int itemId,
string filterColumn, string filterValue, string sortColumn, bool includeMailboxes)
{
return OrganizationController.SearchAccounts(itemId,
filterColumn, filterValue, sortColumn, includeMailboxes);
}
[WebMethod]
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.
//
// 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)
{
DirectoryEntry de = new DirectoryEntry(path);
DirectoryEntry de = new DirectoryEntry(path);
de.RefreshCache();
return de;
}
@ -48,16 +48,16 @@ namespace WebsitePanel.Providers.HostedSolution
{
bool res = false;
DirectorySearcher deSearch = new DirectorySearcher
{
Filter =
("(&(objectClass=user)(samaccountname=" + samAccountName + "))")
};
{
Filter =
("(&(objectClass=user)(samaccountname=" + samAccountName + "))")
};
//get the group result
SearchResult results = deSearch.FindOne();
DirectoryEntry de = results.GetDirectoryEntry();
PropertyValueCollection props = de.Properties["memberOf"];
foreach (string str in props)
{
if (str.IndexOf(group) != -1)
@ -81,8 +81,8 @@ namespace WebsitePanel.Providers.HostedSolution
ou = parent.Children.Add(
string.Format("OU={0}", name),
parent.SchemaClassName);
parent.SchemaClassName);
ret = ou.Path;
ou.CommitChanges();
}
@ -100,13 +100,13 @@ namespace WebsitePanel.Providers.HostedSolution
public static void DeleteADObject(string path, bool removeChild)
{
DirectoryEntry entry = GetADObject(path);
if (removeChild && entry.Children != null)
foreach (DirectoryEntry child in entry.Children)
{
entry.Children.Remove(child);
}
DirectoryEntry parent = entry.Parent;
if (parent != null)
{
@ -115,7 +115,7 @@ namespace WebsitePanel.Providers.HostedSolution
}
}
public static void DeleteADObject(string path)
{
DirectoryEntry entry = GetADObject(path);
@ -141,21 +141,34 @@ namespace WebsitePanel.Providers.HostedSolution
}
}
else
{
{
if (oDE.Properties.Contains(name))
{
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];
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)
{
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)
{
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)
@ -254,29 +267,38 @@ namespace WebsitePanel.Providers.HostedSolution
return ret;
}
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");
newUserObject.Properties[ADAttributes.SAMAccountName].Add(user);
public static string CreateUser(string path, string upn, string user, string displayName, string password, bool enabled)
{
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);
newUserObject.CommitChanges();
newUserObject.Invoke(ADAttributes.SetPassword, password);
newUserObject.InvokeSet(ADAttributes.AccountDisabled, !enabled);
newUserObject.CommitChanges();
return newUserObject.Path;
}
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");
newGroupObject.Properties[ADAttributes.SAMAccountName].Add(group);
newGroupObject.Properties[ADAttributes.GroupType].Add(-2147483640);
@ -320,7 +342,7 @@ namespace WebsitePanel.Providers.HostedSolution
if (string.IsNullOrEmpty(primaryDomainController))
{
dn = string.Format("LDAP://{0}", dn);
}
else
dn = string.Format("LDAP://{0}/{1}", primaryDomainController, dn);
@ -358,7 +380,7 @@ namespace WebsitePanel.Providers.HostedSolution
DirectoryEntry ou = GetADObject(ouPath);
PropertyValueCollection prop = null;
prop = ou.Properties["uPNSuffixes"];
prop = ou.Properties["uPNSuffixes"];
if (prop != null)
{

View file

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

View file

@ -32,209 +32,219 @@ using System.Text;
namespace WebsitePanel.Providers.HostedSolution
{
public class ExchangeContact
{
string displayName;
string accountName;
string emailAddress;
bool hideFromAddressBook;
public class ExchangeContact
{
string displayName;
string accountName;
string emailAddress;
bool hideFromAddressBook;
string firstName;
string initials;
string lastName;
string firstName;
string initials;
string lastName;
string jobTitle;
string company;
string department;
string office;
ExchangeAccount managerAccount;
string jobTitle;
string company;
string department;
string office;
ExchangeAccount managerAccount;
string businessPhone;
string fax;
string homePhone;
string mobilePhone;
string pager;
string webPage;
string businessPhone;
string fax;
string homePhone;
string mobilePhone;
string pager;
string webPage;
string address;
string city;
string state;
string zip;
string country;
string address;
string city;
string state;
string zip;
string country;
string notes;
private int useMapiRichTextFormat;
ExchangeAccount[] acceptAccounts;
ExchangeAccount[] rejectAccounts;
bool requireSenderAuthentication;
string notes;
string sAMAccountName;
private int useMapiRichTextFormat;
public string DisplayName
{
get { return this.displayName; }
set { this.displayName = value; }
}
ExchangeAccount[] acceptAccounts;
ExchangeAccount[] rejectAccounts;
bool requireSenderAuthentication;
public string AccountName
{
get { return this.accountName; }
set { this.accountName = value; }
}
public string DisplayName
{
get { return this.displayName; }
set { this.displayName = value; }
}
public string EmailAddress
{
get { return this.emailAddress; }
set { this.emailAddress = value; }
}
public string AccountName
{
get { return this.accountName; }
set { this.accountName = value; }
}
public bool HideFromAddressBook
{
get { return this.hideFromAddressBook; }
set { this.hideFromAddressBook = value; }
}
public string EmailAddress
{
get { return this.emailAddress; }
set { this.emailAddress = value; }
}
public string FirstName
{
get { return this.firstName; }
set { this.firstName = value; }
}
public bool HideFromAddressBook
{
get { return this.hideFromAddressBook; }
set { this.hideFromAddressBook = value; }
}
public string Initials
{
get { return this.initials; }
set { this.initials = value; }
}
public string FirstName
{
get { return this.firstName; }
set { this.firstName = value; }
}
public string LastName
{
get { return this.lastName; }
set { this.lastName = value; }
}
public string Initials
{
get { return this.initials; }
set { this.initials = value; }
}
public string JobTitle
{
get { return this.jobTitle; }
set { this.jobTitle = value; }
}
public string LastName
{
get { return this.lastName; }
set { this.lastName = value; }
}
public string Company
{
get { return this.company; }
set { this.company = value; }
}
public string JobTitle
{
get { return this.jobTitle; }
set { this.jobTitle = value; }
}
public string Department
{
get { return this.department; }
set { this.department = value; }
}
public string Company
{
get { return this.company; }
set { this.company = value; }
}
public string Office
{
get { return this.office; }
set { this.office = value; }
}
public string Department
{
get { return this.department; }
set { this.department = value; }
}
public ExchangeAccount ManagerAccount
{
get { return this.managerAccount; }
set { this.managerAccount = value; }
}
public string Office
{
get { return this.office; }
set { this.office = value; }
}
public string BusinessPhone
{
get { return this.businessPhone; }
set { this.businessPhone = value; }
}
public ExchangeAccount ManagerAccount
{
get { return this.managerAccount; }
set { this.managerAccount = value; }
}
public string Fax
{
get { return this.fax; }
set { this.fax = value; }
}
public string BusinessPhone
{
get { return this.businessPhone; }
set { this.businessPhone = value; }
}
public string HomePhone
{
get { return this.homePhone; }
set { this.homePhone = value; }
}
public string Fax
{
get { return this.fax; }
set { this.fax = value; }
}
public string MobilePhone
{
get { return this.mobilePhone; }
set { this.mobilePhone = value; }
}
public string HomePhone
{
get { return this.homePhone; }
set { this.homePhone = value; }
}
public string Pager
{
get { return this.pager; }
set { this.pager = value; }
}
public string MobilePhone
{
get { return this.mobilePhone; }
set { this.mobilePhone = value; }
}
public string WebPage
{
get { return this.webPage; }
set { this.webPage = value; }
}
public string Pager
{
get { return this.pager; }
set { this.pager = value; }
}
public string Address
{
get { return this.address; }
set { this.address = value; }
}
public string WebPage
{
get { return this.webPage; }
set { this.webPage = value; }
}
public string City
{
get { return this.city; }
set { this.city = value; }
}
public string Address
{
get { return this.address; }
set { this.address = value; }
}
public string State
{
get { return this.state; }
set { this.state = value; }
}
public string City
{
get { return this.city; }
set { this.city = value; }
}
public string Zip
{
get { return this.zip; }
set { this.zip = value; }
}
public string State
{
get { return this.state; }
set { this.state = value; }
}
public string Country
{
get { return this.country; }
set { this.country = value; }
}
public string Zip
{
get { return this.zip; }
set { this.zip = value; }
}
public string Notes
{
get { return this.notes; }
set { this.notes = value; }
}
public string Country
{
get { return this.country; }
set { this.country = value; }
}
public ExchangeAccount[] AcceptAccounts
{
get { return this.acceptAccounts; }
set { this.acceptAccounts = value; }
}
public string Notes
{
get { return this.notes; }
set { this.notes = value; }
}
public ExchangeAccount[] RejectAccounts
{
get { return this.rejectAccounts; }
set { this.rejectAccounts = value; }
}
public ExchangeAccount[] AcceptAccounts
{
get { return this.acceptAccounts; }
set { this.acceptAccounts = value; }
}
public bool RequireSenderAuthentication
{
get { return requireSenderAuthentication; }
set { requireSenderAuthentication = value; }
}
public ExchangeAccount[] RejectAccounts
{
get { return this.rejectAccounts; }
set { this.rejectAccounts = value; }
}
public int UseMapiRichTextFormat
{
public bool RequireSenderAuthentication
{
get { return requireSenderAuthentication; }
set { requireSenderAuthentication = value; }
}
public int UseMapiRichTextFormat
{
get { return useMapiRichTextFormat; }
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
{
public class ExchangeDistributionList
{
public string DisplayName
{
get;
set;
}
public class ExchangeDistributionList
{
public string DisplayName
{
get;
set;
}
public string AccountName
{
get;
set;
}
public string AccountName
{
get;
set;
}
public bool HideFromAddressBook
{
get;
set;
}
public bool HideFromAddressBook
{
get;
set;
}
public ExchangeAccount[] MembersAccounts
{
get;
set;
}
public ExchangeAccount[] MembersAccounts
{
get;
set;
}
public ExchangeAccount ManagerAccount
{
get;
set;
}
public ExchangeAccount ManagerAccount
{
get;
set;
}
public string Notes
{
get;
set;
}
public string Notes
{
get;
set;
}
public ExchangeAccount[] AcceptAccounts
{
get;
set;
}
public ExchangeAccount[] AcceptAccounts
{
get;
set;
}
public ExchangeAccount[] RejectAccounts
{
get;
set;
}
public ExchangeAccount[] RejectAccounts
{
get;
set;
}
public bool RequireSenderAuthentication
{
get;
set;
}
public ExchangeAccount[] SendAsAccounts
{
get;
set;
}
public bool RequireSenderAuthentication
{
get;
set;
}
public ExchangeAccount[] SendOnBehalfAccounts
{
get;
set;
}
}
public ExchangeAccount[] SendAsAccounts
{
get;
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
{
bool CheckAccountCredentials(string username, string password);
// Organizations
// Organizations
string CreateMailEnableUser(string upn, string organizationId, string organizationDistinguishedName, ExchangeAccountType accountType,
string mailboxDatabase, string offlineAddressBook,
string accountName, bool enablePOP, bool enableIMAP,
bool enableOWA, bool enableMAPI, bool enableActiveSync,
int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB,
int keepDeletedItemsDays);
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);
string CreateMailEnableUser(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);
// 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 DeleteAuthoritativeDomain(string domain);
string[] GetAuthoritativeDomains();
string[] GetAuthoritativeDomains();
// 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,
int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays);
void DeleteMailbox(string accountName);
// Mailboxes
//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 maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB,bool hideFromAddressBook);
void DeleteMailbox(string accountName);
void DisableMailbox(string id);
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);
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);
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);
ExchangeEmailAddress[] GetMailboxEmailAddresses(string accountName);
void SetMailboxEmailAddresses(string accountName, string[] emailAddresses);
void SetMailboxPrimaryEmailAddress(string accountName, string emailAddress);
void SetMailboxPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] fullAccessAccounts);
ExchangeMailbox GetMailboxPermissions(string organizationId, string accountName);
ExchangeMailboxStatistics GetMailboxStatistics(string accountName);
ExchangeMailbox GetMailboxGeneralSettings(string accountName);
void SetMailboxGeneralSettings(string accountName, bool hideFromAddressBook, bool disabled);
ExchangeMailbox GetMailboxMailFlowSettings(string accountName);
void SetMailboxMailFlowSettings(string accountName, bool enableForwarding, string forwardingAccountName, bool forwardToBoth, string[] sendOnBehalfAccounts, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication);
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, int maxRecipients, int maxSendMessageSizeKB, int maxReceiveMessageSizeKB);
ExchangeEmailAddress[] GetMailboxEmailAddresses(string accountName);
void SetMailboxEmailAddresses(string accountName, string[] emailAddresses);
void SetMailboxPrimaryEmailAddress(string accountName, string emailAddress);
void SetMailboxPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] fullAccessAccounts);
ExchangeMailbox GetMailboxPermissions(string organizationId, string accountName);
ExchangeMailboxStatistics GetMailboxStatistics(string accountName);
// Contacts
void CreateContact(string organizationId, string organizationDistinguishedName, string contactDisplayName, string contactAccountName, string contactEmail, string defaultOrganizationDomain);
void DeleteContact(string accountName);
ExchangeContact GetContactGeneralSettings(string accountName);
// Contacts
void CreateContact(string organizationId, string organizationDistinguishedName, string contactDisplayName, string contactAccountName, string contactEmail, string defaultOrganizationDomain);
void DeleteContact(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);
ExchangeContact GetContactMailFlowSettings(string accountName);
void SetContactMailFlowSettings(string accountName, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication);
ExchangeContact GetContactMailFlowSettings(string accountName);
void SetContactMailFlowSettings(string accountName, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication);
// Distribution Lists
void CreateDistributionList(string organizationId, string organizationDistinguishedName, string displayName, string accountName, string name, string domain, string managedBy);
void DeleteDistributionList(string accountName);
ExchangeDistributionList GetDistributionListGeneralSettings(string accountName);
void SetDistributionListGeneralSettings(string accountName, string displayName, bool hideFromAddressBook, string managedBy, string[] memebers, string notes);
void AddDistributionListMembers(string accountName, string[] memberAccounts);
void RemoveDistributionListMembers(string accountName, string[] memberAccounts);
ExchangeDistributionList GetDistributionListMailFlowSettings(string accountName);
void SetDistributionListMailFlowSettings(string accountName, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication);
ExchangeEmailAddress[] GetDistributionListEmailAddresses(string accountName);
void SetDistributionListEmailAddresses(string accountName, string[] emailAddresses);
void SetDistributionListPrimaryEmailAddress(string accountName, string emailAddress);
ExchangeDistributionList GetDistributionListPermissions(string organizationId, string accountName);
void SetDistributionListPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] sendOnBehalfAccounts);
// Distribution Lists
void CreateDistributionList(string organizationId, string organizationDistinguishedName, string displayName, string accountName, string name, string domain, string managedBy, string[] addressLists);
void DeleteDistributionList(string accountName);
ExchangeDistributionList GetDistributionListGeneralSettings(string accountName);
void SetDistributionListGeneralSettings(string accountName, string displayName, bool hideFromAddressBook, string managedBy, string[] memebers, string notes, string[] addressLists);
void AddDistributionListMembers(string accountName, string[] memberAccounts, string[] addressLists);
void RemoveDistributionListMembers(string accountName, string[] memberAccounts, string[] addressLists);
ExchangeDistributionList GetDistributionListMailFlowSettings(string accountName);
void SetDistributionListMailFlowSettings(string accountName, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication, string[] addressLists);
ExchangeEmailAddress[] GetDistributionListEmailAddresses(string accountName);
void SetDistributionListEmailAddresses(string accountName, string[] emailAddresses, string[] addressLists);
void SetDistributionListPrimaryEmailAddress(string accountName, string emailAddress, string[] addressLists);
ExchangeDistributionList GetDistributionListPermissions(string organizationId, string accountName);
void SetDistributionListPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] sendOnBehalfAccounts, string[] addressLists);
// Public Folders
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);
long GetPublicFolderSize(string folder);
//ActiveSync
void CreateOrganizationActiveSyncPolicy(string organizationId);
ExchangeActiveSyncPolicy GetActiveSyncPolicy(string organizationId);
void SetActiveSyncPolicy(string organizationId, bool allowNonProvisionableDevices, bool attachmentsEnabled,
int maxAttachmentSizeKB, bool uncAccessEnabled, bool wssAccessEnabled, bool devicePasswordEnabled,
bool alphanumericPasswordRequired, bool passwordRecoveryEnabled, bool deviceEncryptionEnabled,
bool allowSimplePassword, int maxPasswordFailedAttempts, int minPasswordLength, int inactivityLockMin,
int passwordExpirationDays, int passwordHistory, int refreshInterval);
//ActiveSync
void CreateOrganizationActiveSyncPolicy(string organizationId);
ExchangeActiveSyncPolicy GetActiveSyncPolicy(string organizationId);
void SetActiveSyncPolicy(string organizationId, bool allowNonProvisionableDevices, bool attachmentsEnabled,
int maxAttachmentSizeKB, bool uncAccessEnabled, bool wssAccessEnabled, bool devicePasswordEnabled,
bool alphanumericPasswordRequired, bool passwordRecoveryEnabled, bool deviceEncryptionEnabled,
bool allowSimplePassword, int maxPasswordFailedAttempts, int minPasswordLength, int inactivityLockMin,
int passwordExpirationDays, int passwordHistory, int refreshInterval);
//Mobile Devices
ExchangeMobileDevice[] GetMobileDevices(string accountName);
ExchangeMobileDevice GetMobileDevice(string id);
void WipeDataFromDevice(string id);
void CancelRemoteWipeRequest(string id);
void RemoveDevice(string id);
}
//Mobile Devices
ExchangeMobileDevice[] GetMobileDevices(string accountName);
ExchangeMobileDevice GetMobileDevice(string id);
void WipeDataFromDevice(string id);
void CancelRemoteWipeRequest(string id);
void RemoveDevice(string id);
}
}

View file

@ -33,10 +33,10 @@ namespace WebsitePanel.Providers.HostedSolution
public interface IOrganization
{
Organization CreateOrganization(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);
@ -49,7 +49,7 @@ namespace WebsitePanel.Providers.HostedSolution
string jobTitle,
string company, string department, string office, string managerAccountName,
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);
@ -58,5 +58,7 @@ namespace WebsitePanel.Providers.HostedSolution
void CreateOrganizationDomain(string organizationDistinguishedName, string domain);
PasswordPolicyResult GetPasswordPolicy();
string GetSamAccountNameByUserPrincipalName(string organizationId, string userPrincipalName);
}
}

View file

@ -41,12 +41,12 @@ namespace WebsitePanel.Providers.HostedSolution
private string addressList;
private string roomsAddressList;
private string globalAddressList;
private string addressBookPolicy;
private string database;
private string securityGroup;
private string lyncTenantId;
private int diskSpace;
private int issueWarningKB;
private int prohibitSendKB;
private int prohibitSendReceiveKB;
private int keepDeletedItemsDays;
@ -125,7 +125,7 @@ namespace WebsitePanel.Providers.HostedSolution
get { return crmCurrency; }
set { crmCurrency = value; }
}
[Persistent]
public string DistinguishedName
{
@ -151,7 +151,7 @@ namespace WebsitePanel.Providers.HostedSolution
{
return defaultDomain;
}
}
}
[Persistent]
@ -182,6 +182,13 @@ namespace WebsitePanel.Providers.HostedSolution
set { globalAddressList = value; }
}
[Persistent]
public string AddressBookPolicy
{
get { return addressBookPolicy; }
set { addressBookPolicy = value; }
}
[Persistent]
public string Database
{
@ -203,27 +210,6 @@ namespace WebsitePanel.Providers.HostedSolution
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]
public int KeepDeletedItemsDays
{
@ -233,5 +219,15 @@ namespace WebsitePanel.Providers.HostedSolution
[Persistent]
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 itemId;
private int packageId;
private string subscriberNumber;
private string primaryEmailAddress;
private string accountPassword;
@ -298,5 +299,13 @@ namespace WebsitePanel.Providers.HostedSolution
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\BlackBerryStatsItem.cs" />
<Compile Include="HostedSolution\BlackBerryUserDeleteState.cs" />
<Compile Include="HostedSolution\ExchangeMailboxPlan.cs" />
<Compile Include="HostedSolution\TransactionAction.cs" />
<Compile Include="ResultObjects\HeliconApe.cs" />
<Compile Include="HostedSolution\ExchangeMobileDevice.cs" />
<Compile Include="HostedSolution\IOCSEdgeServer.cs" />

View file

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

View file

@ -30,228 +30,180 @@ using System.Collections.Generic;
namespace WebsitePanel.Providers.HostedSolution
{
internal class ExchangeTransaction
{
List<TransactionAction> actions = null;
internal class ExchangeTransaction
{
List<TransactionAction> actions = null;
public ExchangeTransaction()
{
actions = new List<TransactionAction>();
}
public ExchangeTransaction()
{
actions = new List<TransactionAction>();
}
internal List<TransactionAction> Actions
{
get { return actions; }
}
internal List<TransactionAction> Actions
{
get { return actions; }
}
internal void RegisterNewOrganizationUnit(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateOrganizationUnit;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewOrganizationUnit(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateOrganizationUnit;
action.Id = id;
Actions.Add(action);
}
public void RegisterNewDistributionGroup(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateDistributionGroup;
action.Id = id;
Actions.Add(action);
}
public void RegisterNewDistributionGroup(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateDistributionGroup;
action.Id = id;
Actions.Add(action);
}
public void RegisterMailEnabledDistributionGroup(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.EnableDistributionGroup;
action.Id = id;
Actions.Add(action);
}
public void RegisterMailEnabledDistributionGroup(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.EnableDistributionGroup;
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 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)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateRoomsAddressList;
action.ActionType = TransactionAction.TransactionActionTypes.CreateAddressList;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewAddressPolicy(string id)
internal void RegisterNewOfflineAddressBook(string id)
{
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;
Actions.Add(action);
}
internal void RegisterNewOfflineAddressBook(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateOfflineAddressBook;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewAcceptedDomain(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateAcceptedDomain;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewActiveSyncPolicy(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateActiveSyncPolicy;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewUPNSuffix(string id, string suffix)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.AddUPNSuffix;
action.Id = id;
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)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateAcceptedDomain;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewContact(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateContact;
action.Id = id;
Actions.Add(action);
}
internal void RegisterNewUPNSuffix(string id, string suffix)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.AddUPNSuffix;
action.Id = id;
action.Suffix = suffix;
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 RegisterNewMailbox(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateMailbox;
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 RegisterNewContact(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreateContact;
action.Id = id;
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 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);
}
}
}

View file

@ -342,9 +342,9 @@ namespace WebsitePanel.Providers.HostedSolution
#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)
@ -356,36 +356,43 @@ namespace WebsitePanel.Providers.HostedSolution
if (string.IsNullOrEmpty(organizationId))
throw new ArgumentNullException("organizationId");
if (string.IsNullOrEmpty(loginName))
throw new ArgumentNullException("loginName");
if (string.IsNullOrEmpty(password))
throw new ArgumentNullException("password");
bool userCreated = false;
bool userCreated = false;
string userPath = null;
try
{
string path = GetOrganizationPath(organizationId);
userPath= GetUserPath(organizationId, loginName);
userPath = GetUserPath(organizationId, loginName);
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);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.UserPrincipalName, upn);
entry.CommitChanges();
userCreated = true;
HostedSolutionLog.DebugInfo("User created: {0}", displayName);
}
else
{
HostedSolutionLog.DebugInfo("AD_OBJECT_ALREADY_EXISTS: {0}", userPath);
HostedSolutionLog.LogEnd("CreateUserInternal");
return Errors.AD_OBJECT_ALREADY_EXISTS;
string groupPath = GetGroupPath(organizationId);
}
string groupPath = GetGroupPath(organizationId);
HostedSolutionLog.DebugInfo("Group retrieved: {0}", groupPath);
ActiveDirectoryUtils.AddUserToGroup(userPath, groupPath);
HostedSolutionLog.DebugInfo("Added to group: {0}", groupPath);
}
catch(Exception e)
catch (Exception e)
{
HostedSolutionLog.LogError(e);
try
@ -393,10 +400,12 @@ namespace WebsitePanel.Providers.HostedSolution
if (userCreated)
ActiveDirectoryUtils.DeleteADObject(userPath);
}
catch(Exception ex)
catch (Exception ex)
{
HostedSolutionLog.LogError(ex);
}
}
return Errors.AD_OBJECT_ALREADY_EXISTS;
}
HostedSolutionLog.LogEnd("CreateUserInternal");
@ -492,10 +501,10 @@ namespace WebsitePanel.Providers.HostedSolution
DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path);
OrganizationUser retUser = new OrganizationUser();
retUser.FirstName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.FirstName);
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.JobTitle = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.JobTitle);
retUser.Company = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Company);
@ -513,10 +522,11 @@ namespace WebsitePanel.Providers.HostedSolution
retUser.Zip = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Zip);
retUser.Country = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Country);
retUser.Notes = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Notes);
retUser.ExternalEmail = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.ExternalEmail);
retUser.Disabled = (bool)entry.InvokeGet(ADAttributes.AccountDisabled);
retUser.ExternalEmail = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.ExternalEmail);
retUser.Disabled = (bool)entry.InvokeGet(ADAttributes.AccountDisabled);
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.Locked = (bool)entry.InvokeGet(ADAttributes.AccountLocked);
@ -578,7 +588,7 @@ namespace WebsitePanel.Providers.HostedSolution
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.FirstName, firstName);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.LastName, lastName);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.DisplayName, displayName);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Initials, initials);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.JobTitle, jobTitle);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Company, company);
@ -596,7 +606,7 @@ namespace WebsitePanel.Providers.HostedSolution
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Zip, zip);
ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Country, country);
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));
@ -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
#region Domains

View file

@ -131,6 +131,7 @@
<Compile Include="BlackBerry5Provider.cs" />
<Compile Include="BlackBerryProvider.cs" />
<Compile Include="Exchange2010.cs" />
<Compile Include="Exchange2010SP2.cs" />
<Compile Include="HostedSharePointServer2010.cs" />
<Compile Include="OCSEdge2007R2.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>
// 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
// the code is regenerated.
@ -39,17 +11,17 @@
//
// 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 {
using System.Diagnostics;
using System.Xml.Serialization;
using System.Web.Services;
using System.ComponentModel;
using System.Web.Services.Protocols;
using System;
using System.Xml.Serialization;
using System.Diagnostics;
using WebsitePanel.Providers.Common;
using WebsitePanel.Providers.ResultObjects;
/// <remarks/>
[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 GeUserGeneralSettingsOperationCompleted;
private System.Threading.SendOrPostCallback GetUserGeneralSettingsOperationCompleted;
private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted;
@ -82,9 +54,11 @@ namespace WebsitePanel.Providers.HostedSolution {
private System.Threading.SendOrPostCallback GetPasswordPolicyOperationCompleted;
private System.Threading.SendOrPostCallback GetSamAccountNameByUserPrincipalNameOperationCompleted;
/// <remarks/>
public Organizations() {
this.Url = "http://exchange-dev:9003/Organizations.asmx";
this.Url = "http://localhost:9006/Organizations.asmx";
}
/// <remarks/>
@ -103,7 +77,7 @@ namespace WebsitePanel.Providers.HostedSolution {
public event DeleteUserCompletedEventHandler DeleteUserCompleted;
/// <remarks/>
public event GeUserGeneralSettingsCompletedEventHandler GeUserGeneralSettingsCompleted;
public event GetUserGeneralSettingsCompletedEventHandler GetUserGeneralSettingsCompleted;
/// <remarks/>
public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted;
@ -117,6 +91,9 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/>
public event GetPasswordPolicyCompletedEventHandler GetPasswordPolicyCompleted;
/// <remarks/>
public event GetSamAccountNameByUserPrincipalNameCompletedEventHandler GetSamAccountNameByUserPrincipalNameCompleted;
/// <remarks/>
[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)]
@ -244,14 +221,15 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/>
[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)]
public void CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled) {
this.Invoke("CreateUser", new object[] {
public int CreateUser(string organizationId, string loginName, string displayName, string upn, string password, bool enabled) {
object[] results = this.Invoke("CreateUser", new object[] {
organizationId,
loginName,
displayName,
upn,
password,
enabled});
return ((int)(results[0]));
}
/// <remarks/>
@ -266,8 +244,9 @@ namespace WebsitePanel.Providers.HostedSolution {
}
/// <remarks/>
public void EndCreateUser(System.IAsyncResult asyncResult) {
this.EndInvoke(asyncResult);
public int EndCreateUser(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((int)(results[0]));
}
/// <remarks/>
@ -292,7 +271,7 @@ namespace WebsitePanel.Providers.HostedSolution {
private void OnCreateUserOperationCompleted(object arg) {
if ((this.CreateUserCompleted != null)) {
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/>
[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)]
public OrganizationUser GeUserGeneralSettings(string loginName, string organizationId) {
object[] results = this.Invoke("GeUserGeneralSettings", new object[] {
[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 GetUserGeneralSettings(string loginName, string organizationId) {
object[] results = this.Invoke("GetUserGeneralSettings", new object[] {
loginName,
organizationId});
return ((OrganizationUser)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGeUserGeneralSettings(string loginName, string organizationId, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GeUserGeneralSettings", new object[] {
public System.IAsyncResult BeginGetUserGeneralSettings(string loginName, string organizationId, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetUserGeneralSettings", new object[] {
loginName,
organizationId}, callback, asyncState);
}
/// <remarks/>
public OrganizationUser EndGeUserGeneralSettings(System.IAsyncResult asyncResult) {
public OrganizationUser EndGetUserGeneralSettings(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((OrganizationUser)(results[0]));
}
/// <remarks/>
public void GeUserGeneralSettingsAsync(string loginName, string organizationId) {
this.GeUserGeneralSettingsAsync(loginName, organizationId, null);
public void GetUserGeneralSettingsAsync(string loginName, string organizationId) {
this.GetUserGeneralSettingsAsync(loginName, organizationId, null);
}
/// <remarks/>
public void GeUserGeneralSettingsAsync(string loginName, string organizationId, object userState) {
if ((this.GeUserGeneralSettingsOperationCompleted == null)) {
this.GeUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGeUserGeneralSettingsOperationCompleted);
public void GetUserGeneralSettingsAsync(string loginName, string organizationId, object userState) {
if ((this.GetUserGeneralSettingsOperationCompleted == null)) {
this.GetUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetUserGeneralSettingsOperationCompleted);
}
this.InvokeAsync("GeUserGeneralSettings", new object[] {
this.InvokeAsync("GetUserGeneralSettings", new object[] {
loginName,
organizationId}, this.GeUserGeneralSettingsOperationCompleted, userState);
organizationId}, this.GetUserGeneralSettingsOperationCompleted, userState);
}
private void OnGeUserGeneralSettingsOperationCompleted(object arg) {
if ((this.GeUserGeneralSettingsCompleted != null)) {
private void OnGetUserGeneralSettingsOperationCompleted(object arg) {
if ((this.GetUserGeneralSettingsCompleted != null)) {
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/>
public new void CancelAsync(object userState) {
base.CancelAsync(userState);
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void OrganizationExistsCompletedEventHandler(object sender, OrganizationExistsCompletedEventArgs e);
@ -818,7 +833,29 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/>
[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/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
@ -826,17 +863,17 @@ namespace WebsitePanel.Providers.HostedSolution {
/// <remarks/>
[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/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class GeUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
public partial class GetUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
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) {
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.
//
// Redistribution and use in source and binary forms, with or without modification,
@ -31,125 +31,125 @@ using System.Diagnostics;
namespace WebsitePanel.Server.Utils
{
/// <summary>
/// Application log.
/// </summary>
public sealed class Log
{
/// <summary>
/// Application log.
/// </summary>
public sealed class Log
{
private static TraceSwitch logSeverity = new TraceSwitch("Log", "General trace switch");
private Log()
{
}
/// <summary>
/// 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 { }
}
private Log()
{
}
/// <summary>
/// Write error to the log.
/// </summary>
/// <param name="ex">Exception.</param>
public static void WriteError(Exception ex)
{
/// <summary>
/// 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 { }
}
try
{
if (ex != null)
{
WriteError(ex.Message, ex);
}
}
catch { }
}
/// <summary>
/// Write error to the log.
/// </summary>
/// <param name="ex">Exception.</param>
public static void WriteError(Exception ex)
{
/// <summary>
/// Write info message to log
/// </summary>
/// <param name="message"></param>
public static void WriteInfo(string message, params object[] args)
{
try
{
if (logSeverity.TraceInfo)
{
Trace.TraceInformation(FormatIncomingMessage(message, args));
}
}
catch { }
}
try
{
if (ex != null)
{
WriteError(ex.Message, ex);
}
}
catch { }
}
/// <summary>
/// Write info message to log
/// </summary>
/// <param name="message"></param>
public static void WriteWarning(string message, params object[] args)
{
try
{
if (logSeverity.TraceWarning)
{
Trace.TraceWarning(FormatIncomingMessage(message, args));
}
}
catch { }
}
/// <summary>
/// Write info message to log
/// </summary>
/// <param name="message"></param>
public static void WriteInfo(string message, params object[] args)
{
try
{
if (logSeverity.TraceInfo)
{
Trace.TraceInformation(FormatIncomingMessage(message, "INFO", args));
}
}
catch { }
}
/// <summary>
/// Write start message to log
/// </summary>
/// <param name="message"></param>
/// <summary>
/// Write info message to log
/// </summary>
/// <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)
{
try
{
if (logSeverity.TraceInfo)
{
Trace.TraceInformation(FormatIncomingMessage(message, args));
}
}
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 { }
}
{
try
{
if (logSeverity.TraceInfo)
{
Trace.TraceInformation(FormatIncomingMessage(message, "START", args));
}
}
catch { }
}
private static string FormatIncomingMessage(string message, params object[] args)
{
//
if (args.Length > 0)
{
message = String.Format(message, args);
}
//
return String.Concat(String.Format("[{0:G}] END: ", DateTime.Now), message);
}
}
/// <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, "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;
}
}
[WebMethod, SoapHeader("settings")]
public Organization CreateOrganization(string organizationId)
{
try
{
Log.WriteStart("'{0}' CreateOrganization", ProviderSettings.ProviderName);
Log.WriteStart("'{0}' CreateOrganization", ProviderSettings.ProviderName);
Organization ret = Organization.CreateOrganization(organizationId);
Log.WriteEnd("'{0}' CreateOrganization", ProviderSettings.ProviderName);
return ret;
@ -85,21 +85,17 @@ namespace WebsitePanel.Server
throw;
}
}
[WebMethod, SoapHeader("settings")]
public void DeleteOrganization(string organizationId)
{
Organization.DeleteOrganization(organizationId);
Organization.DeleteOrganization(organizationId);
}
[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);
Organization.CreateUser(organizationId, loginName, displayName, upn, password, enabled);
Log.WriteEnd("'{0}' CreateUser", ProviderSettings.ProviderName);
return Organization.CreateUser(organizationId, loginName, displayName, upn, password, enabled);
}
[WebMethod, SoapHeader("settings")]
@ -109,7 +105,7 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public OrganizationUser GeUserGeneralSettings(string loginName, string organizationId)
public OrganizationUser GetUserGeneralSettings(string loginName, string organizationId)
{
return Organization.GetUserGeneralSettings(loginName, organizationId);
}
@ -132,9 +128,9 @@ namespace WebsitePanel.Server
[WebMethod, SoapHeader("settings")]
public void DeleteOrganizationDomain(string organizationDistinguishedName, string domain)
{
Organization.DeleteOrganizationDomain(organizationDistinguishedName, domain);
Organization.DeleteOrganizationDomain(organizationDistinguishedName, domain);
}
[WebMethod, SoapHeader("settings")]
public void CreateOrganizationDomain(string organizationDistinguishedName, string domain)
{
@ -147,5 +143,10 @@ namespace WebsitePanel.Server
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 -->
<PortalName>WebsitePanel</PortalName>
<!-- Enterprise Server -->
<EnterpriseServer>http://localhost:9002</EnterpriseServer>
<EnterpriseServer>http://localhost:9005</EnterpriseServer>
<!-- General Settings -->
<CultureCookieName>UserCulture</CultureCookieName>
<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_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="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="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" />

View file

@ -2806,7 +2806,7 @@
<value>Contacts per Organization</value>
</data>
<data name="Quota.Exchange2007.DiskSpace" xml:space="preserve">
<value>Max mailbox size, MB</value>
<value>Mailbox storage, MB</value>
</data>
<data name="Quota.Exchange2007.DistributionLists" xml:space="preserve">
<value>Distribution Lists per Organization</value>
@ -2850,6 +2850,18 @@
<data name="Quota.Exchange2007.PublicFolders" xml:space="preserve">
<value>Public Folders per Organization</value>
</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">
<value>Hosted Exchange</value>
</data>
@ -4990,4 +5002,7 @@
<data name="Quota.HostedSharePoint.UseSharedSSL" xml:space="preserve">
<value>Use shared SSL Root</value>
</data>
<data name="Quota.Exchange2007.IsConsumer" xml:space="preserve">
<value>Consumer Organization Support</value>
</data>
</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>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCancel.Text" xml:space="preserve">
<value>Cancel</value>
@ -219,4 +219,7 @@
<data name="valRequirePlan.ErrorMessage" xml:space="preserve">
<value>Please select hosting plan</value>
</data>
<data name="chkIntegratedOUProvisioning.Text" xml:space="preserve">
<value>Automated Hosted Organization Provisioning</value>
</data>
</root>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating ActiveSync settings...');</value>
@ -151,7 +151,7 @@
<value>Windows SharePoint Services</value>
</data>
<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.
&lt;/p&gt;</value>
</data>

View file

@ -112,13 +112,16 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCancel" xml:space="preserve">
<value>Cancel</value>
</data>
<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 name="locTitle.Text" xml:space="preserve">
<value>Add Domain Name</value>

View file

@ -112,20 +112,17 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<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">
<value>ActiveSync</value>
</data>
<data name="chkHideFromAddressBook" xml:space="preserve">
<value>Hide from Addressbook</value>
</data>
<data name="chkIMAP.Text" xml:space="preserve">
<value>IMAP</value>
</data>
@ -135,20 +132,11 @@
<data name="chkOWA.Text" xml:space="preserve">
<value>OWA/HTTP</value>
</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">
<value>POP3</value>
</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">
<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 name="locDays.Text" xml:space="preserve">
<value>days</value>
@ -162,11 +150,17 @@
<data name="locKeepDeletedItems.Text" xml:space="preserve">
<value>Keep deleted items for:</value>
</data>
<data name="locLastLogoff.Text" xml:space="preserve">
<value>Last Logoff:</value>
<data name="locMailboxSize.Text" xml:space="preserve">
<value>Mailbox size:</value>
</data>
<data name="locLastLogon.Text" xml:space="preserve">
<value>Last Logon:</value>
<data name="locMaxReceiveMessageSizeKB.Text" xml:space="preserve">
<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 name="locProhibitSend.Text" xml:space="preserve">
<value>Prohibit send at:</value>
@ -175,13 +169,7 @@
<value>Prohibit send and receive at:</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</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>
<value>Add Mailbox plan</value>
</data>
<data name="locWhenSizeExceeds.Text" xml:space="preserve">
<value>When the mailbox size exceeds the indicated amount:</value>
@ -189,19 +177,25 @@
<data name="secDeleteRetention.Text" xml:space="preserve">
<value>Delete Item Retention</value>
</data>
<data name="secDomainUser.Text" xml:space="preserve">
<value>Domain User Name</value>
</data>
<data name="secMailboxFeatures.Text" xml:space="preserve">
<value>Mailbox Features</value>
</data>
<data name="secStatistics.Text" xml:space="preserve">
<value>Mailbox Statistics</value>
<data name="secMailboxGeneral.Text" xml:space="preserve">
<value>General</value>
</data>
<data name="secMailboxPlan.Text" xml:space="preserve">
<value>Mailbox plan</value>
</data>
<data name="secStorageQuotas.Text" xml:space="preserve">
<value>Mailbox Quotas</value>
<value>Quotas</value>
</data>
<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>
</root>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating contact settings...');</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating contact settings...');</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreateContact.Text" xml:space="preserve">
<value>Create New Contact</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreate.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Creating contact...');</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreate.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Creating distribution list...');</value>
@ -124,7 +124,7 @@
<value>Create Distribution List</value>
</data>
<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 name="locAccount.Text" xml:space="preserve">
<value>E-mail Address: *</value>
@ -132,22 +132,22 @@
<data name="locDisplayName.Text" xml:space="preserve">
<value>Display Name: *</value>
</data>
<data name="locManagedBy.Text" xml:space="preserve">
<value>Managed by: *</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Create New Distribution List</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Distribution Lists</value>
</data>
<data name="valManager.ErrorMessage" xml:space="preserve">
<value>Please specify a manager</value>
</data>
<data name="valRequireDisplayName.ErrorMessage" xml:space="preserve">
<value>Enter Display Name</value>
</data>
<data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value>
</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>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreate.OnClientClick" xml:space="preserve">
<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;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>
</data>
@ -156,6 +156,9 @@
<data name="locPassword.Text" xml:space="preserve">
<value>Password: *</value>
</data>
<data name="locSubscriberNumber.Text" xml:space="preserve">
<value>Subscriber Number: *</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Create New Mailbox</value>
</data>
@ -183,4 +186,10 @@
<data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value>
</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>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnAddEmail.Text" xml:space="preserve">
<value>Add E-mail Address</value>
@ -127,7 +127,7 @@
<value>Set As Primary</value>
</data>
<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 name="gvEmailAddress.Header" xml:space="preserve">
<value>E-mail Address</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating distribution list settings...');</value>
@ -144,13 +144,13 @@
<data name="Text.PageName" xml:space="preserve">
<value>Distribution Lists</value>
</data>
<data name="valManager.ErrorMessage" xml:space="preserve">
<value>Please specify a manager</value>
</data>
<data name="valRequireDisplayName.ErrorMessage" xml:space="preserve">
<value>Enter Display Name</value>
</data>
<data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value>
</data>
<data name="valManager.ErrorMessage" xml:space="preserve">
<value>Please specify a manager</value>
</data>
</root>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating distribution list settings...');</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreateList.Text" xml:space="preserve">
<value>Create New Distribution List</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnAddDomain.Text" xml:space="preserve">
<value>Add New Domain</value>
@ -142,11 +142,9 @@
<value>Domain Name</value>
</data>
<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;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>
&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>
</data>
<data name="locQuota.Text" xml:space="preserve">
<value>Total Domain Names Used:</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnAdd.Text" xml:space="preserve">
<value>Add record</value>
@ -130,7 +130,7 @@
<value>Save</value>
</data>
<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 name="gvRecords.Empty" xml:space="preserve">
<value>No DNS records defined.</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnAddEmail.Text" xml:space="preserve">
<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>
</data>
<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 name="gvEmailAddress.Header" xml:space="preserve">
<value>E-mail Address</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<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>
</data>
<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 name="locAddress.Text" xml:space="preserve">
<value>Address:</value>
<data name="locMailboxplanName.Text" xml:space="preserve">
<value>Mailbox plan:</value>
</data>
<data name="locBusinessPhone.Text" xml:space="preserve">
<value>Business Phone:</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 name="locQuota.Text" xml:space="preserve">
<value>Mailbox size:</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="locWebPage.Text" xml:space="preserve">
<value>Web Page:</value>
<data name="secCalendarSettings.Text" xml:space="preserve">
<value>Calendar Settings</value>
</data>
<data name="locZip.Text" xml:space="preserve">
<value>Zip/Postal Code:</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 name="secGeneral.Text" xml:space="preserve">
<value>General</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Mailboxes</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating mailbox settings...');</value>

View file

@ -112,13 +112,13 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="deviceUserAgentColumn.HeaderText" xml:space="preserve">
<value>User Agent</value>
<data name="cmdDelete.OnClientClick" xml:space="preserve">
<value>return confirm('Are you sure you want to remove the device partnership?');</value>
</data>
<data name="deviceStatus.HeaderText" xml:space="preserve">
<value>Status</value>
@ -126,34 +126,34 @@
<data name="deviceTypeColumn.HeaderText" xml:space="preserve">
<value>Type</value>
</data>
<data name="deviceUserAgentColumn.HeaderText" xml:space="preserve">
<value>User Agent</value>
</data>
<data name="gvMobile.EmptyDataText" xml:space="preserve">
<value>There are no mobile devices.</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>
<data name="lastSyncTimeColumn.HeaderText" xml:space="preserve">
<value>Last Sync Time</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="OK" xml:space="preserve">
<value>OK</value>
</data>
<data name="PendingWipe" xml:space="preserve">
<value>Pending Wipe</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="Unknown" xml:space="preserve">
<value>Unknown</value>
</data>
<data name="WipeSuccessful" xml:space="preserve">
<value>Wipe Successful</value>
</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>

View file

@ -112,11 +112,26 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<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">
<value>Device wipe acnowledge time:</value>
</data>
@ -165,37 +180,22 @@
<data name="locStatus.Text" xml:space="preserve">
<value>Status:</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="OK" xml:space="preserve">
<value>OK</value>
</data>
<data name="PendingWipe" xml:space="preserve">
<value>Pending wipe</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Edit Mailbox</value>
</data>
<data name="Unknown" xml:space="preserve">
<value>Unknown</value>
</data>
<data name="WipeSuccessful" xml:space="preserve">
<value>Wipe successful</value>
</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>

View file

@ -112,17 +112,23 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating mailbox permissions...');</value>
</data>
<data name="btnSave.Text" xml:space="preserve">
<value>Save Changes</value>
</data>
<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>
</data>
<data name="grandPermission.Text" xml:space="preserve">
<value>Grant this permission to:</value>
</data>
<data name="secFullAccessPermission.Text" xml:space="preserve">
<value>Full Access</value>
</data>
@ -132,10 +138,4 @@
<data name="Text.PageName" xml:space="preserve">
<value>Permissions</value>
</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>

View file

@ -112,36 +112,42 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="locDomainTemplates.Text" xml:space="preserve">
<value>Domain Templates</value>
<data name="btnAddMailboxPlan.Text" xml:space="preserve">
<value>Add New Mailbox plan</value>
</data>
<data name="locEcpDomain.Text" xml:space="preserve">
<value>Exchange Control Panel URL:</value>
<data name="btnSetDefaultMailboxPlan.Text" xml:space="preserve">
<value>Set Default Mailbox plan</value>
</data>
<data name="locEcpURLDescr.Text" xml:space="preserve">
<value>You can use [DOMAIN_NAME] variable for organization default domain.</value>
<data name="cmdDelete.OnClientClick" xml:space="preserve">
<value>if(!confirm('Are you sure you want to delete selected mailbox plan?')) return false; else ShowProgressDialog('Deleting Mailbox plan...');</value>
</data>
<data name="locOfferID.Text" xml:space="preserve">
<value>Offer ID:</value>
<data name="cmdDelete.Text" xml:space="preserve">
<value>Delete</value>
</data>
<data name="locOrganizationTemplate.Text" xml:space="preserve">
<value>Organization Template</value>
<data name="cmdDelete.ToolTip" xml:space="preserve">
<value>Delete Mailbox plan</value>
</data>
<data name="locProgramID.Text" xml:space="preserve">
<value>Program ID:</value>
<data name="gvMailboxPlan.Header" xml:space="preserve">
<value>Mailbox plan</value>
</data>
<data name="locTemporaryDomain.Text" xml:space="preserve">
<value>Temporary domain:</value>
<data name="gvMailboxPlanDefault.Header" xml:space="preserve">
<value>Default Mailbox plan</value>
</data>
<data name="requireOfferID.Text" xml:space="preserve">
<value>*</value>
<data name="gvMailboxPlans.Empty" xml:space="preserve">
<value>No mailbox plans have been added yet. To add a new mailbox plan click "Add New Mailbox plan" button.</value>
</data>
<data name="requireProgramID.Text" xml:space="preserve">
<value>*</value>
<data name="HSFormComments.Text" xml:space="preserve">
<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>
</root>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSend.Text" xml:space="preserve">
<value>Send</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreateMailbox.Text" xml:space="preserve">
<value>Create New Mailbox</value>
@ -132,6 +132,9 @@
<data name="cmdSearch.AlternateText" xml:space="preserve">
<value>Search</value>
</data>
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
<value>Domain Account</value>
</data>
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
<value>Display Name</value>
</data>
@ -147,6 +150,12 @@
<data name="gvMailboxesEmail.Header" xml:space="preserve">
<value>Primary E-mail Address</value>
</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">
<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">
<value>Mailboxes</value>
</data>
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
<value>Domain Account</value>
</data>
</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>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<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>
@ -123,8 +123,11 @@
<data name="btnRecalculate.Text" xml:space="preserve">
<value>Recalculate Disk Space</value>
</data>
<data name="btnUsedSize.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Please wait...');</value>
</data>
<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 name="locAllocatedSize.Text" xml:space="preserve">
<value>Allocated Disk Space (MB):</value>
@ -136,7 +139,7 @@
<value>Storage Usage</value>
</data>
<data name="locUsedSize.Text" xml:space="preserve">
<value>Used Disk Space (MB):</value>
<value>Allocated Disk Space (MB):</value>
</data>
<data name="Text.PageName" xml:space="preserve">
<value>Storage Usage</value>
@ -144,7 +147,4 @@
<data name="Unlimited.Text" xml:space="preserve">
<value>Unlimited</value>
</data>
<data name="btnUsedSize.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Please wait...');</value>
</data>
</root>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnOK.Text" xml:space="preserve">
<value> OK </value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreate.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Creating Organization...');</value>
@ -124,7 +124,7 @@
<value>Create Organization</value>
</data>
<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 name="locOrganizationID.Text" xml:space="preserve">
<value>Organization ID: *</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreate.OnClientClick" xml:space="preserve">
<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;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>
</data>
@ -144,6 +144,9 @@
<data name="locPassword.Text" xml:space="preserve">
<value>Password: *</value>
</data>
<data name="locSubscriberNumber.Text" xml:space="preserve">
<value>Subscriber Number: *</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Create New User</value>
</data>
@ -156,4 +159,10 @@
<data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value>
</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>

View file

@ -112,57 +112,16 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HSFormComments.Text" xml:space="preserve">
<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;Organization statistics displays current status of the organization.&lt;/p&gt;</value>
</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">
<value>Created:</value>
</data>
@ -172,22 +131,82 @@
<data name="lblOrganizationName.Text" xml:space="preserve">
<value>Organization Name:</value>
</data>
<data name="lnkCRMUsers.Text" xml:space="preserve">
<value>CRM Users:</value>
</data>
<data name="litTotalUserDiskSpace.Text" xml:space="preserve">
<value>Total Used Disk Space, MB:</value>
</data>
<data name="litUsedDiskSpace.Text" xml:space="preserve">
<value>Used Disk Space, MB:</value>
</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">
<value>CRM</value>
</data>
<data name="locExchangeStatistics.Text" xml:space="preserve">
<value>Exchange</value>
</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">
<value>SharePoint</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>
</root>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSave.OnClientClick" xml:space="preserve">
<value>ShowProgressDialog('Updating user settings...');</value>
@ -126,11 +126,15 @@
<data name="chkDisable.Text" xml:space="preserve">
<value>Disable User</value>
</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">
<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;You can specify manager account to build organizational structure of your company.&lt;/p&gt;</value>
</data>
<data name="locAddress.Text" xml:space="preserve">
@ -154,6 +158,9 @@
<data name="locDisplayName.Text" xml:space="preserve">
<value>Display Name: *</value>
</data>
<data name="locExternalEmailAddress.Text" xml:space="preserve">
<value>External e-mail:</value>
</data>
<data name="locFax.Text" xml:space="preserve">
<value>Fax:</value>
</data>
@ -193,6 +200,9 @@
<data name="locState.Text" xml:space="preserve">
<value>State/Province:</value>
</data>
<data name="locSubscriberNumber.Text" xml:space="preserve">
<value>Subscriber Number:</value>
</data>
<data name="locTitle.Text" xml:space="preserve">
<value>Edit User</value>
</data>
@ -226,10 +236,4 @@
<data name="valRequireDisplayName.Text" xml:space="preserve">
<value>*</value>
</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>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnSend.Text" xml:space="preserve">
<value>Send</value>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreateUser.Text" xml:space="preserve">
<value>Create New User</value>
@ -132,12 +132,21 @@
<data name="cmdSearch.AlternateText" xml:space="preserve">
<value>Search</value>
</data>
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
<value>Domain Account</value>
</data>
<data name="ddlSearchColumnDisplayName.Text" xml:space="preserve">
<value>Display Name</value>
</data>
<data name="ddlSearchColumnEmail.Text" xml:space="preserve">
<value>E-mail Address</value>
</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">
<value>No users have been created. To create a new user click "Create New Users" button.</value>
</data>
@ -149,14 +158,11 @@
</data>
<data name="HSFormComments.Text" xml:space="preserve">
<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;
• Authorize or deny access to domain resources.&lt;br&gt;
• Administer other security principals.&lt;br&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;User account can also represent Exchange mailbox, which may be a person, room or inventory unit.&lt;/p&gt;</value>
</data>
<data name="locQuota.Text" xml:space="preserve">
@ -168,7 +174,4 @@
<data name="Text.PageName" xml:space="preserve">
<value>Users</value>
</data>
<data name="ddlSearchColumnAccountName.Text" xml:space="preserve">
<value>Domain Account</value>
</data>
</root>

View file

@ -112,10 +112,10 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="btnCreate.Text" xml:space="preserve">
<value>Create New Organization</value>
@ -158,10 +158,8 @@
</data>
<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;
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, distribution lists and public folders 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, and distribution lists of Exchange-enabled organization share the same GAL and OAB&lt;/p&gt;</value>
</data>
<data name="locQuota.Text" xml:space="preserve">
<value>Total Organizations Created:</value>

View file

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

View file

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

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ExchangeServer {
/// <summary>
/// ExchangeActiveSyncSettings class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class ExchangeActiveSyncSettings {
/// <summary>

View file

@ -26,12 +26,7 @@
<tr>
<td class="FormLabel150"><asp:Localize ID="locDomainName" runat="server" meta:resourcekey="locDomainName" Text="Domain Name:"></asp:Localize></td>
<td>
<asp:TextBox ID="txtDomainName" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
<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>
<asp:DropDownList id="ddlDomains" runat="server" CssClass="NormalTextBox" DataTextField="DomainName" DataValueField="DomainID" style="vertical-align:middle;"></asp:DropDownList>
</td>
</tr>
</table>
@ -39,6 +34,7 @@
<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: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>

View file

@ -27,21 +27,55 @@
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal.ExchangeServer
{
public partial class ExchangeAddDomainName : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
public partial class ExchangeAddDomainName : WebsitePanelModuleBase
{
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)
{
AddDomain();
}
protected void btnCancel_Click(object sender, EventArgs e)
{
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "domains", "SpaceID=" + PanelSecurity.PackageId));
}
private void AddDomain()
{
if (!Page.IsValid)
@ -51,7 +85,7 @@ namespace WebsitePanel.Portal.ExchangeServer
{
int result = ES.Services.Organizations.AddOrganizationDomain(PanelRequest.ItemID,
txtDomainName.Text.Trim());
ddlDomains.SelectedValue.Trim());
if (result < 0)
{
@ -67,5 +101,5 @@ namespace WebsitePanel.Portal.ExchangeServer
messageBox.ShowErrorMessage("EXCHANGE_ADD_DOMAIN", ex);
}
}
}
}
}

View file

@ -76,31 +76,13 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::System.Web.UI.WebControls.Localize locDomainName;
/// <summary>
/// txtDomainName control.
/// ddlDomains 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 txtDomainName;
/// <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;
protected global::System.Web.UI.WebControls.DropDownList ddlDomains;
/// <summary>
/// btnAdd control.
@ -120,6 +102,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
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>
/// FormComments control.
/// </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/MailboxTabs.ascx" TagName="MailboxTabs" 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/DaysBox.ascx" TagName="DaysBox" TagPrefix="wsp" %>
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
<%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %>
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
@ -16,19 +15,35 @@
<wsp:Breadcrumb id="breadcrumb" runat="server" PageName="Text.PageName" />
</div>
<div class="Left">
<wsp:Menu id="menu" runat="server" SelectedItem="mailboxes" />
<wsp:Menu id="menu" runat="server" SelectedItem="mailboxplans" />
</div>
<div class="Content">
<div class="Center">
<div class="Title">
<asp:Image ID="Image1" SkinID="ExchangeMailbox48" runat="server" />
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit Mailbox"></asp:Localize>
-
<asp:Literal ID="litDisplayName" runat="server" Text="John Smith" />
</div>
<asp:Image ID="Image1" SkinID="ExchangeDomainNameAdd48" runat="server" />
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Add Mailboxplan"></asp:Localize>
</div>
<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"
TargetControlID="MailboxFeatures" meta:resourcekey="secMailboxFeatures" Text="Mailbox Features">
@ -63,66 +78,70 @@
</table>
<br />
</asp:Panel>
<wsp:CollapsiblePanel id="secStatistics" runat="server"
TargetControlID="Statistics" meta:resourcekey="secStatistics" Text="Storage Statistics">
<wsp:CollapsiblePanel id="secMailboxGeneral" runat="server"
TargetControlID="MailboxGeneral" meta:resourcekey="secMailboxGeneral" Text="Mailbox General">
</wsp:CollapsiblePanel>
<asp:Panel ID="Statistics" runat="server" Height="0" style="overflow:hidden;">
<table cellpadding="4">
<tr>
<td class="FormLabel150"><asp:Localize ID="locTotalItems" runat="server" meta:resourcekey="locTotalItems" Text="Total Items:"></asp:Localize></td>
<asp:Panel ID="MailboxGeneral" runat="server" Height="0" style="overflow:hidden;">
<table>
<tr>
<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>
</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>
</tr>
</table>
<br />
</asp:Panel>
<wsp:CollapsiblePanel id="secStorageQuotas" runat="server"
TargetControlID="StorageQuotas" meta:resourcekey="secStorageQuotas" Text="Storage Quotas">
</wsp:CollapsiblePanel>
<asp:Panel ID="StorageQuotas" runat="server" Height="0" style="overflow:hidden;">
<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>
<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>
<td class="FormLabel200" align="right"><asp:Localize ID="locIssueWarning" runat="server" meta:resourcekey="locIssueWarning" Text="Issue warning at:"></asp:Localize></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>
</tr>
<tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locProhibitSend" runat="server" meta:resourcekey="locProhibitSend" Text="Prohibit send at:"></asp:Localize></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>
</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>
<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>
</tr>
</table>
@ -138,44 +157,17 @@
<tr>
<td class="FormLabel200" align="right"><asp:Localize ID="locKeepDeletedItems" runat="server" meta:resourcekey="locKeepDeletedItems" Text="Keep deleted items for:"></asp:Localize></td>
<td>
<wsp:DaysBox id="daysKeepDeletedItems" runat="server" ValidationGroup="EditMailbox" />
<wsp:DaysBox id="daysKeepDeletedItems" runat="server" ValidationGroup="CreateMailboxPlan" />
</td>
</tr>
</table>
<br />
</asp:Panel>
<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>
<br />
<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:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True"
ShowSummary="False" ValidationGroup="EditMailbox" />
<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" ShowSummary="False" ValidationGroup="CreateMailboxPlan" />
</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>
// 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
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ExchangeServer {
public partial class ExchangeMailboxAdvancedSettings {
public partial class ExchangeAddMailboxPlan {
/// <summary>
/// asyncTasks control.
@ -58,24 +57,6 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </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.MailboxTabs tabs;
/// <summary>
/// messageBox control.
/// </summary>
@ -85,6 +66,42 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
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>
/// secMailboxFeatures control.
/// </summary>
@ -149,94 +166,31 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::System.Web.UI.WebControls.CheckBox chkActiveSync;
/// <summary>
/// secStatistics control.
/// secMailboxGeneral control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secStatistics;
protected global::WebsitePanel.Portal.CollapsiblePanel secMailboxGeneral;
/// <summary>
/// Statistics control.
/// MailboxGeneral 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 Statistics;
protected global::System.Web.UI.WebControls.Panel MailboxGeneral;
/// <summary>
/// locTotalItems control.
/// chkHideFromAddressBook 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 locTotalItems;
/// <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;
protected global::System.Web.UI.WebControls.CheckBox chkHideFromAddressBook;
/// <summary>
/// secStorageQuotas control.
@ -256,6 +210,78 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
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>
/// locWhenSizeExceeds control.
/// </summary>
@ -356,49 +382,13 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.DaysBox daysKeepDeletedItems;
/// <summary>
/// secDomainUser control.
/// btnAdd control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.CollapsiblePanel secDomainUser;
/// <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;
protected global::System.Web.UI.WebControls.Button btnAdd;
/// <summary>
/// ValidationSummary1 control.

View file

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

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ExchangeServer {
/// <summary>
/// ExchangeContactGeneralSettings class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class ExchangeContactGeneralSettings {
/// <summary>

View file

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

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ExchangeServer {
/// <summary>
/// ExchangeContactMailFlowSettings class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class ExchangeContactMailFlowSettings {
/// <summary>

View file

@ -32,13 +32,6 @@
<div class="FormButtonsBarCleanRight">
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
<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:ListItem Value="DisplayName" meta:resourcekey="ddlSearchColumnDisplayName">DisplayName</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"
Width="100%" EmptyDataText="gvContacts" CssSelectorClass="NormalGridView"
OnRowCommand="gvContacts_RowCommand" AllowPaging="True" AllowSorting="True"
DataSourceID="odsAccountsPaged" PageSize="20">
DataSourceID="odsAccountsPaged">
<Columns>
<asp:TemplateField HeaderText="gvContactsDisplayName" SortExpression="DisplayName">
<ItemStyle Width="50%"></ItemStyle>

View file

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

View file

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

View file

@ -1,31 +1,159 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ExchangeServer {
public partial class ExchangeCreateContact {
protected WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
protected WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
protected WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
protected System.Web.UI.WebControls.Image Image1;
protected System.Web.UI.WebControls.Localize locTitle;
protected WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
protected System.Web.UI.WebControls.Localize locDisplayName;
protected System.Web.UI.WebControls.TextBox txtDisplayName;
protected System.Web.UI.WebControls.RequiredFieldValidator valRequireDisplayName;
protected System.Web.UI.WebControls.Localize locEmail;
protected System.Web.UI.WebControls.TextBox txtEmail;
protected System.Web.UI.WebControls.RequiredFieldValidator valRequireAccount;
protected System.Web.UI.WebControls.RegularExpressionValidator valCorrectEmail;
protected System.Web.UI.WebControls.Button btnCreate;
protected System.Web.UI.WebControls.ValidationSummary ValidationSummary1;
protected System.Web.UI.WebControls.Localize FormComments;
/// <summary>
/// asyncTasks control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
/// <summary>
/// breadcrumb 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.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.WebParts;
using System.Web.UI.HtmlControls;
using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer
{
public partial class ExchangeCreateDistributionList : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
}
public partial class ExchangeCreateDistributionList : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnCreate_Click(object sender, EventArgs e)
{
@ -56,7 +57,7 @@ namespace WebsitePanel.Portal.ExchangeServer
if (!Page.IsValid)
return;
try
{
@ -66,7 +67,7 @@ namespace WebsitePanel.Portal.ExchangeServer
email.AccountName,
email.DomainName,
manager.GetAccountId());
if (accountId < 0)
{
@ -90,6 +91,6 @@ namespace WebsitePanel.Portal.ExchangeServer
}
}
}
}

View file

@ -1,10 +1,9 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

View file

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

View file

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

View file

@ -1,22 +1,15 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ExchangeServer {
/// <summary>
/// ExchangeCreateMailbox class.
/// </summary>
/// <remarks>
/// Auto-generated class.
/// </remarks>
public partial class ExchangeCreateMailbox {
/// <summary>
@ -145,6 +138,33 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
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>
/// locAccount control.
/// </summary>
@ -227,22 +247,22 @@ namespace WebsitePanel.Portal.ExchangeServer {
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.UserSelector userSelector;
/// <summary>
/// chkSendInstructions control.
/// locMailboxplanName 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 chkSendInstructions;
protected global::System.Web.UI.WebControls.Localize locMailboxplanName;
/// <summary>
/// sendInstructionEmail control.
/// mailboxPlanSelector control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.EmailControl sendInstructionEmail;
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.MailboxPlanSelector mailboxPlanSelector;
/// <summary>
/// btnCreate control.

View file

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

View file

@ -1,4 +1,4 @@
// Copyright (c) 2012, Outercurve Foundation.
// Copyright (c) 2011, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@ -42,16 +42,17 @@ using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Portal.ExchangeServer
{
public partial class ExchangeDistributionListEmailAddresses : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
public partial class ExchangeDistributionListEmailAddresses : WebsitePanelModuleBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindEmails();
}
}
}
private void BindEmails()
{
@ -79,11 +80,11 @@ namespace WebsitePanel.Portal.ExchangeServer
{
if (!Page.IsValid)
return;
btnDeleteAddresses.Enabled = true;
btnSetAsPrimary.Enabled = true;
try
btnDeleteAddresses.Enabled = true;
btnSetAsPrimary.Enabled = true;
try
{
int result = ES.Services.ExchangeServer.AddDistributionListEmailAddress(
PanelRequest.ItemID, PanelRequest.AccountID, email.Email);
@ -94,17 +95,17 @@ namespace WebsitePanel.Portal.ExchangeServer
return;
}
// rebind
BindEmails();
// rebind
BindEmails();
}
catch (Exception ex)
{
messageBox.ShowErrorMessage("EXCHANGE_DLIST_ADD_EMAIL", ex);
messageBox.ShowErrorMessage("EXCHANGE_DLIST_ADD_EMAIL", ex);
}
// clear field
email.AccountName = "";
// clear field
email.AccountName = "";
}
protected void btnSetAsPrimary_Click(object sender, EventArgs e)
@ -113,10 +114,10 @@ namespace WebsitePanel.Portal.ExchangeServer
{
string email = null;
bool Checked = false;
for (int i = 0; i < gvEmails.Rows.Count; i++)
{
GridViewRow row = gvEmails.Rows[i];
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
if (chkSelect.Checked)
@ -145,14 +146,14 @@ namespace WebsitePanel.Portal.ExchangeServer
return;
}
// rebind
BindEmails();
// rebind
BindEmails();
messageBox.ShowSuccessMessage("EXCHANGE_MAILBOX_SET_DEFAULT_EMAIL");
}
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;
}
// rebind
BindEmails();
// rebind
BindEmails();
}
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>
// 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
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebsitePanel.Portal.ExchangeServer {
public partial class ExchangeDistributionListEmailAddresses {
protected WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb;
protected WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu;
protected System.Web.UI.WebControls.Image Image1;
protected System.Web.UI.WebControls.Localize locTitle;
protected System.Web.UI.WebControls.Literal litDisplayName;
protected WebsitePanel.Portal.ExchangeServer.UserControls.DistributionListTabs tabs;
protected WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
protected System.Web.UI.WebControls.Label lblAddEmail;
protected System.Web.UI.WebControls.Localize locAccount;
protected WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress email;
protected System.Web.UI.WebControls.Button btnAddEmail;
protected WebsitePanel.Portal.CollapsiblePanel secExistingAddresses;
protected System.Web.UI.WebControls.Panel ExistingAddresses;
protected System.Web.UI.WebControls.GridView gvEmails;
protected System.Web.UI.WebControls.Localize locTotal;
protected System.Web.UI.WebControls.Label lblTotal;
protected System.Web.UI.WebControls.Button btnSetAsPrimary;
protected System.Web.UI.WebControls.Button btnDeleteAddresses;
protected System.Web.UI.WebControls.Localize FormComments;
/// <summary>
/// breadcrumb 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.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>
/// 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