diff --git a/WebsitePanel.Installer/Sources/VersionInfo.cs b/WebsitePanel.Installer/Sources/VersionInfo.cs index 23565f5c..04693c31 100644 --- a/WebsitePanel.Installer/Sources/VersionInfo.cs +++ b/WebsitePanel.Installer/Sources/VersionInfo.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.269 +// Runtime Version:4.0.30319.17929 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.Debug.config b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.Debug.config index 18e7f2ee..60bc4b39 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.Debug.config +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.Debug.config @@ -9,7 +9,7 @@ - + diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.Release.config b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.Release.config index 18e7f2ee..60bc4b39 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.Release.config +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.Release.config @@ -9,7 +9,7 @@ - + diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.config b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.config index 18e7f2ee..60bc4b39 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.config +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/App.config @@ -9,7 +9,7 @@ - + diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs index a6ed5690..4cfe87b5 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs @@ -1,3 +1,31 @@ +// 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. + namespace WebsitePanel.Installer { partial class ApplicationForm @@ -209,7 +237,7 @@ namespace WebsitePanel.Installer this.MinimumSize = new System.Drawing.Size(640, 480); this.Name = "ApplicationForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "WebsitePanel Installer (Beta)"; + this.Text = "WebsitePanel Installer"; this.Shown += new System.EventHandler(this.OnApplicationFormShown); this.statusBar.ResumeLayout(false); this.statusBar.PerformLayout(); diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index c70bbb84..2a081bbd 100644 Binary files a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe and b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe differ diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer20.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer20.cs index c8df0677..3f238133 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer20.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer20.cs @@ -31,7 +31,7 @@ namespace WebsitePanel.Setup { return UpdateBase(obj, minimalInstallerVersion: "2.0.0", - versionToUpgrade: "1.2.1", + versionToUpgrade: "1.2.1,2.0.0", updateSql: true); } } diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal20.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal20.cs index 2187ba95..ea1728ae 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal20.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal20.cs @@ -31,7 +31,7 @@ namespace WebsitePanel.Setup { return UpdateBase(obj, minimalInstallerVersion: "2.0.0", - versionsToUpgrade: "1.2.1", + versionsToUpgrade: "1.2.1,2.0.0", updateSql: false, versionSpecificAction: new InstallAction(ActionTypes.ConfigureSecureSessionModuleInWebConfig)); } diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server20.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server20.cs index 9f0a7988..105c8534 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server20.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server20.cs @@ -30,7 +30,7 @@ namespace WebsitePanel.Setup { return Server.UpdateBase(obj, minimalInstallerVersion: "2.0.0", - versionToUpgrade: "1.2.1", + versionToUpgrade: "1.2.1,2.0.0", updateSql: false); } } diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs index 5b30d56a..30838eb5 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs @@ -605,6 +605,10 @@ namespace WebsitePanel.Setup return false; int value = (int)regkey.GetValue("ASPNET", 0); + + if (value != 1) + value = (int)regkey.GetValue("ASPNET45", 0); + return value == 1; } } diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs index 9db3a3c7..bb0c5e24 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs @@ -325,12 +325,16 @@ namespace WebsitePanel.Setup if (webServer != null) { - var modules = doc.CreateElement(iis6 ? "httpModules" : "modules"); - webServer.AppendChild(modules); - var sessionModule = doc.CreateElement("add"); - sessionModule.SetAttribute("name", "SecureSession"); - sessionModule.SetAttribute("type", "WebsitePanel.WebPortal.SecureSessionModule"); - modules.AppendChild(sessionModule); + string modulesNodeName = iis6 ? "httpModules" : "modules"; + if (webServer.SelectSingleNode(modulesNodeName + "/add[@name='SecureSession']") == null) + { + var modules = doc.CreateElement(modulesNodeName); + webServer.AppendChild(modules); + var sessionModule = doc.CreateElement("add"); + sessionModule.SetAttribute("name", "SecureSession"); + sessionModule.SetAttribute("type", "WebsitePanel.WebPortal.SecureSessionModule"); + modules.AppendChild(sessionModule); + } } // update /system.web/httpRuntime element @@ -343,10 +347,10 @@ namespace WebsitePanel.Setup // // var appSettings = doc.SelectSingleNode("configuration/appSettings"); - if (appSettings != null) + if (appSettings != null && appSettings.SelectSingleNode("add[@key='SessionValidationKey']") == null) { var sessionKey = doc.CreateElement("add"); - sessionKey.SetAttribute("name", "SessionValidationKey"); + sessionKey.SetAttribute("key", "SessionValidationKey"); sessionKey.SetAttribute("value", StringUtils.GenerateRandomString(16)); appSettings.AppendChild(sessionKey); } diff --git a/WebsitePanel/Database/install_db.sql b/WebsitePanel/Database/install_db.sql index a8b29b45..25b32209 100644 --- a/WebsitePanel/Database/install_db.sql +++ b/WebsitePanel/Database/install_db.sql @@ -6220,7 +6220,7 @@ GO CREATE PROCEDURE [dbo].[GetItemIdByOrganizationId] - @OrganizationId nvarchar(10) + @OrganizationId nvarchar(128) AS BEGIN SET NOCOUNT ON; @@ -6508,6 +6508,7 @@ CREATE TABLE [dbo].[ExchangeOrganizationDomains]( [ItemID] [int] NOT NULL, [DomainID] [int] NULL, [IsHost] [bit] NULL, + [DomainTypeID] [int] NOT NULL, CONSTRAINT [PK_ExchangeOrganizationDomains] PRIMARY KEY CLUSTERED ( [OrganizationDomainID] ASC @@ -6634,7 +6635,8 @@ AS SELECT ED.DomainID, D.DomainName, - ED.IsHost + ED.IsHost, + ED.DomainTypeID FROM ExchangeOrganizationDomains AS ED INNER JOIN Domains AS D ON ED.DomainID = D.DomainID @@ -23549,7 +23551,7 @@ INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName] GO INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (3, 3, N'MSFTP60', N'Microsoft FTP Server 6.0', N'WebsitePanel.Providers.FTP.MsFTP, WebsitePanel.Providers.FTP.IIs60', N'MSFTP60', NULL) GO -INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (4, 4, N'MailEnable', N'MailEnable Server 1.x - 4.x', N'WebsitePanel.Providers.Mail.MailEnable, WebsitePanel.Providers.Mail.MailEnable', N'MailEnable', NULL) +INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (4, 4, N'MailEnable', N'MailEnable Server 1.x - 7.x', N'WebsitePanel.Providers.Mail.MailEnable, WebsitePanel.Providers.Mail.MailEnable', N'MailEnable', NULL) GO INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (5, 5, N'MSSQL', N'Microsoft SQL Server 2000', N'WebsitePanel.Providers.Database.MsSqlServer, WebsitePanel.Providers.Database.SqlServer', N'MSSQL', NULL) GO @@ -23619,11 +23621,11 @@ INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName] GO INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (63, 4, N'hMailServer5', N'hMailServer 5.x', N'WebsitePanel.Providers.Mail.hMailServer5, WebsitePanel.Providers.Mail.hMailServer5', N'hMailServer5', NULL) GO -INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (64, 4, N'SmarterMail', N'SmarterMail 7.x', N'WebsitePanel.Providers.Mail.SmarterMail7, WebsitePanel.Providers.Mail.SmarterMail7', N'SmarterMail60', NULL) +INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (64, 4, N'SmarterMail', N'SmarterMail 7.x - 8.x', N'WebsitePanel.Providers.Mail.SmarterMail7, WebsitePanel.Providers.Mail.SmarterMail7', N'SmarterMail60', NULL) GO INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (65, 4, N'SmarterMail', N'SmarterMail 9.x', N'WebsitePanel.Providers.Mail.SmarterMail9, WebsitePanel.Providers.Mail.SmarterMail9', N'SmarterMail60', NULL) GO -INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (66, 4, N'SmarterMail', N'SmarterMail 10.x', N'WebsitePanel.Providers.Mail.SmarterMail10, WebsitePanel.Providers.Mail.SmarterMail10', N'SmarterMail60', NULL) +INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (66, 4, N'SmarterMail', N'SmarterMail 10.x +', N'WebsitePanel.Providers.Mail.SmarterMail10, WebsitePanel.Providers.Mail.SmarterMail10', N'SmarterMail60', NULL) GO INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (100, 1, N'Windows2008', N'Windows Server 2008', N'WebsitePanel.Providers.OS.Windows2008, WebsitePanel.Providers.OS.Windows2008', N'Windows2008', NULL) GO @@ -45799,6 +45801,29 @@ GO +CREATE PROCEDURE [dbo].ChangeExchangeAcceptedDomainType +( + @ItemID int, + @DomainID int, + @DomainTypeID int +) +AS +UPDATE ExchangeOrganizationDomains +SET DomainTypeID=@DomainTypeID +WHERE ItemID=ItemID AND DomainID=@DomainID +RETURN +GO + + + + + + + + + + + @@ -46064,6 +46089,8 @@ ALTER TABLE [dbo].[ExchangeOrganizationDomains] CHECK CONSTRAINT [FK_ExchangeOrg GO ALTER TABLE [dbo].[ExchangeOrganizationDomains] ADD CONSTRAINT [DF_ExchangeOrganizationDomains_IsHost] DEFAULT ((0)) FOR [IsHost] GO +ALTER TABLE [dbo].[ExchangeOrganizationDomains] ADD CONSTRAINT [DF_ExchangeOrganizationDomains_DomainTypeID] DEFAULT ((0)) FOR [DomainTypeID] +GO ALTER TABLE [dbo].[PrivateIPAddresses] WITH CHECK ADD CONSTRAINT [FK_PrivateIPAddresses_ServiceItems] FOREIGN KEY([ItemID]) REFERENCES [dbo].[ServiceItems] ([ItemID]) ON DELETE CASCADE diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 4443fe81..3528e295 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -473,6 +473,13 @@ INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDe END GO +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Web.AllowIPAddressModeSwitch') +BEGIN + INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (333, 2, 22, N'Web.AllowIPAddressModeSwitch', N'Allow IP Address Mode Switch', 1, 0, NULL) +END +GO + + DELETE FROM [dbo].[PackageQuotas] WHERE [QuotaID] IN (SELECT [QuotaID] FROM [dbo].[Quotas] WHERE [QuotaName] = N'Exchange2007.POP3Enabled') DELETE FROM [dbo].[HostingPlanQuotas] WHERE [QuotaID] IN (SELECT [QuotaID] FROM [dbo].[Quotas] WHERE [QuotaName] = N'Exchange2007.POP3Enabled') @@ -552,6 +559,30 @@ GO UPDATE [dbo].[ResourceGroups] SET ShowGroup=1 GO +IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Quotas' AND COLS.name='HideQuota') +BEGIN +ALTER TABLE [dbo].[Quotas] ADD [HideQuota] [bit] NULL +END +GO + +UPDATE [dbo].[Quotas] SET [HideQuota] = 1 WHERE [QuotaName] = N'OS.DomainPointers' +GO + + +/****** Object: Table [dbo].[ExchangeAccounts] Extend Exchange Accounts with UserPrincipalName ******/ +IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='ExchangeAccounts' AND COLS.name='UserPrincipalName') +BEGIN +ALTER TABLE [dbo].[ExchangeAccounts] ADD + [UserPrincipalName] [nvarchar] (300) COLLATE Latin1_General_CI_AS NULL +END +GO + +IF NOT EXISTS(SELECT 1 FROM [dbo].[ExchangeAccounts] WHERE UserPrincipalName IS NOT NULL) +BEGIN + UPDATE [dbo].[ExchangeAccounts] SET [UserPrincipalName] = PrimaryEmailAddress WHERE AccountType IN (1,7) +END +GO + /****** Object: Table [dbo].[ExchangeAccounts] Extend Exchange Accounts with SubscriberNumber ******/ IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Users' AND COLS.name='SubscriberNumber') @@ -694,6 +725,7 @@ FROM Domains AS D INNER JOIN Packages AS P ON D.PackageID = P.PackageID WHERE CHARINDEX('.' + DomainName, @DomainName) > 0 AND (CHARINDEX('.' + DomainName, @DomainName) + LEN('.' + DomainName)) = LEN(@DomainName) + 1 +AND IsDomainPointer = 0 -- this is a domain of other user IF @UserID <> @DomainUserID AND @HostingAllowed = 0 @@ -1449,7 +1481,8 @@ INSERT INTO ExchangeAccounts SamAccountName, AccountPassword, MailboxPlanId, - SubscriberNumber + SubscriberNumber, + UserPrincipalName ) VALUES ( @@ -1463,7 +1496,8 @@ VALUES @SamAccountName, @AccountPassword, @MailboxPlanId, - @SubscriberNumber + @SubscriberNumber, + @PrimaryEmailAddress ) SET @AccountID = SCOPE_IDENTITY() @@ -1699,6 +1733,7 @@ GO + ALTER FUNCTION [dbo].[CalculateQuotaUsage] ( @PackageID int, @@ -1728,7 +1763,7 @@ AS ELSE IF @QuotaID = 54 -- sub-domains SET @Result = (SELECT COUNT(D.DomainID) FROM PackagesTreeCache AS PT INNER JOIN Domains AS D ON D.PackageID = PT.PackageID - WHERE IsSubDomain = 1 AND IsInstantAlias = 0 AND PT.ParentPackageID = @PackageID) + WHERE IsSubDomain = 1 AND IsInstantAlias = 0 AND IsDomainPointer = 0 AND PT.ParentPackageID = @PackageID) ELSE IF @QuotaID = 220 -- domain pointers SET @Result = (SELECT COUNT(D.DomainID) FROM PackagesTreeCache AS PT INNER JOIN Domains AS D ON D.PackageID = PT.PackageID @@ -1793,7 +1828,9 @@ AS 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) + WHERE pt.ParentPackageID = @PackageID + AND ea.AccountType IN (1) + 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 @@ -1821,7 +1858,6 @@ AS RETURN @Result END - GO @@ -2136,7 +2172,8 @@ SELECT E.MailEnabledPublicFolder, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2221,7 +2258,8 @@ WITH Accounts AS ( EA.PrimaryEmailAddress, EA.MailEnabledPublicFolder, EA.MailboxPlanId, - EA.SubscriberNumber ' + @joincondition + + EA.SubscriberNumber, + EA.UserPrincipalName ' + @joincondition + ' WHERE ' + @condition + ' ) @@ -2270,7 +2308,8 @@ SELECT E.AccountPassword, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2283,6 +2322,37 @@ GO +ALTER 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, + E.UserPrincipalName +FROM + ExchangeAccounts AS E +LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId +WHERE + E.ItemID = @ItemID AND + E.AccountName = @AccountName +RETURN +GO + + IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetExchangeAccountByMailboxPlanId') @@ -2309,7 +2379,8 @@ SELECT E.AccountPassword, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2336,7 +2407,8 @@ SELECT E.AccountPassword, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2359,7 +2431,8 @@ SELECT E.AccountPassword, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2399,7 +2472,8 @@ SELECT E.AccountPassword, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2426,7 +2500,8 @@ SELECT E.AccountPassword, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2449,7 +2524,8 @@ SELECT E.AccountPassword, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2652,6 +2728,19 @@ ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics] @ItemID int ) AS + +IF -1 IN (SELECT B.MailboxSizeMB FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) +BEGIN +SELECT + (SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 1 OR AccountType = 5 OR AccountType = 6) AND ItemID = @ItemID) AS CreatedMailboxes, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 2 AND ItemID = @ItemID) AS CreatedContacts, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 3 AND ItemID = @ItemID) AS CreatedDistributionLists, + (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders, + (SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains, + (SELECT MIN(B.MailboxSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedDiskSpace +END +ELSE +BEGIN SELECT (SELECT COUNT(*) FROM ExchangeAccounts WHERE (AccountType = 1 OR AccountType = 5 OR AccountType = 6) AND ItemID = @ItemID) AS CreatedMailboxes, (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 2 AND ItemID = @ItemID) AS CreatedContacts, @@ -2659,6 +2748,8 @@ SELECT (SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders, (SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains, (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedDiskSpace +END + RETURN GO @@ -2881,7 +2972,8 @@ SELECT E.AccountPassword, E.MailboxPlanId, P.MailboxPlan, - E.SubscriberNumber + E.SubscriberNumber, + E.UserPrincipalName FROM ExchangeAccounts AS E LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId @@ -2911,7 +3003,8 @@ SELECT DisplayName, PrimaryEmailAddress, MailEnabledPublicFolder, - SubscriberNumber + SubscriberNumber, + UserPrincipalName FROM ExchangeAccounts WHERE @@ -2973,7 +3066,8 @@ SELECT MailboxManagerActions, SamAccountName, AccountPassword, - SubscriberNumber + SubscriberNumber, + UserPrincipalName FROM ExchangeAccounts WHERE AccountID = @AccountID @@ -3042,7 +3136,8 @@ SELECT EA.DisplayName, EA.PrimaryEmailAddress, EA.MailEnabledPublicFolder, - EA.SubscriberNumber + EA.SubscriberNumber, + EA.UserPrincipalName FROM ExchangeAccounts AS EA WHERE ' + @condition @@ -3115,7 +3210,8 @@ SELECT EA.AccountName, EA.DisplayName, EA.PrimaryEmailAddress, - EA.SubscriberNumber + EA.SubscriberNumber, + EA.UserPrincipalName FROM ExchangeAccounts AS EA WHERE ' + @condition @@ -3175,7 +3271,7 @@ AS ea.ItemID, ea.AccountName, ea.DisplayName, - ea.PrimaryEmailAddress, + ea.UserPrincipalName, ea.SamAccountName, ou.LyncUserPlanId, lp.LyncUserPlanName @@ -3213,7 +3309,7 @@ AS ea.ItemID, ea.AccountName, ea.DisplayName, - ea.PrimaryEmailAddress, + ea.UserPrincipalName, ea.SamAccountName, ou.LyncUserPlanId, lp.LyncUserPlanName @@ -3642,6 +3738,13 @@ RETURN GO +IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='LyncUsers' AND COLS.name='SipAddress') +BEGIN +ALTER TABLE [dbo].[LyncUsers] ADD + [SipAddress] [nvarchar] (300) COLLATE Latin1_General_CI_AS NULL +END +GO + IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetLyncUsers') @@ -3663,7 +3766,8 @@ CREATE TABLE #TempLyncUsers [ItemID] [int] NOT NULL, [AccountName] [nvarchar](300) NOT NULL, [DisplayName] [nvarchar](300) NOT NULL, - [PrimaryEmailAddress] [nvarchar](300) NULL, + [UserPrincipalName] [nvarchar](300) NULL, + [SipAddress] [nvarchar](300) NULL, [SamAccountName] [nvarchar](100) NULL, [LyncUserPlanId] [int] NOT NULL, [LyncUserPlanName] [nvarchar] (300) NOT NULL, @@ -3678,11 +3782,17 @@ BEGIN SET @condition = ''ORDER BY ea.DisplayName'' END -IF (@SortColumn = ''PrimaryEmailAddress'') +IF (@SortColumn = ''UserPrincipalName'') BEGIN - SET @condition = ''ORDER BY ea.PrimaryEmailAddress'' + SET @condition = ''ORDER BY ea.UserPrincipalName'' END +IF (@SortColumn = ''SipAddress'') +BEGIN + SET @condition = ''ORDER BY ou.SipAddress'' +END + + IF (@SortColumn = ''LyncUserPlanName'') BEGIN SET @condition = ''ORDER BY lp.LyncUserPlanName'' @@ -3698,7 +3808,8 @@ set @sql = '' ea.ItemID, ea.AccountName, ea.DisplayName, - ea.PrimaryEmailAddress, + ea.UserPrincipalName, + ou.SipAddress, ea.SamAccountName, ou.LyncUserPlanId, lp.LyncUserPlanName @@ -3734,11 +3845,17 @@ BEGIN SELECT * FROM #TempLyncUsers WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY DisplayName DESC END - IF (@SortColumn = ''PrimaryEmailAddress'') + IF (@SortColumn = ''UserPrincipalName'') BEGIN SELECT * FROM #TempLyncUsers - WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY PrimaryEmailAddress DESC + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC END + IF (@SortColumn = ''SipAddress'') + BEGIN + SELECT * FROM #TempLyncUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY SipAddress DESC + END + IF (@SortColumn = ''LyncUserPlanName'') BEGIN SELECT * FROM #TempLyncUsers @@ -3748,7 +3865,7 @@ BEGIN ELSE BEGIN SELECT * FROM #TempLyncUsers - WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY PrimaryEmailAddress DESC + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC END @@ -3761,6 +3878,134 @@ GO +ALTER PROCEDURE [dbo].[GetLyncUsers] +( + @ItemID int, + @SortColumn nvarchar(40), + @SortDirection nvarchar(20), + @StartRow int, + @Count int +) +AS + +CREATE TABLE #TempLyncUsers +( + [ID] [int] IDENTITY(1,1) NOT NULL, + [AccountID] [int], + [ItemID] [int] NOT NULL, + [AccountName] [nvarchar](300) NOT NULL, + [DisplayName] [nvarchar](300) NOT NULL, + [UserPrincipalName] [nvarchar](300) NULL, + [SipAddress] [nvarchar](300) NULL, + [SamAccountName] [nvarchar](100) NULL, + [LyncUserPlanId] [int] NOT NULL, + [LyncUserPlanName] [nvarchar] (300) NOT NULL, +) + + +DECLARE @condition nvarchar(700) +SET @condition = '' + +IF (@SortColumn = 'DisplayName') +BEGIN + SET @condition = 'ORDER BY ea.DisplayName' +END + +IF (@SortColumn = 'UserPrincipalName') +BEGIN + SET @condition = 'ORDER BY ea.UserPrincipalName' +END + +IF (@SortColumn = 'SipAddress') +BEGIN + SET @condition = 'ORDER BY ou.SipAddress' +END + + +IF (@SortColumn = 'LyncUserPlanName') +BEGIN + SET @condition = 'ORDER BY lp.LyncUserPlanName' +END + +DECLARE @sql nvarchar(3500) + +set @sql = '' + INSERT INTO + #TempLyncUsers + SELECT + ea.AccountID, + ea.ItemID, + ea.AccountName, + ea.DisplayName, + ea.UserPrincipalName, + ou.SipAddress, + ea.SamAccountName, + ou.LyncUserPlanId, + lp.LyncUserPlanName + FROM + ExchangeAccounts ea + INNER JOIN + LyncUsers ou + INNER JOIN + LyncUserPlans lp + ON + ou.LyncUserPlanId = lp.LyncUserPlanId + ON + ea.AccountID = ou.AccountID + WHERE + ea.ItemID = @ItemID + @condition + +exec sp_executesql @sql, N'@ItemID int',@ItemID + +DECLARE @RetCount int +SELECT @RetCount = COUNT(ID) FROM #TempLyncUsers + +IF (@SortDirection = 'ASC') +BEGIN + SELECT * FROM #TempLyncUsers + WHERE ID > @StartRow AND ID <= (@StartRow + @Count) +END +ELSE +BEGIN + IF @SortColumn <> '' AND @SortColumn IS NOT NULL + BEGIN + IF (@SortColumn = 'DisplayName') + BEGIN + SELECT * FROM #TempLyncUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY DisplayName DESC + END + IF (@SortColumn = 'UserPrincipalName') + BEGIN + SELECT * FROM #TempLyncUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC + END + + IF (@SortColumn = 'SipAddress') + BEGIN + SELECT * FROM #TempLyncUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY SipAddress DESC + END + + IF (@SortColumn = 'LyncUserPlanName') + BEGIN + SELECT * FROM #TempLyncUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY LyncUserPlanName DESC + END + END + ELSE + BEGIN + SELECT * FROM #TempLyncUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC + END + + +END + +DROP TABLE #TempLyncUsers +GO + + + @@ -3902,6 +4147,7 @@ SELECT dbo.GetPackageAllocatedQuota(@PackageID, Q.QuotaID) AS ParentQuotaValue FROM Quotas AS Q LEFT OUTER JOIN HostingPlanQuotas AS HPQ ON Q.QuotaID = HPQ.QuotaID AND HPQ.PlanID = @PlanID +WHERE Q.HideQuota IS NULL OR Q.HideQuota = 0 ORDER BY Q.QuotaOrder RETURN GO @@ -4850,12 +5096,19 @@ RETURN' END GO +UPDATE [dbo].[Providers] SET [DisplayName] = 'MailEnable Server 1.x - 7.x' WHERE [DisplayName] = 'MailEnable Server 1.x - 4.x' +GO +UPDATE [dbo].[Providers] SET [DisplayName] = 'SmarterMail 7.x - 8.x' WHERE [DisplayName] = 'SmarterMail 7.x' +GO +UPDATE [dbo].[Providers] SET [DisplayName] = 'SmarterMail 10.x +' WHERE [DisplayName] = 'SmarterMail 10.x' +GO +UPDATE [dbo].[Providers] SET [DisplayName] = 'SmarterStats 5.x +' WHERE [DisplayName] = 'SmarterStats 5.x-6.x' +GO - -IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'SmarterMail 10.x') +IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'SmarterMail 10.x +') BEGIN - INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (66, 4, N'SmarterMail', N'SmarterMail 10.x', N'WebsitePanel.Providers.Mail.SmarterMail10, WebsitePanel.Providers.Mail.SmarterMail10', N'SmarterMail60', NULL) + INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (66, 4, N'SmarterMail', N'SmarterMail 10.x +', N'WebsitePanel.Providers.Mail.SmarterMail10, WebsitePanel.Providers.Mail.SmarterMail10', N'SmarterMail60', NULL) INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (66, N'AdminPassword', N'') INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (66, N'AdminUsername', N'admin') INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (66, N'DomainsPath', N'%SYSTEMDRIVE%\SmarterMail') @@ -4966,18 +5219,6 @@ RETURN GO -IF EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'SmarterStats 5.x-6.x') -BEGIN - UPDATE [dbo].[Providers] - SET [DisplayName] = 'SmarterStats 5.x +' - WHERE [DisplayName] = 'SmarterStats 5.x-6.x' -END -GO - - - - - IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetBlackBerryUsers') BEGIN @@ -5211,6 +5452,66 @@ GO +IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='ExchangeOrganizationDomains' AND COLS.name='DomainTypeID') +BEGIN +ALTER TABLE [dbo].[ExchangeOrganizationDomains] ADD + [DomainTypeID] [int] NOT NULL CONSTRAINT DF_ExchangeOrganizationDomains_DomainTypeID DEFAULT 0 +END +GO + + + + +ALTER PROCEDURE [dbo].[GetExchangeOrganizationDomains] +( + @ItemID int +) +AS +SELECT + ED.DomainID, + D.DomainName, + ED.IsHost, + ED.DomainTypeID +FROM + ExchangeOrganizationDomains AS ED +INNER JOIN Domains AS D ON ED.DomainID = D.DomainID +WHERE ED.ItemID = @ItemID +RETURN + +GO + + + + + + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'ChangeExchangeAcceptedDomainType') +BEGIN +EXEC sp_executesql N' +CREATE PROCEDURE [dbo].ChangeExchangeAcceptedDomainType +( + @ItemID int, + @DomainID int, + @DomainTypeID int +) +AS +UPDATE ExchangeOrganizationDomains +SET DomainTypeID=@DomainTypeID +WHERE ItemID=ItemID AND DomainID=@DomainID +RETURN' +END +GO + + + + + + + + + + ALTER PROCEDURE [dbo].[GetPackages] ( @ActorID int, @@ -5356,4 +5657,1338 @@ exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @Fil RETURN +GO + + + + + + +ALTER PROCEDURE [dbo].[DeleteServiceItem] +( + @ActorID int, + @ItemID int +) +AS + +-- check rights +DECLARE @PackageID int +SELECT PackageID = @PackageID FROM ServiceItems +WHERE ItemID = @ItemID + +IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0 +RAISERROR('You are not allowed to access this package', 16, 1) + +BEGIN TRAN + +UPDATE Domains +SET ZoneItemID = NULL +WHERE ZoneItemID = @ItemID + +DELETE FROM Domains +WHERE WebSiteID = @ItemID AND IsDomainPointer = 1 + +UPDATE Domains +SET WebSiteID = NULL +WHERE WebSiteID = @ItemID + +UPDATE Domains +SET MailDomainID = NULL +WHERE MailDomainID = @ItemID + +-- delete item comments +DELETE FROM Comments +WHERE ItemID = @ItemID AND ItemTypeID = 'SERVICE_ITEM' + +-- delete item properties +DELETE FROM ServiceItemProperties +WHERE ItemID = @ItemID + +-- delete external IP addresses +EXEC dbo.DeleteItemIPAddresses @ActorID, @ItemID + +-- delete item +DELETE FROM ServiceItems +WHERE ItemID = @ItemID + +COMMIT TRAN + +RETURN + +GO + + + + + + + + + + +ALTER PROCEDURE [dbo].[GetOCSUsers] +( + @ItemID int, + @SortColumn nvarchar(40), + @SortDirection nvarchar(20), + @Name nvarchar(400), + @Email nvarchar(400), + @StartRow int, + @Count int +) +AS + +IF (@Name IS NULL) +BEGIN + SET @Name = '%' +END + +IF (@Email IS NULL) +BEGIN + SET @Email = '%' +END + +CREATE TABLE #TempOCSUsers +( + [ID] [int] IDENTITY(1,1) NOT NULL, + [AccountID] [int], + [ItemID] [int] NOT NULL, + [AccountName] [nvarchar](300) NOT NULL, + [DisplayName] [nvarchar](300) NOT NULL, + [InstanceID] [nvarchar](50) NOT NULL, + [PrimaryEmailAddress] [nvarchar](300) NULL, + [SamAccountName] [nvarchar](100) NULL +) + + +IF (@SortColumn = 'DisplayName') +BEGIN + INSERT INTO + #TempOCSUsers + SELECT + ea.AccountID, + ea.ItemID, + ea.AccountName, + ea.DisplayName, + ou.InstanceID, + ea.PrimaryEmailAddress, + ea.SamAccountName + FROM + ExchangeAccounts ea + INNER JOIN + OCSUsers ou + ON + ea.AccountID = ou.AccountID + WHERE + ea.ItemID = @ItemID AND ea.DisplayName LIKE @Name AND ea.PrimaryEmailAddress LIKE @Email + ORDER BY + ea.DisplayName +END +ELSE +BEGIN + INSERT INTO + #TempOCSUsers + SELECT + ea.AccountID, + ea.ItemID, + ea.AccountName, + ea.DisplayName, + ou.InstanceID, + ea.PrimaryEmailAddress, + ea.SamAccountName + FROM + ExchangeAccounts ea + INNER JOIN + OCSUsers ou + ON + ea.AccountID = ou.AccountID + WHERE + ea.ItemID = @ItemID AND ea.DisplayName LIKE @Name AND ea.PrimaryEmailAddress LIKE @Email + ORDER BY + ea.PrimaryEmailAddress +END + +DECLARE @RetCount int +SELECT @RetCount = COUNT(ID) FROM #TempOCSUsers + +IF (@SortDirection = 'ASC') +BEGIN + SELECT * FROM #TempOCSUsers + WHERE ID > @StartRow AND ID <= (@StartRow + @Count) +END +ELSE +BEGIN + IF (@SortColumn = 'DisplayName') + BEGIN + SELECT * FROM #TempOCSUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY DisplayName DESC + END + ELSE + BEGIN + SELECT * FROM #TempOCSUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY PrimaryEmailAddress DESC + END + +END + + +DROP TABLE #TempOCSUsers + +GO + + + + + + +ALTER PROCEDURE [dbo].[GetCRMUsers] +( + @ItemID int, + @SortColumn nvarchar(40), + @SortDirection nvarchar(20), + @Name nvarchar(400), + @Email nvarchar(400), + @StartRow int, + @Count int +) +AS + +IF (@Name IS NULL) +BEGIN + SET @Name = '%' +END + +IF (@Email IS NULL) +BEGIN + SET @Email = '%' +END + +CREATE TABLE #TempCRMUsers +( + [ID] [int] IDENTITY(1,1) NOT NULL, + [AccountID] [int], + [ItemID] [int] NOT NULL, + [AccountName] [nvarchar](300) NOT NULL, + [DisplayName] [nvarchar](300) NOT NULL, + [PrimaryEmailAddress] [nvarchar](300) NULL, + [SamAccountName] [nvarchar](100) NULL +) + + +IF (@SortColumn = 'DisplayName') +BEGIN + INSERT INTO + #TempCRMUsers + SELECT + ea.AccountID, + ea.ItemID, + ea.AccountName, + ea.DisplayName, + ea.PrimaryEmailAddress, + ea.SamAccountName + FROM + ExchangeAccounts ea + INNER JOIN + CRMUsers cu + ON + ea.AccountID = cu.AccountID + WHERE + ea.ItemID = @ItemID AND ea.DisplayName LIKE @Name AND ea.PrimaryEmailAddress LIKE @Email + ORDER BY + ea.DisplayName +END +ELSE +BEGIN + INSERT INTO + #TempCRMUsers + SELECT + ea.AccountID, + ea.ItemID, + ea.AccountName, + ea.DisplayName, + ea.PrimaryEmailAddress, + ea.SamAccountName + FROM + ExchangeAccounts ea + INNER JOIN + CRMUsers cu + ON + ea.AccountID = cu.AccountID + WHERE + ea.ItemID = @ItemID AND ea.DisplayName LIKE @Name AND ea.PrimaryEmailAddress LIKE @Email + ORDER BY + ea.PrimaryEmailAddress +END + +DECLARE @RetCount int +SELECT @RetCount = COUNT(ID) FROM #TempCRMUsers + +IF (@SortDirection = 'ASC') +BEGIN + SELECT * FROM #TempCRMUsers + WHERE ID > @StartRow AND ID <= (@StartRow + @Count) +END +ELSE +BEGIN + IF (@SortColumn = 'DisplayName') + BEGIN + SELECT * FROM #TempCRMUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY DisplayName DESC + END + ELSE + BEGIN + SELECT * FROM #TempCRMUsers + WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY PrimaryEmailAddress DESC + END + +END + + + +DROP TABLE #TempCRMUsers +GO + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetDomainsByZoneID') +BEGIN +EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetDomainsByZoneID] +( + @ActorID int, + @ZoneID int +) +AS + +SELECT + D.DomainID, + D.PackageID, + D.ZoneItemID, + D.DomainName, + D.HostingAllowed, + ISNULL(D.WebSiteID, 0) AS WebSiteID, + WS.ItemName AS WebSiteName, + ISNULL(D.MailDomainID, 0) AS MailDomainID, + MD.ItemName AS MailDomainName, + Z.ItemName AS ZoneName, + D.IsSubDomain, + D.IsInstantAlias, + D.IsDomainPointer +FROM Domains AS D +INNER JOIN Packages AS P ON D.PackageID = P.PackageID +LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID +LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID +LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID +WHERE + D.ZoneItemID = @ZoneID + AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1 +RETURN' +END +GO + + + + + + + + + + + + + + + + +/****** Object: Table [dbo].[ExchangeOrganizations] Extend Exchange Accounts with ExchangeMailboxPlanID ******/ +IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='ExchangeOrganizations' AND COLS.name='ExchangeMailboxPlanID') +BEGIN +ALTER TABLE [dbo].[ExchangeOrganizations] ADD [ExchangeMailboxPlanID] [int] +END +GO + + + + + +/****** Object: Table [dbo].[ExchangeOrganizations] Extend Exchange Accounts with LyncUserPlanID ******/ +IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='ExchangeOrganizations' AND COLS.name='LyncUserPlanID') +BEGIN +ALTER TABLE [dbo].[ExchangeOrganizations] ADD [LyncUserPlanID] [int] +END +GO + + + + + + + + +ALTER PROCEDURE [dbo].[SetOrganizationDefaultLyncUserPlan] +( + @ItemID int, + @LyncUserPlanId int +) +AS + +UPDATE ExchangeOrganizations SET + LyncUserPlanID = @LyncUserPlanId +WHERE + ItemID = @ItemID + +RETURN +GO + + + +ALTER PROCEDURE [dbo].[SetOrganizationDefaultExchangeMailboxPlan] +( + @ItemID int, + @MailboxPlanId int +) +AS + +UPDATE ExchangeOrganizations SET + ExchangeMailboxPlanID = @MailboxPlanId +WHERE + ItemID = @ItemID + +RETURN +GO + + + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetExchangeOrganization') +BEGIN +EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetExchangeOrganization] +( + @ItemID int +) +AS +SELECT + ItemID, + ExchangeMailboxPlanID, + LyncUserPlanID +FROM + ExchangeOrganizations +WHERE + ItemID = @ItemID +RETURN' +END +GO + + + + +IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Domains' AND COLS.name='DomainItemId') +BEGIN +ALTER TABLE [dbo].[Domains] ADD [DomainItemId] [int] NULL + +END +GO + +IF (SELECT Count(*) FROM Domains WHERE DomainItemId IS NOT NULL) = 0 +BEGIN + CREATE TABLE #TempDomains + ( + [PackageID] [int] NOT NULL, + [ZoneItemID] [int] NULL, + [DomainName] [nvarchar](100) COLLATE Latin1_General_CI_AS NOT NULL, + [HostingAllowed] [bit] NOT NULL, + [WebSiteID] [int] NULL, + [IsSubDomain] [bit] NOT NULL, + [IsInstantAlias] [bit] NOT NULL, + [IsDomainPointer] [bit] NOT NULL, + [DomainItemID] [int] NULL, + ) + + UPDATE Domains SET DomainItemID = DomainID + + INSERT INTO #TempDomains SELECT PackageID, + ZoneItemID, + DomainName, + HostingAllowed, + WebSiteID, + IsSubDomain, + IsInstantAlias, + IsDomainPointer, + DomainItemID FROM Domains WHERE WebSiteID IS NOT NULL + + UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL, DomainItemID=NULL WHERE WebSiteID IS NOT NULL + + INSERT INTO Domains SELECT PackageID, + ZoneItemID, + DomainName, + HostingAllowed, + WebSiteID, + NULL, + 0, + IsInstantAlias, + 1, + DomainItemID + FROM #TempDomains + + + DROP TABLE #TempDomains +END +GO + + + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Web.EnableHostNameSupport') +BEGIN + INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (334, 2, 23, N'Web.EnableHostNameSupport', N'Enable Hostname Support', 1, 0, NULL) +END +GO + + + + + + + + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetDomainsByDomainItemID') +BEGIN +EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetDomainsByDomainItemID] +( + @ActorID int, + @DomainID int +) +AS + +SELECT + D.DomainID, + D.PackageID, + D.ZoneItemID, + D.DomainItemID, + D.DomainName, + D.HostingAllowed, + ISNULL(D.WebSiteID, 0) AS WebSiteID, + WS.ItemName AS WebSiteName, + ISNULL(D.MailDomainID, 0) AS MailDomainID, + MD.ItemName AS MailDomainName, + Z.ItemName AS ZoneName, + D.IsSubDomain, + D.IsInstantAlias, + D.IsDomainPointer +FROM Domains AS D +INNER JOIN Packages AS P ON D.PackageID = P.PackageID +LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID +LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID +LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID +WHERE + D.DomainItemID = @DomainID + AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1 +RETURN' +END +GO + + + + + +ALTER PROCEDURE [dbo].[UpdateDomain] +( + @DomainID int, + @ActorID int, + @ZoneItemID int, + @HostingAllowed bit, + @WebSiteID int, + @MailDomainID int, + @DomainItemID int +) +AS + +-- check rights +DECLARE @PackageID int +SELECT @PackageID = PackageID FROM Domains +WHERE DomainID = @DomainID + +IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0 +RAISERROR('You are not allowed to access this package', 16, 1) + +IF @ZoneItemID = 0 SET @ZoneItemID = NULL +IF @WebSiteID = 0 SET @WebSiteID = NULL +IF @MailDomainID = 0 SET @MailDomainID = NULL + +-- update record +UPDATE Domains +SET + ZoneItemID = @ZoneItemID, + HostingAllowed = @HostingAllowed, + WebSiteID = @WebSiteID, + MailDomainID = @MailDomainID, + DomainItemID = @DomainItemID +WHERE + DomainID = @DomainID + RETURN +GO + + + + + +ALTER PROCEDURE [dbo].[GetDnsRecordsTotal] +( + @ActorID int, + @PackageID int +) +AS + +-- check rights +IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0 +RAISERROR('You are not allowed to access this package', 16, 1) + +-- create temp table for DNS records +DECLARE @Records TABLE +( + RecordID int, + RecordType nvarchar(10) COLLATE Latin1_General_CI_AS, + RecordName nvarchar(50) COLLATE Latin1_General_CI_AS +) + +-- select PACKAGES DNS records +DECLARE @ParentPackageID int, @TmpPackageID int +SET @TmpPackageID = @PackageID + +WHILE 10 = 10 +BEGIN + + -- get DNS records for the current package + INSERT INTO @Records (RecordID, RecordType, RecordName) + SELECT + GR.RecordID, + GR.RecordType, + GR.RecordName + FROM GlobalDNSRecords AS GR + WHERE GR.PackageID = @TmpPackageID + AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records) + + SET @ParentPackageID = NULL + + -- get parent package + SELECT + @ParentPackageID = ParentPackageID + FROM Packages + WHERE PackageID = @TmpPackageID + + IF @ParentPackageID IS NULL -- the last parent + BREAK + + SET @TmpPackageID = @ParentPackageID +END + +-- select VIRTUAL SERVER DNS records +DECLARE @ServerID int +SELECT @ServerID = ServerID FROM Packages +WHERE PackageID = @PackageID + +INSERT INTO @Records (RecordID, RecordType, RecordName) +SELECT + GR.RecordID, + GR.RecordType, + GR.RecordName +FROM GlobalDNSRecords AS GR +WHERE GR.ServerID = @ServerID +AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records) + +-- select SERVER DNS records +INSERT INTO @Records (RecordID, RecordType, RecordName) +SELECT + GR.RecordID, + GR.RecordType, + GR.RecordName +FROM GlobalDNSRecords AS GR +WHERE GR.ServerID IN (SELECT + SRV.ServerID +FROM VirtualServices AS VS +INNER JOIN Services AS S ON VS.ServiceID = S.ServiceID +INNER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID +WHERE VS.ServerID = @ServerID) +AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records) + + + + + +-- select SERVICES DNS records +-- re-distribute package services +EXEC DistributePackageServices @ActorID, @PackageID + +--INSERT INTO @Records (RecordID, RecordType, RecordName) +--SELECT +-- GR.RecordID, +-- GR.RecordType, + -- GR.RecordName +-- FROM GlobalDNSRecords AS GR +-- WHERE GR.ServiceID IN (SELECT ServiceID FROM PackageServices WHERE PackageID = @PackageID) +-- AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records) + + +SELECT + NR.RecordID, + NR.ServiceID, + NR.ServerID, + NR.PackageID, + NR.RecordType, + NR.RecordName, + NR.RecordData, + NR.MXPriority, + NR.SrvPriority, + NR.SrvWeight, + NR.SrvPort, + NR.IPAddressID, + ISNULL(IP.ExternalIP, '') AS ExternalIP, + ISNULL(IP.InternalIP, '') AS InternalIP, + CASE + WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) + WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData + WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData + ELSE NR.RecordData + END AS FullRecordData, + dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress +FROM @Records AS TR +INNER JOIN GlobalDnsRecords AS NR ON TR.RecordID = NR.RecordID +LEFT OUTER JOIN IPAddresses AS IP ON NR.IPAddressID = IP.AddressID + +RETURN +GO + + + + +ALTER PROCEDURE [dbo].[GetDomainByName] +( + @ActorID int, + @DomainName nvarchar(100), + @SearchOnDomainPointer bit, + @IsDomainPointer bit +) +AS + +IF (@SearchOnDomainPointer = 1) +BEGIN + SELECT + D.DomainID, + D.PackageID, + D.ZoneItemID, + D.DomainItemID, + D.DomainName, + D.HostingAllowed, + ISNULL(D.WebSiteID, 0) AS WebSiteID, + WS.ItemName AS WebSiteName, + ISNULL(D.MailDomainID, 0) AS MailDomainID, + MD.ItemName AS MailDomainName, + Z.ItemName AS ZoneName, + D.IsSubDomain, + D.IsInstantAlias, + D.IsDomainPointer + FROM Domains AS D + INNER JOIN Packages AS P ON D.PackageID = P.PackageID + LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID + LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID + LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID + WHERE + D.DomainName = @DomainName + AND D.IsDomainPointer = @IsDomainPointer + AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1 + RETURN +END +ELSE +BEGIN + SELECT + D.DomainID, + D.PackageID, + D.ZoneItemID, + D.DomainItemID, + D.DomainName, + D.HostingAllowed, + ISNULL(D.WebSiteID, 0) AS WebSiteID, + WS.ItemName AS WebSiteName, + ISNULL(D.MailDomainID, 0) AS MailDomainID, + MD.ItemName AS MailDomainName, + Z.ItemName AS ZoneName, + D.IsSubDomain, + D.IsInstantAlias, + D.IsDomainPointer + FROM Domains AS D + INNER JOIN Packages AS P ON D.PackageID = P.PackageID + LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID + LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID + LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID + WHERE + D.DomainName = @DomainName + AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1 + RETURN +END +GO + + + +ALTER PROCEDURE [dbo].[GetDomain] +( + @ActorID int, + @DomainID int +) +AS + +SELECT + D.DomainID, + D.PackageID, + D.ZoneItemID, + D.DomainItemID, + D.DomainName, + D.HostingAllowed, + ISNULL(WS.ItemID, 0) AS WebSiteID, + WS.ItemName AS WebSiteName, + ISNULL(MD.ItemID, 0) AS MailDomainID, + MD.ItemName AS MailDomainName, + Z.ItemName AS ZoneName, + D.IsSubDomain, + D.IsInstantAlias, + D.IsDomainPointer +FROM Domains AS D +INNER JOIN Packages AS P ON D.PackageID = P.PackageID +LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID +LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID +LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID +WHERE + D.DomainID = @DomainID + AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1 +RETURN +GO + + + + +ALTER PROCEDURE [dbo].[GetDomains] +( + @ActorID int, + @PackageID int, + @Recursive bit = 1 +) +AS + +-- check rights +IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0 +RAISERROR('You are not allowed to access this package', 16, 1) + +SELECT + D.DomainID, + D.PackageID, + D.ZoneItemID, + D.DomainItemID, + D.DomainName, + D.HostingAllowed, + ISNULL(WS.ItemID, 0) AS WebSiteID, + WS.ItemName AS WebSiteName, + ISNULL(MD.ItemID, 0) AS MailDomainID, + MD.ItemName AS MailDomainName, + Z.ItemName AS ZoneName, + D.IsSubDomain, + D.IsInstantAlias, + D.IsDomainPointer +FROM Domains AS D +INNER JOIN PackagesTree(@PackageID, @Recursive) AS PT ON D.PackageID = PT.PackageID +LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID +LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID +LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID +RETURN +GO + + + + +ALTER PROCEDURE [dbo].[GetDomainsByZoneID] +( + @ActorID int, + @ZoneID int +) +AS + +SELECT + D.DomainID, + D.PackageID, + D.ZoneItemID, + D.DomainItemID, + D.DomainName, + D.HostingAllowed, + ISNULL(D.WebSiteID, 0) AS WebSiteID, + WS.ItemName AS WebSiteName, + ISNULL(D.MailDomainID, 0) AS MailDomainID, + MD.ItemName AS MailDomainName, + Z.ItemName AS ZoneName, + D.IsSubDomain, + D.IsInstantAlias, + D.IsDomainPointer +FROM Domains AS D +INNER JOIN Packages AS P ON D.PackageID = P.PackageID +LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID +LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID +LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID +WHERE + D.ZoneItemID = @ZoneID + AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1 +RETURN +GO + + + + +ALTER PROCEDURE [dbo].[GetDomainsPaged] +( + @ActorID int, + @PackageID int, + @ServerID int, + @Recursive bit, + @FilterColumn nvarchar(50) = '', + @FilterValue nvarchar(50) = '', + @SortColumn nvarchar(50), + @StartRow int, + @MaximumRows int +) +AS +SET NOCOUNT ON + +-- check rights +IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0 +RAISERROR('You are not allowed to access this package', 16, 1) + +-- build query and run it to the temporary table +DECLARE @sql nvarchar(2000) + +IF @SortColumn = '' OR @SortColumn IS NULL +SET @SortColumn = 'DomainName' + +SET @sql = ' +DECLARE @Domains TABLE +( + ItemPosition int IDENTITY(1,1), + DomainID int +) +INSERT INTO @Domains (DomainID) +SELECT + D.DomainID +FROM Domains AS D +INNER JOIN Packages AS P ON D.PackageID = P.PackageID +INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID +LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID +LEFT OUTER JOIN Services AS S ON Z.ServiceID = S.ServiceID +LEFT OUTER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID +WHERE (D.IsInstantAlias = 0 AND D.IsDomainPointer = 0) AND + ((@Recursive = 0 AND D.PackageID = @PackageID) + OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, D.PackageID) = 1)) +AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID)) +' + +IF @FilterColumn <> '' AND @FilterValue <> '' +SET @sql = @sql + ' AND ' + @FilterColumn + ' LIKE @FilterValue ' + +IF @SortColumn <> '' AND @SortColumn IS NOT NULL +SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' ' + +SET @sql = @sql + ' SELECT COUNT(DomainID) FROM @Domains;SELECT + D.DomainID, + D.PackageID, + D.ZoneItemID, + D.DomainItemID, + D.DomainName, + D.HostingAllowed, + ISNULL(WS.ItemID, 0) AS WebSiteID, + WS.ItemName AS WebSiteName, + ISNULL(MD.ItemID, 0) AS MailDomainID, + MD.ItemName AS MailDomainName, + D.IsSubDomain, + D.IsInstantAlias, + D.IsDomainPointer, + + -- packages + P.PackageName, + + -- server + ISNULL(SRV.ServerID, 0) AS ServerID, + ISNULL(SRV.ServerName, '''') AS ServerName, + ISNULL(SRV.Comments, '''') AS ServerComments, + ISNULL(SRV.VirtualServer, 0) AS VirtualServer, + + -- user + P.UserID, + U.Username, + U.FirstName, + U.LastName, + U.FullName, + U.RoleID, + U.Email +FROM @Domains AS SD +INNER JOIN Domains AS D ON SD.DomainID = D.DomainID +INNER JOIN Packages AS P ON D.PackageID = P.PackageID +INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID +LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID +LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID +LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID +LEFT OUTER JOIN Services AS S ON Z.ServiceID = S.ServiceID +LEFT OUTER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID +WHERE SD.ItemPosition BETWEEN @StartRow + 1 AND @StartRow + @MaximumRows' + +exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @FilterValue nvarchar(50), @ServerID int, @Recursive bit', +@StartRow, @MaximumRows, @PackageID, @FilterValue, @ServerID, @Recursive + + +RETURN +GO + + + +IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [ParameterID] = 'LYNC_REPORT') +BEGIN +INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_HOSTED_SOLUTION_REPORT', N'LYNC_REPORT', N'Boolean', N'true', 5) +END +GO + + + +ALTER PROCEDURE [dbo].[GetItemIdByOrganizationId] + @OrganizationId nvarchar(128) +AS +BEGIN + SET NOCOUNT ON; + + SELECT + ItemID + FROM + dbo.ExchangeOrganizations + WHERE + OrganizationId = @OrganizationId +END +GO + + + + + + +ALTER PROCEDURE [dbo].[SearchServiceItemsPaged] +( + @ActorID int, + @UserID int, + @ItemTypeID int, + @FilterValue nvarchar(50) = '', + @SortColumn nvarchar(50), + @StartRow int, + @MaximumRows int +) +AS + + +-- check rights +IF dbo.CheckActorUserRights(@ActorID, @UserID) = 0 +RAISERROR('You are not allowed to access this account', 16, 1) + +-- build query and run it to the temporary table +DECLARE @sql nvarchar(2000) + +IF @ItemTypeID <> 13 +BEGIN + SET @sql = ' + DECLARE @EndRow int + SET @EndRow = @StartRow + @MaximumRows + DECLARE @Items TABLE + ( + ItemPosition int IDENTITY(1,1), + ItemID int + ) + INSERT INTO @Items (ItemID) + SELECT + SI.ItemID + FROM ServiceItems AS SI + INNER JOIN Packages AS P ON P.PackageID = SI.PackageID + INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID + WHERE + dbo.CheckUserParent(@UserID, P.UserID) = 1 + AND SI.ItemTypeID = @ItemTypeID + ' + + IF @FilterValue <> '' + SET @sql = @sql + ' AND SI.ItemName LIKE @FilterValue ' + + IF @SortColumn = '' OR @SortColumn IS NULL + SET @SortColumn = 'ItemName' + + SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' ' + + SET @sql = @sql + ' SELECT COUNT(ItemID) FROM @Items; + SELECT + + SI.ItemID, + SI.ItemName, + + P.PackageID, + P.PackageName, + P.StatusID, + P.PurchaseDate, + + -- user + P.UserID, + U.Username, + U.FirstName, + U.LastName, + U.FullName, + U.RoleID, + U.Email + FROM @Items AS I + INNER JOIN ServiceItems AS SI ON I.ItemID = SI.ItemID + INNER JOIN Packages AS P ON SI.PackageID = P.PackageID + INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID + WHERE I.ItemPosition BETWEEN @StartRow AND @EndRow' +END +ELSE +BEGIN + + SET @SortColumn = REPLACE(@SortColumn, 'ItemName', 'DomainName') + + SET @sql = ' + DECLARE @EndRow int + SET @EndRow = @StartRow + @MaximumRows + DECLARE @Items TABLE + ( + ItemPosition int IDENTITY(1,1), + ItemID int + ) + INSERT INTO @Items (ItemID) + SELECT + D.DomainID + FROM Domains AS D + INNER JOIN Packages AS P ON P.PackageID = D.PackageID + INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID + WHERE + dbo.CheckUserParent(@UserID, P.UserID) = 1 + ' + + IF @FilterValue <> '' + SET @sql = @sql + ' AND D.DomainName LIKE @FilterValue ' + + IF @SortColumn = '' OR @SortColumn IS NULL + SET @SortColumn = 'DomainName' + + SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' ' + + SET @sql = @sql + ' SELECT COUNT(ItemID) FROM @Items; + SELECT + + D.DomainID AS ItemID, + D.DomainName AS ItemName, + + P.PackageID, + P.PackageName, + P.StatusID, + P.PurchaseDate, + + -- user + P.UserID, + U.Username, + U.FirstName, + U.LastName, + U.FullName, + U.RoleID, + U.Email + FROM @Items AS I + INNER JOIN Domains AS D ON I.ItemID = D.DomainID + INNER JOIN Packages AS P ON D.PackageID = P.PackageID + INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID + WHERE I.ItemPosition BETWEEN @StartRow AND @EndRow AND D.IsDomainPointer=0' +END + +exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @UserID int, @FilterValue nvarchar(50), @ItemTypeID int, @ActorID int', +@StartRow, @MaximumRows, @UserID, @FilterValue, @ItemTypeID, @ActorID + +RETURN +GO + + + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'LyncUserExists') +BEGIN +EXEC sp_executesql N' +CREATE PROCEDURE [dbo].[LyncUserExists] +( + @AccountID int, + @SipAddress nvarchar(300), + @Exists bit OUTPUT +) +AS + + SET @Exists = 0 + IF EXISTS(SELECT * FROM [dbo].[ExchangeAccountEmailAddresses] WHERE [EmailAddress] = @SipAddress AND [AccountID] <> @AccountID) + BEGIN + SET @Exists = 1 + END + ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [PrimaryEmailAddress] = @SipAddress AND [AccountID] <> @AccountID) + BEGIN + SET @Exists = 1 + END + ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [UserPrincipalName] = @SipAddress AND [AccountID] <> @AccountID) + BEGIN + SET @Exists = 1 + END + ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [AccountName] = @SipAddress AND [AccountID] <> @AccountID) + BEGIN + SET @Exists = 1 + END + ELSE IF EXISTS(SELECT * FROM [dbo].[LyncUsers] WHERE [SipAddress] = @SipAddress) + BEGIN + SET @Exists = 1 + END + + + RETURN' +END +GO + + + + +ALTER PROCEDURE [dbo].[LyncUserExists] +( + @AccountID int, + @SipAddress nvarchar(300), + @Exists bit OUTPUT +) +AS + + SET @Exists = 0 + IF EXISTS(SELECT * FROM [dbo].[ExchangeAccountEmailAddresses] WHERE [EmailAddress] = @SipAddress AND [AccountID] <> @AccountID) + BEGIN + SET @Exists = 1 + END + ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [PrimaryEmailAddress] = @SipAddress AND [AccountID] <> @AccountID) + BEGIN + SET @Exists = 1 + END + ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [UserPrincipalName] = @SipAddress AND [AccountID] <> @AccountID) + BEGIN + SET @Exists = 1 + END + ELSE IF EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE [AccountName] = @SipAddress AND [AccountID] <> @AccountID) + BEGIN + SET @Exists = 1 + END + ELSE IF EXISTS(SELECT * FROM [dbo].[LyncUsers] WHERE [SipAddress] = @SipAddress) + BEGIN + SET @Exists = 1 + END + + + RETURN +GO + + + + + +ALTER PROCEDURE [dbo].[AddLyncUser] + @AccountID int, + @LyncUserPlanID int, + @SipAddress nvarchar(300) +AS +INSERT INTO + dbo.LyncUsers + (AccountID, + LyncUserPlanID, + CreatedDate, + ModifiedDate, + SipAddress) +VALUES +( + @AccountID, + @LyncUserPlanID, + getdate(), + getdate(), + @SipAddress +) +GO + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'UpdateLyncUser') +BEGIN +EXEC sp_executesql N'CREATE PROCEDURE [dbo].[UpdateLyncUser] +( + @AccountID int, + @SipAddress nvarchar(300) +) +AS + +UPDATE LyncUsers SET + SipAddress = @SipAddress +WHERE + AccountID = @AccountID + +RETURN' +END +GO + + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'CheckDomainUsedByHostedOrganization') +BEGIN +EXEC sp_executesql N'CREATE PROCEDURE [dbo].[CheckDomainUsedByHostedOrganization] + @DomainName nvarchar(100), + @Result int OUTPUT +AS + SET @Result = 0 + IF EXISTS(SELECT 1 FROM ExchangeAccounts WHERE UserPrincipalName LIKE ''%@''+ @DomainName) + BEGIN + SET @Result = 1 + END + ELSE + IF EXISTS(SELECT 1 FROM ExchangeAccountEmailAddresses WHERE EmailAddress LIKE ''%@''+ @DomainName) + BEGIN + SET @Result = 1 + END + ELSE + IF EXISTS(SELECT 1 FROM LyncUsers WHERE SipAddress LIKE ''%@''+ @DomainName) + BEGIN + SET @Result = 1 + END + + RETURN @Result' +END +GO + + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedSolution.AllowChangeUPN') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (230, 13, 4, N'HostedSolution.AllowChangeUPN', N'Allow to Change UserPrincipalName', 1, 0, NULL) +END +GO + + + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'UpdateExchangeAccountUserPrincipalName') +BEGIN +EXEC sp_executesql N' CREATE PROCEDURE [dbo].[UpdateExchangeAccountUserPrincipalName] +( + @AccountID int, + @UserPrincipalName nvarchar(300) +) +AS + +UPDATE ExchangeAccounts SET + UserPrincipalName = @UserPrincipalName +WHERE + AccountID = @AccountID + +RETURN' +END +GO + + +IF NOT EXISTS (SELECT 1 FROM LyncUsers WHERE SipAddress IS NOT NULL) +BEGIN + UPDATE LyncUsers SET SipAddress=EA.PrimaryEmailAddress FROM ExchangeAccounts AS EA WHERE LyncUsers.SipAddress IS NULL AND LyncUsers.AccountID = EA.AccountID +END GO \ No newline at end of file diff --git a/WebsitePanel/Lib/References/MySQL/MySql.Data.dll b/WebsitePanel/Lib/References/MySQL/MySql.Data.dll index 3b5cadde..088ef1c0 100644 Binary files a/WebsitePanel/Lib/References/MySQL/MySql.Data.dll and b/WebsitePanel/Lib/References/MySQL/MySql.Data.dll differ diff --git a/WebsitePanel/Readme.htm b/WebsitePanel/Readme.htm deleted file mode 100644 index 53bab94a..00000000 --- a/WebsitePanel/Readme.htm +++ /dev/null @@ -1,178 +0,0 @@ - - - - WebsitePanel - Readme - - - - -

- WebsitePanel - Readme

-

- WebsitePanel is a hosting control panel for Windows servers.

- -

- License

-

- WebsitePanel is released under BSD license. Please see LICENSE.txt file in the - root folder of this project.

- -

- Project Structure

-

- The project has the following folders structure:

-
    -
  • \Trunk - project version currently in development
      -
    • \Sources - project source codes.
    • -
    • \Lib - all referenced 3rd-party assemblies required to build - the solution are placed in this folder.
    • -
    • \Database - the folder contains SQL scripts for creating - initial database structure and its update to the current version.
        -
      • install_db.sql - SQL script to create full database structure - for the previous release.
      • -
      • update_db.sql - SQL script to update database structure for the - revious release to the current one.
      • -
      -
    • -
    • \Docs - project documentation
        -
      • \Developer - technical documentation (specs, diagrams, POCs, - etc.) for developers working on the project
      • -
      • \User - user-related documentation (user guides, how-tows, - etc.) for end-users using the product
      • -
      -
    • -
    • \Build - folder containing solution assemblies that - are referenced from other projects
    • -
    -
  • -
  • \Releases - contains all project releases
  • -
  • \Branches - contains project branches for proof-of-concepts, - new development, bug fixing, etc.
  • -
  • LICENSE.txt - project license
  • -
  • Readme.htm - the file you are reading right now
  • -
  • ReleaseNotes.htm - project release notes
  • -
-

- Build How-To

-

- Downloading 3rd-Party Libraries

-

- SimpleDNS API

-

- SDNSAPI.dll is required to build "WebsitePanel.Providers.DNS.SimpleDNS50" - project.

-

- Download "Simple DNS Plus API for .NET and COM" library from "Downloads" section - on www.simpledns.com web site web site (at the - time of writing direct link to this library is - - http://www.simpledns.com/outbox/sdnsapi-setup.exe). Install the library and - then copy SDNSAPI.dll (located in "C:\Program Files (x86)\Simple DNS Plus API - for .NET and COM" by default) from its installation folder to "Lib" folder of - WebsitePanel project.

-

- MySQL .NET Connector

-

- MySQL .NET Connector is required to build - "WebsitePanel.Providers.Database.MySql" project.

-

- Go to www.mysql.com web site and download the - latest release of "MySQL .NET Connector" library from there (at the time of - writing it is located at - http://dev.mysql.com/downloads/connector/net/). Install MySQL connector and - then copy "MySQL.Data.dll" assembly from its installation folder to "Lib" folder - of WebsitePanel project.

-

- OrderBox (Directi API)

-

- Certain libraries are required to compile "WebsitePanel.Plugins.Directi" project - of Enterprise Server solution.

-

- Open - http://40083.myorderbox.com/kb/servlet/KBServlet/faq589.html page and - download the following files:

-
    -
  • NET_CoreExamples_vX.zip
  • - -
  • NET_DomainsExamples_vX.zip
  • -
-

- Unpack both archives to some temporary location and then copy the following - files to "Lib" folder of WebsitePanel project:

-
    -
  • OrderBoxCoreLib.dll
  • -
  • OrderBoxDomainsLib.dll
  • -
- -

Set the Reference Paths to 3rd-Party Libraries

-

After placing the required 3rd-Party Libraries into "Lib" folder - of WebsitePanel project, open WebsitePanel.Server solution (WebsitePanel.Server.sln) - and set ReferencePath of "WebsitePanel.Providers.Database.MySQL" and "WebsitePanel.Providers.DNS.SimpleDNS50" projects - to the absolute path of the "Lib" folder. See "Reference Path Is Incorrect" paragraph of - Troubleshooting Broken References - article for help.
- Do the same for "WebsitePanel.Plugins.Directi" project of WebsitePanel.EnterpriseServer solution (WebsitePanel.EnterpriseServer.sln).

- -

- Building Solutions

-

- Build WebsitePanel solutions in the following order:

-
    -
  • WebsitePanel.Server.sln
  • -
  • WebsitePanel.EnterpriseServer.sln
  • -
  • WebsitePanel.WebPortal.sln
  • -
-

- Creating Database

-

- In order to run WebsitePanel Enterprise Server it's required to create SQL - Server database to hold its internal data.

-
    -
  1. Using SQL Server Management Studio or any other database tool create a database - called "WebsitePanel".
  2. -
  3. Execute "install_db.sql" script containing DDL and initial data from "\Database" - folder of WebsitePanel project against created database.
  4. -
  5. Create "WebsitePanel" SQL user account and grant it "db_owner" rights on - "WebsitePanel" database.
  6. -
  7. Open "web.config" file in the root of Enterprise Server application and update - CryptoKey (appSettings/add/WebsitePanel.CryptoKey element) value there. It might - be arbitrary non-empty string.
  8. -
  9. Run WebsitePanel.PasswordEncoder tool available in "Tools" folder and generate - hash for "serveradmin" account password using CryptoKey and "Encrypt" button.
  10. -
  11. Update "Password" column in "Users" database table with generated hash for the - record with UserID = 1 ("serveradmin" account).
  12. -
  13. In Enterprise Server's web.config update database connection string with proper - settings in order to connect to WebsitePanel database.
  14. -
-

- Configuring Web Applications

-

- It's assumed below that root of WebsitePanel project is pointing to "C:\Projects\WebsitePanel" - folder.

-
    -
  • Create "WebsitePanel Server" web site (with 127.0.0.1:9003 binding) using IIS Management Tool with the root - folder pointing to "C:\Projects\WebsitePanel\Trunk\Sources\WebsitePanel.Server".
  • -
  • Create new user account called "WebsitePanelServer" and update process identity - with it for "WebsitePanel Server" application pool. This user account must have - required privileges to manage computer resources (by default be a member of - local "Administrators" group) and also must be a member of "IIS_IUSRS" (IIS 7).
  • -
  • Create "WebsitePanel Enterprise Server" web site (with 127.0.0.1:9002 - binding) using IIS Management Tool with - the root folder pointing to "C:\Projects\WebsitePanel\Trunk\Sources\WebsitePanel.EnterpriseServer".
  • -
  • Create "WebsitePanel Web Portal" web site (with <all unassigned>:9001 - binding) using IIS Management Tool with the - root folder pointing to "C:\Projects\WebsitePanel\Trunk\Sources\WebsitePanel.WebPortal".
  • -
  • Open "App_Data\SiteSettings.config" file in "WebsitePanel.WebPortal" folder and - update URL to Enterprise Server (http://127.0.0.1:9002 by default).
  • -
  • Open web.config in the root of WebsitePanel.Server application and update - "server access password" ("websitepanel.server/security/password" element). You - should be able to generate password SHA1 hash using WebsitePanel.PasswordEncoder - tool.
  • -
- - - diff --git a/WebsitePanel/ReleaseNotes.htm b/WebsitePanel/ReleaseNotes.htm deleted file mode 100644 index 2e66c486..00000000 --- a/WebsitePanel/ReleaseNotes.htm +++ /dev/null @@ -1,208 +0,0 @@ - - - - WebsitePanel - Release Notes - - -

- WebsitePanel - Release Notes

-

- July 14, 2011 - v1.2.0

-
    -
  • Added: Support for managing private Hyper-V cloud solution implemented with System - Center Virtual Machine Manager 2008 R2, System Center Operations Manager 2007 and - Dynamic Data Center Toolkit v3 (Beta) (contributed by Austen Knowledge Group)
  • -
  • Added: Support of Helicon Ape module for securing files & folders on web-site level - (contributed by HeliconTech)
  • -
  • Added: Support for Razor files extensions (*.cshtml, *.vbhtml) in File Manager
  • -
  • Added: "Notify Overused Databases" scheduled task (contributed by yoda-ict)
  • -
  • Added: Display size for MySQL databases on Edit Database page (contributed by yoda-ict)
  • -
  • Added: SSL Management (contributed by OnionMan)
  • -
  • Added: Domain aliases changed to allow using existing DNS domains to setup aliases - and pointers (contributed by yoda-ict)
  • -
  • Added: "Announcements" posting mode for Mail Lists in hMail Server Service Provider
  • -
  • Added: Personal Information and Signature sections added in hMail Mail Account settings
  • -
  • Added: SMTP authentication for Mail Lists in hMail Server Provider
  • -
  • Updated: Project code base migrated to .NET Framework 4
  • -
  • Fixed: Minor corrections in default landing page supplied by WebsitePanel for newly - created web sites (contributed by jegor)
  • -
  • Fixed: Customer's first and last names with localized characters are not properly - rendered on some pages
  • -
  • Fixed: Issue with unlimited mailbox quotas in SmarterMail 7 service provider
  • -
  • Fixed: Dynamics CRM 4 rollup updates are not applied for new organizations being - created through WebsitePanel
  • -
  • Fixed: Original deployment error messages with sensitive information are shown to - a user instead of a generic error message in MS Web App Gallery module
  • -
  • Fixed: Dedicated IP Addresses are incorrectly distributed via Virtual Servers
  • -
  • Fixed: SQL User is unable to login with "Browse Database" feature if its password - has '=' character (contributed by webio)
  • -
  • Fixed: Wrong default button on "Create New Exchange 2010 Organization" page
  • -
  • Fixed: Missing required validation for Forwarding field on Edit Mailbox Account - properties page (contributed by webio)
  • -
  • Fixed: Adjust "maxRequestLength" attribute in "httpRuntime" element in WSP Enterprise - Server & Server web.config files to support large files uploading
  • -
  • Fixed: Missing information whether Administrator password is set or not in hMail - Provider Settings
  • -
  • Fixed: Issue with setting up a correct type handler for WebsitePanel.IisModules.SecureFolders - HTTP authentication module in IIS 7 (contributed by yoda-ict)
  • -
  • Fixed: Issue with Mail List members removed after clicking “Save List” button in - hMail Server Service Provider
  • -
  • Fixed: Issue when a domain alias could not be enabled for hMail Server Service Provider
  • -
  • Fixed: Issue when forwarding address is incorrectly set for a mail account in hMail - Server Service Provider
  • -
  • Fixed: Issue when integrity check is not performed if to add a contact in Hosted - Exchange Service Provider
  • -
  • Fixed: Issue when a user is unable to remove subscribers from the list or group - In Merak Mail Service Provider
  • -
-

- WebsitePanel - Release Notes

-

- March 15, 2011 - v1.2.0 (Beta)

-
    -
  • Added: Support for managing private Hyper-V cloud solution implemented with System Center Virtual Machine Manager 2008 R2, System Center Operations Manager 2007 and Dynamic Data Center Toolkit v3 (Beta) (contributed by Austen Knowledge Group)
  • -
  • Added: Support of Helicon Ape module for securing files & folders on web-site level (contributed by HeliconTech)
  • -
  • Added: Support for Razor files extensions (*.cshtml, *.vbhtml) in File Manager
  • -
  • Added: "Notify Overused Databases" scheduled task (contributed by yoda-ict)
  • -
  • Added: Display size for MySQL databases on Edit Database page (contributed by yoda-ict)
  • -
  • Updated: Project code base migrated to .NET Framework 4
  • -
  • Fixed: Minor corrections in default landing page supplied by WebsitePanel for newly created web sites (contributed by jegor)
  • -
  • Fixed: Customer's first and last names with localized characters are not properly rendered on some pages
  • -
  • Fixed: Issue with unlimited mailbox quotas in SmarterMail 7 service provider
  • -
  • Fixed: Dynamics CRM 4 rollup updates are not applied for new organizations being created through WebsitePanel
  • -
  • Fixed: Original deployment error messages with sensitive information are shown to a user instead of a generic error message in MS Web App Gallery module
  • -
  • Fixed: Dedicated IP Addresses are incorrectly distributed via Virtual Servers
  • -
  • Fixed: SQL User is unable to login with "Browse Database" feature if its password has '=' character (contributed by webio)
  • -
  • Fixed: Wrong default button on "Create New Exchange 2010 Organization" page
  • -
  • Fixed: Missing required validation for Forwarding field on Edit Mailbox Account properties page (contributed by webio)
  • -
  • Fixed: Adjust "maxRequestLength" attribute in "httpRuntime" element in WSP Enterprise Server & Server web.config files to support large files uploading
  • -
-

- December 9, 2010 - v1.1.1 (Beta)

-
    -
  • Added: SSL Management (contributed by OnionMan)
  • -
  • Added: Domain aliases changed to allow using existing DNS - domains to setup aliases and pointers (contributed by yoda-ict)
  • -
  • Added: "Announcements" posting mode for Mail Lists in hMail Server Service Provider
  • -
  • Added: Personal Information and Signature sections added in hMail Mail Account settings
  • -
  • Added: SMTP authentication for Mail Lists in hMail Server Provider
  • -
  • Fixed: Missing information whether Administrator password is set or not in hMail - Provider Settings
  • -
  • Fixed: Issue with setting up a correct type handler for WebsitePanel.IisModules.SecureFolders - HTTP authentication module in IIS 7 (contributed by yoda-ict)
  • -
  • Fixed: Issue with Mail List members removed after clicking “Save List” button in - hMail Server Service Provider
  • -
  • Fixed: Issue when a domain alias could not be enabled for hMail Server Service Provider
  • -
  • Fixed: Issue when forwarding address is incorrectly set for a mail account in hMail - Server Service Provider
  • -
  • Fixed: Issue when integrity check is not performed if to add a contact in Hosted - Exchange Service Provider
  • -
  • Fixed: Issue when a user is unable to remove subscribers from the list or group - In Merak Mail Service Provider
  • -
-

- November 17, 2010 - v1.1.0

-
    -
  • Added Exchange 2010 SP1 Hosting Mode module
  • -
  • Added SharePoint 2010 module (contributed by Webio)
  • -
  • Added SmarterMail 7 module (contributed by yoda-ict)
  • -
  • Added SmarterStats 6 module (contributed by yoda-ict)
  • -
  • Added: Addition to get the correct domain name inside the TaskManager (contributed - by yoda-ict)
  • -
  • Added: Workaround for Global Address list to show up after Exchange 2010 SP1 installation - without /hosting switch. This workaround is not switched on by default; to switch - it on, please follow the instructions provided in this post.
  • -
  • Added: WebsitePanel.IISModules (http://iismodules.codeplex.com)
  • -
  • Added: meta:resourcekey to BillingCyclesEditCycle.ascx and BillingCyclesAddCycle.ascx
  • -
  • Updated WSP Portal web.config in 1.1 upgrade script to enable custom error
  • -
  • Fixed: MDaemon alias import fails: Directory hardcoded in the module (contributed - by mcrook)
  • -
  • Fixed: When updating Exchange account general settings an empty account password - is stored into WSP database (contributed by Webio)
  • -
  • Fixed: Bug with mail aliases (MDaemon) (contributed by mcrook)
  • -
  • Fixed: SmarterMail 7: Max mailbox size -1 (contributed by yoda-ict)
  • -
  • Fixed: Not showing emails (MDaemon ODBC database) (contributed by mcrook)
  • -
  • Fixed: Show apps for all languages in Microsoft Web App Gallery module
  • -
  • Fixed: Microsoft Web Application Gallery 1.0.1 module - images missing when apps - catalog or an individual app page is displayed
  • -
  • Fixed: Exchange 2010 SP1 Beta module unable to create organization when plan quotas - are set to unlimited
  • -
  • Fixed: Customer login account gets error while clicking on "Export report" button - under Disk Space Report
  • -
  • Fixed: Microsoft SQL 2008 user creation with some characters fails
  • -
  • Fixed: Unable to restore Microsoft SQL Server 2008 R2 databases
  • -
  • Fixed: Zip Files Error in File Manager and related modules: cannot zip 65535 files - or greater
  • -
  • Fixed: Localization Toolkit Import is not working
  • -
  • Fixed: Problems calculating disk space for Exchange-enabled spaces
  • -
  • Fixed: Negative value is allowed in "Max Mailbox Size, MB" field when - create or edit a mail box
  • -
  • Fixed: Service provider properties are not updated/Missing UpdateServiceProperties - stored procedure in the database when do a fresh install
  • -
  • Fixed: Exchange 2010 SP1 Hosted Edition provider renamed to Exchange 2010 SP1 Hosting - Mode
  • -
-

- September 3, 2010 - v1.0.2

-
    -
  • Added Exchange 2010 SP1 Module Beta
  • -
  • Added SharePoint 2010 Module Beta (contributed by - Webio)
  • -
  • Added SmarterMail 7 Module Beta (contributed by - yoda-ict)
  • -
  • Added Exchange Import Tool for WSP 1.0 - WSP 1.0.2
  • -
  • Added “Disable Mailbox Size Edit” quota for “Mail” group
  • -
  • Fixed: Zip Files Error: cannot zip 65535 files or greater
  • -
  • Fixed: Microsoft Web Application Gallery 1.0.1 images missing bug
  • -
  • Fixed: Bug in Mail Aliases for Mdaemon (patch provided by - mcrook)
  • -
-

- July 8, 2010 - v1.0.1

-
    -
  • Added Windows 7 and Windows Vista support.
  • -
  • Added "All unassigned" support for web site bindings.
  • -
  • "Instant Alias" is allowed in DNS-less hosting spaces.
  • -
  • Improved "Web App Gallery" module:
      -
    • all application packs are shown, but only those ones with satisfying requirements - could be installed
    • -
    • application packs are filtered by language and sorted alphabetically
    • -
    • added caching for applications graphics
    • -
    • re-designed application installation page
    • -
    • improved handling of databases and database users
    • -
    • improved errors reporting
    • -
    • temporary web site URL is displayed on completion screen
    • -
    -
  • -
  • Added for "IIS 7" provider an ability to specify paths to ASP.NET and - ASP ISAPIs.
  • -
-

- April 16, 2010 - v1.0

-
    -
  • Initial release of WebsitePanel under BSD license.
  • -
- - diff --git a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg index 755c888a..f89ba389 100644 --- a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg +++ b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg @@ -1,11 +1,11 @@ -Windows Registry Editor Version 5.00 +Windows Registry Editor Version 5.00 -[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\MEACPTransportAgent] +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\WSPTransportAgent] "MaxSize"=dword:00080000 "AutoBackupLogFiles"=dword:00000000 "Retention"=dword:00000000 -[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\MEACPTransportAgent\MEACPTransportAgent] +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\WSPTransportAgent\WSPTransportAgent] "EventMessageFile"=hex(2):43,00,3a,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,\ 00,73,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,2e,00,\ 4e,00,45,00,54,00,5c,00,46,00,72,00,61,00,6d,00,65,00,77,00,6f,00,72,00,6b,\ diff --git a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.txt b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.txt new file mode 100644 index 00000000..b4e03291 --- /dev/null +++ b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.txt @@ -0,0 +1,13 @@ +WSP Transport Agent Installation +================================ + +Perform the following steps: + +A) Copy the files WSPTransportAgent.dll and WSPTransportAgent.dll.config to "C:\Program Files\Microsoft\Exchange Server\V14\Public" +B) Import the WSPTransportAgent.reg to create the event source +C) Use the registry editor and provide the "NETWORK SERVICE" Full Control on the following Key +HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\WSPTransportAgent +D) Run the following powershell command in the exchange management shell: +Install-TransportAgent "WSPTransportAgent" -TransportAgentFactory WSPTransportAgent.WSPRoutingAgentFactory -AssemblyPath "C:\Program Files\Microsoft\Exchange Server\V14\Public\WSPTransportAgent.dll" +E) Enable-TransportAgent "WSPTransportAgent" +F) Restart-Service MSExchangeTransport diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs index 1e1984c2..fb403a0a 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs @@ -100,6 +100,7 @@ namespace WebsitePanel.Import.Enterprise Global.TempDomain = serviceSettings["TempDomain"]; ServerInfo serverInfo = ServerController.GetServerById(serviceInfo.ServerId); Global.ADRootDomain = serverInfo.ADRootDomain; + Global.NetBiosDomain = ActiveDirectoryUtils.GetNETBIOSDomainName(Global.ADRootDomain); } private void OnBrowseOU(object sender, EventArgs e) diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/Global.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/Global.cs index 0b279f17..1e5a928d 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/Global.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/Global.cs @@ -58,6 +58,13 @@ namespace WebsitePanel.Import.Enterprise set { aDRootDomain = value; } } + private static string netBiosDomain; + public static string NetBiosDomain + { + get { return netBiosDomain; } + set { netBiosDomain = value; } + } + public static PackageInfo Space; public static string TempDomain; diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs index 7b3ff1bb..21b1c5f5 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs @@ -757,15 +757,19 @@ namespace WebsitePanel.Import.Enterprise if (EmailAddressExists(email)) return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS; - - if (AccountExists(accountName)) throw new Exception(string.Format("Account {0} already exists", accountName)); string displayName = (string)entry.Properties["displayName"].Value; + string samName = (string)entry.Properties["sAMAccountName"].Value; + // this should really NEVER happen - an AD account without sAMAccountName?! + if (string.IsNullOrEmpty(samName)) + throw new Exception("SAMAccountName is not specified"); + // add Netbios-Domainname before samAccountName - format in the database + samName = Global.NetBiosDomain + "\\" + samName; - int userId = AddOrganizationUser(itemId, accountName, displayName, email, string.Empty); + int userId = AddOrganizationUser(itemId, accountName, displayName, email, samName, string.Empty); AddAccountEmailAddress(userId, email); //account type @@ -796,7 +800,7 @@ namespace WebsitePanel.Import.Enterprise return userId; } - UpdateExchangeAccount(userId, accountName, accountType, displayName, email, false, string.Empty, string.Empty, string.Empty); + UpdateExchangeAccount(userId, accountName, accountType, displayName, email, false, string.Empty, samName, string.Empty); string defaultEmail = (string)entry.Properties["extensionAttribute3"].Value; @@ -847,7 +851,7 @@ namespace WebsitePanel.Import.Enterprise if (email != null && email.ToLower().StartsWith("smtp:")) email = email.Substring(5); - + // no sAMAccountName for contacts - so String.Empty is OK int accountId = AddAccount(itemId, ExchangeAccountType.Contact, accountName, displayName, email, false, 0, string.Empty, null); Log.WriteEnd("Contact imported"); @@ -886,7 +890,14 @@ namespace WebsitePanel.Import.Enterprise if (EmailAddressExists(email)) return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS; - int accountId = AddAccount(itemId, ExchangeAccountType.DistributionList, accountName, displayName, email, false, 0, string.Empty, null); + string samName = (string)entry.Properties["sAMAccountName"].Value; + // this should really NEVER happen - an AD group without sAMAccountName?! + if (string.IsNullOrEmpty(samName)) + throw new Exception("SAMAccountName is not specified"); + // add Netbios-Domainname before samAccountName - format in the database + samName = Global.NetBiosDomain + "\\" + samName; + + int accountId = AddAccount(itemId, ExchangeAccountType.DistributionList, accountName, displayName, email, false, 0, samName, null); AddAccountEmailAddress(accountId, email); string defaultEmail = (string)entry.Properties["extensionAttribute3"].Value; @@ -938,10 +949,10 @@ namespace WebsitePanel.Import.Enterprise mailboxManagerActions.ToString(), samAccountName, CryptoUtils.Encrypt(accountPassword),0, string.Empty); } - 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) { return DataProvider.AddExchangeAccount(itemId, (int)ExchangeAccountType.User, accountName, displayName, email, false, string.Empty, - string.Empty, CryptoUtils.Encrypt(accountPassword),0 , string.Empty); + samAccountName, CryptoUtils.Encrypt(accountPassword), 0 , string.Empty); } diff --git a/WebsitePanel/Sources/VersionInfo.cs b/WebsitePanel/Sources/VersionInfo.cs index 23565f5c..04693c31 100644 --- a/WebsitePanel/Sources/VersionInfo.cs +++ b/WebsitePanel/Sources/VersionInfo.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.269 +// Runtime Version:4.0.30319.17929 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/WebsitePanel/Sources/VersionInfo.vb b/WebsitePanel/Sources/VersionInfo.vb index 2dc3bbba..1e9ef7fe 100644 --- a/WebsitePanel/Sources/VersionInfo.vb +++ b/WebsitePanel/Sources/VersionInfo.vb @@ -1,7 +1,7 @@ '------------------------------------------------------------------------------ ' ' This code was generated by a tool. -' Runtime Version:4.0.30319.269 +' Runtime Version:4.0.30319.17929 ' ' Changes to this file may cause incorrect behavior and will be lost if ' the code is regenerated. diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs index 0b32925f..9bad6958 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs @@ -114,6 +114,8 @@ namespace WebsitePanel.EnterpriseServer public const int ERROR_WEB_SITE_IP_ADDRESS_NOT_SPECIFIED = -607; public const int ERROR_WEB_SITE_SHARED_IP_ADDRESS_NOT_SPECIFIED = -608; public const int ERROR_WEB_SHARED_SSL_QUOTA_LIMIT = -609; + public const int ERROR_GLOBALDNS_FOR_DEDICATEDIP = -610; + public const int ERROR_PUBLICSHAREDIP_FOR_SHAREDIP = -611; #endregion #region Mail @@ -322,6 +324,7 @@ namespace WebsitePanel.EnterpriseServer public const int ERROR_USERS_RESOURCE_QUOTA_LIMIT = -2707; public const int CURRENT_USER_IS_CRM_USER = -2708; public const int CURRENT_USER_IS_OCS_USER = -2709; + public const int CURRENT_USER_IS_LYNC_USER = -2710; #endregion diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/ExchangeServer/ExchangeEmailAddress.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/ExchangeServer/ExchangeEmailAddress.cs index 0eccbbc1..24eb5d80 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/ExchangeServer/ExchangeEmailAddress.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/ExchangeServer/ExchangeEmailAddress.cs @@ -36,6 +36,7 @@ namespace WebsitePanel.EnterpriseServer { string emailAddress; bool isPrimary; + bool iSuserPrincipalName; public string EmailAddress { @@ -48,5 +49,12 @@ namespace WebsitePanel.EnterpriseServer get { return this.isPrimary; } set { this.isPrimary = value; } } + + public bool IsUserPrincipalName + { + get { return iSuserPrincipalName; } + set { iSuserPrincipalName = value; } + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs index 49d6bc9d..7541d383 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs @@ -50,7 +50,7 @@ order by rg.groupOrder public const string OS_MINIMUMTASKINTERVAL = "OS.MinimumTaskInterval"; // Minimum Tasks Interval, minutes public const string OS_APPINSTALLER = "OS.AppInstaller"; // Applications Installer public const string OS_EXTRAAPPLICATIONS = "OS.ExtraApplications"; // Extra Application Packs - public const string OS_ALLOWTENANTCREATEDOMAINS = "OS.AllowTenantCreateDomains"; // Allow tenant to create top level domains + public const string OS_NOTALLOWTENANTCREATEDOMAINS = "OS.AllowTenantCreateDomains"; // Do not Allow tenant to create top level domains public const string WEB_SITES = "Web.Sites"; // Web Sites public const string WEB_ASPNET11 = "Web.AspNet11"; // ASP.NET 1.1 public const string WEB_ASPNET20 = "Web.AspNet20"; // ASP.NET 2.0 @@ -79,6 +79,8 @@ order by rg.groupOrder public const string WEB_CFVIRTUALDIRS = "Web.CFVirtualDirectories"; //ColdFusion Virtual Directories public const string WEB_REMOTEMANAGEMENT = "Web.RemoteManagement"; //IIS 7 Remote Management public const string WEB_SSL = "Web.SSL"; //SSL + public const string WEB_ALLOWIPADDRESSMODESWITCH = "Web.AllowIPAddressModeSwitch"; //Allow to switch IP Address Mode + public const string WEB_ENABLEHOSTNAMESUPPORT = "Web.EnableHostNameSupport"; //Enable to specify hostnames upon site creation public const string FTP_ACCOUNTS = "FTP.Accounts"; // FTP Accounts public const string MAIL_ACCOUNTS = "Mail.Accounts"; // Mail Accounts public const string MAIL_FORWARDINGS = "Mail.Forwardings"; // Mail Forwardings @@ -148,6 +150,7 @@ order by rg.groupOrder public const string ORGANIZATIONS = "HostedSolution.Organizations"; public const string ORGANIZATION_USERS = "HostedSolution.Users"; public const string ORGANIZATION_DOMAINS = "HostedSolution.Domains"; + public const string ORGANIZATION_ALLOWCHANGEUPN = "HostedSolution.AllowChangeUPN"; public const string CRM_USERS = "HostedCRM.Users"; public const string CRM_ORGANIZATION = "HostedCRM.Organization"; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Servers/DomainInfo.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Servers/DomainInfo.cs index cd716b2c..eef37219 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Servers/DomainInfo.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Servers/DomainInfo.cs @@ -36,6 +36,7 @@ namespace WebsitePanel.EnterpriseServer private int domainId; private int packageId; private int zoneItemId; + private int domainItemId; private string domainName; private bool hostingAllowed; private int webSiteId; @@ -68,6 +69,13 @@ namespace WebsitePanel.EnterpriseServer set { zoneItemId = value; } } + public int DomainItemId + { + get { return domainItemId; } + set { domainItemId = value; } + } + + public string DomainName { get { return domainName; } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs index 3e960f56..cce2aeac 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs @@ -29,7 +29,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.6387 +// Runtime Version:2.0.50727.6400 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -51,7 +51,6 @@ namespace WebsitePanel.EnterpriseServer { using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.ResultObjects; - /// @@ -85,6 +84,8 @@ namespace WebsitePanel.EnterpriseServer { private System.Threading.SendOrPostCallback GetLyncUserGeneralSettingsOperationCompleted; + private System.Threading.SendOrPostCallback SetLyncUserGeneralSettingsOperationCompleted; + private System.Threading.SendOrPostCallback SetUserLyncPlanOperationCompleted; private System.Threading.SendOrPostCallback GetFederationDomainsOperationCompleted; @@ -134,6 +135,9 @@ namespace WebsitePanel.EnterpriseServer { /// public event GetLyncUserGeneralSettingsCompletedEventHandler GetLyncUserGeneralSettingsCompleted; + /// + public event SetLyncUserGeneralSettingsCompletedEventHandler SetLyncUserGeneralSettingsCompleted; + /// public event SetUserLyncPlanCompletedEventHandler SetUserLyncPlanCompleted; @@ -680,6 +684,56 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetLyncUserGeneralSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) { + object[] results = this.Invoke("SetLyncUserGeneralSettings", new object[] { + itemId, + accountId, + sipAddress, + lineUri}); + return ((LyncUserResult)(results[0])); + } + + /// + public System.IAsyncResult BeginSetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetLyncUserGeneralSettings", new object[] { + itemId, + accountId, + sipAddress, + lineUri}, callback, asyncState); + } + + /// + public LyncUserResult EndSetLyncUserGeneralSettings(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((LyncUserResult)(results[0])); + } + + /// + public void SetLyncUserGeneralSettingsAsync(int itemId, int accountId, string sipAddress, string lineUri) { + this.SetLyncUserGeneralSettingsAsync(itemId, accountId, sipAddress, lineUri, null); + } + + /// + public void SetLyncUserGeneralSettingsAsync(int itemId, int accountId, string sipAddress, string lineUri, object userState) { + if ((this.SetLyncUserGeneralSettingsOperationCompleted == null)) { + this.SetLyncUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetLyncUserGeneralSettingsOperationCompleted); + } + this.InvokeAsync("SetLyncUserGeneralSettings", new object[] { + itemId, + accountId, + sipAddress, + lineUri}, this.SetLyncUserGeneralSettingsOperationCompleted, userState); + } + + private void OnSetLyncUserGeneralSettingsOperationCompleted(object arg) { + if ((this.SetLyncUserGeneralSettingsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetLyncUserGeneralSettingsCompleted(this, new SetLyncUserGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserLyncPlan", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public LyncUserResult SetUserLyncPlan(int itemId, int accountId, int lyncUserPlanId) { @@ -1177,6 +1231,32 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetLyncUserGeneralSettingsCompletedEventHandler(object sender, SetLyncUserGeneralSettingsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SetLyncUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SetLyncUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public LyncUserResult Result { + get { + this.RaiseExceptionIfNecessary(); + return ((LyncUserResult)(this.results[0])); + } + } + } + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SetUserLyncPlanCompletedEventHandler(object sender, SetUserLyncPlanCompletedEventArgs e); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs index 78934577..87b2169c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs @@ -29,7 +29,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.6387 +// Runtime Version:2.0.50727.6400 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -85,6 +85,8 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { private System.Threading.SendOrPostCallback AddOrganizationDomainOperationCompleted; + private System.Threading.SendOrPostCallback ChangeOrganizationDomainTypeOperationCompleted; + private System.Threading.SendOrPostCallback GetOrganizationDomainsOperationCompleted; private System.Threading.SendOrPostCallback DeleteOrganizationDomainOperationCompleted; @@ -101,6 +103,10 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted; + private System.Threading.SendOrPostCallback SetUserPrincipalNameOperationCompleted; + + private System.Threading.SendOrPostCallback SetUserPasswordOperationCompleted; + private System.Threading.SendOrPostCallback SearchAccountsOperationCompleted; private System.Threading.SendOrPostCallback DeleteUserOperationCompleted; @@ -145,6 +151,9 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { /// public event AddOrganizationDomainCompletedEventHandler AddOrganizationDomainCompleted; + /// + public event ChangeOrganizationDomainTypeCompletedEventHandler ChangeOrganizationDomainTypeCompleted; + /// public event GetOrganizationDomainsCompletedEventHandler GetOrganizationDomainsCompleted; @@ -169,6 +178,12 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { /// public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted; + /// + public event SetUserPrincipalNameCompletedEventHandler SetUserPrincipalNameCompleted; + + /// + public event SetUserPasswordCompletedEventHandler SetUserPasswordCompleted; + /// public event SearchAccountsCompletedEventHandler SearchAccountsCompleted; @@ -180,20 +195,22 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateOrganization", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public int CreateOrganization(int packageId, string organizationID, string organizationName) { + public int CreateOrganization(int packageId, string organizationID, string organizationName, string domainName) { object[] results = this.Invoke("CreateOrganization", new object[] { packageId, organizationID, - organizationName}); + organizationName, + domainName}); return ((int)(results[0])); } /// - public System.IAsyncResult BeginCreateOrganization(int packageId, string organizationID, string organizationName, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginCreateOrganization(int packageId, string organizationID, string organizationName, string domainName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateOrganization", new object[] { packageId, organizationID, - organizationName}, callback, asyncState); + organizationName, + domainName}, callback, asyncState); } /// @@ -203,19 +220,20 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { } /// - public void CreateOrganizationAsync(int packageId, string organizationID, string organizationName) { - this.CreateOrganizationAsync(packageId, organizationID, organizationName, null); + public void CreateOrganizationAsync(int packageId, string organizationID, string organizationName, string domainName) { + this.CreateOrganizationAsync(packageId, organizationID, organizationName, domainName, null); } /// - public void CreateOrganizationAsync(int packageId, string organizationID, string organizationName, object userState) { + public void CreateOrganizationAsync(int packageId, string organizationID, string organizationName, string domainName, object userState) { if ((this.CreateOrganizationOperationCompleted == null)) { this.CreateOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateOrganizationOperationCompleted); } this.InvokeAsync("CreateOrganization", new object[] { packageId, organizationID, - organizationName}, this.CreateOrganizationOperationCompleted, userState); + organizationName, + domainName}, this.CreateOrganizationOperationCompleted, userState); } private void OnCreateOrganizationOperationCompleted(object arg) { @@ -686,6 +704,53 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/ChangeOrganizationDomainType", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public int ChangeOrganizationDomainType(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType) { + object[] results = this.Invoke("ChangeOrganizationDomainType", new object[] { + itemId, + domainId, + newDomainType}); + return ((int)(results[0])); + } + + /// + public System.IAsyncResult BeginChangeOrganizationDomainType(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("ChangeOrganizationDomainType", new object[] { + itemId, + domainId, + newDomainType}, callback, asyncState); + } + + /// + public int EndChangeOrganizationDomainType(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int)(results[0])); + } + + /// + public void ChangeOrganizationDomainTypeAsync(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType) { + this.ChangeOrganizationDomainTypeAsync(itemId, domainId, newDomainType, null); + } + + /// + public void ChangeOrganizationDomainTypeAsync(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType, object userState) { + if ((this.ChangeOrganizationDomainTypeOperationCompleted == null)) { + this.ChangeOrganizationDomainTypeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnChangeOrganizationDomainTypeOperationCompleted); + } + this.InvokeAsync("ChangeOrganizationDomainType", new object[] { + itemId, + domainId, + newDomainType}, this.ChangeOrganizationDomainTypeOperationCompleted, userState); + } + + private void OnChangeOrganizationDomainTypeOperationCompleted(object arg) { + if ((this.ChangeOrganizationDomainTypeCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.ChangeOrganizationDomainTypeCompleted(this, new ChangeOrganizationDomainTypeCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetOrganizationDomains", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public OrganizationDomainName[] GetOrganizationDomains(int itemId) { @@ -1280,6 +1345,103 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserPrincipalName", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public int SetUserPrincipalName(int itemId, int accountId, string userPrincipalName, bool inherit) { + object[] results = this.Invoke("SetUserPrincipalName", new object[] { + itemId, + accountId, + userPrincipalName, + inherit}); + return ((int)(results[0])); + } + + /// + public System.IAsyncResult BeginSetUserPrincipalName(int itemId, int accountId, string userPrincipalName, bool inherit, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetUserPrincipalName", new object[] { + itemId, + accountId, + userPrincipalName, + inherit}, callback, asyncState); + } + + /// + public int EndSetUserPrincipalName(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int)(results[0])); + } + + /// + public void SetUserPrincipalNameAsync(int itemId, int accountId, string userPrincipalName, bool inherit) { + this.SetUserPrincipalNameAsync(itemId, accountId, userPrincipalName, inherit, null); + } + + /// + public void SetUserPrincipalNameAsync(int itemId, int accountId, string userPrincipalName, bool inherit, object userState) { + if ((this.SetUserPrincipalNameOperationCompleted == null)) { + this.SetUserPrincipalNameOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserPrincipalNameOperationCompleted); + } + this.InvokeAsync("SetUserPrincipalName", new object[] { + itemId, + accountId, + userPrincipalName, + inherit}, this.SetUserPrincipalNameOperationCompleted, userState); + } + + private void OnSetUserPrincipalNameOperationCompleted(object arg) { + if ((this.SetUserPrincipalNameCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetUserPrincipalNameCompleted(this, new SetUserPrincipalNameCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserPassword", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public int SetUserPassword(int itemId, int accountId, string password) { + object[] results = this.Invoke("SetUserPassword", new object[] { + itemId, + accountId, + password}); + return ((int)(results[0])); + } + + /// + public System.IAsyncResult BeginSetUserPassword(int itemId, int accountId, string password, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetUserPassword", new object[] { + itemId, + accountId, + password}, callback, asyncState); + } + + /// + public int EndSetUserPassword(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int)(results[0])); + } + + /// + public void SetUserPasswordAsync(int itemId, int accountId, string password) { + this.SetUserPasswordAsync(itemId, accountId, password, null); + } + + /// + public void SetUserPasswordAsync(int itemId, int accountId, string password, object userState) { + if ((this.SetUserPasswordOperationCompleted == null)) { + this.SetUserPasswordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserPasswordOperationCompleted); + } + this.InvokeAsync("SetUserPassword", new object[] { + itemId, + accountId, + password}, this.SetUserPasswordOperationCompleted, userState); + } + + private void OnSetUserPasswordOperationCompleted(object arg) { + if ((this.SetUserPasswordCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetUserPasswordCompleted(this, new SetUserPasswordCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SearchAccounts", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public OrganizationUser[] SearchAccounts(int itemId, string filterColumn, string filterValue, string sortColumn, bool includeMailboxes) { @@ -1710,6 +1872,32 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void ChangeOrganizationDomainTypeCompletedEventHandler(object sender, ChangeOrganizationDomainTypeCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class ChangeOrganizationDomainTypeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal ChangeOrganizationDomainTypeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public int Result { + get { + this.RaiseExceptionIfNecessary(); + return ((int)(this.results[0])); + } + } + } + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetOrganizationDomainsCompletedEventHandler(object sender, GetOrganizationDomainsCompletedEventArgs e); @@ -1918,6 +2106,58 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetUserPrincipalNameCompletedEventHandler(object sender, SetUserPrincipalNameCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SetUserPrincipalNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SetUserPrincipalNameCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public int Result { + get { + this.RaiseExceptionIfNecessary(); + return ((int)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetUserPasswordCompletedEventHandler(object sender, SetUserPasswordCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SetUserPasswordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SetUserPasswordCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public int Result { + get { + this.RaiseExceptionIfNecessary(); + return ((int)(this.results[0])); + } + } + } + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SearchAccountsCompletedEventHandler(object sender, SearchAccountsCompletedEventArgs e); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ServersProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ServersProxy.cs index b273f2b9..fefe8560 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ServersProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ServersProxy.cs @@ -1,3 +1,4 @@ +// Copyright (c) 2012, Outercurve Foundation. // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, @@ -38,8 +39,7 @@ // // This source code was auto-generated by wsdl, Version=2.0.50727.3038. // -namespace WebsitePanel.EnterpriseServer -{ +namespace WebsitePanel.EnterpriseServer { using System.Xml.Serialization; using System.Web.Services; using System.ComponentModel; @@ -48,15 +48,17 @@ namespace WebsitePanel.EnterpriseServer using System.Diagnostics; using System.Data; + using WebsitePanel.Providers; using WebsitePanel.Providers.Common; using WebsitePanel.Server; using WebsitePanel.Providers.DNS; using WebsitePanel.Providers.ResultObjects; - + + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="esServersSoap", Namespace="http://smbsaas/websitepanel/enterpriseserver")] @@ -206,6 +208,8 @@ namespace WebsitePanel.EnterpriseServer private System.Threading.SendOrPostCallback GetDomainsOperationCompleted; + private System.Threading.SendOrPostCallback GetDomainsByDomainIdOperationCompleted; + private System.Threading.SendOrPostCallback GetMyDomainsOperationCompleted; private System.Threading.SendOrPostCallback GetResellerDomainsOperationCompleted; @@ -511,6 +515,9 @@ namespace WebsitePanel.EnterpriseServer /// public event GetDomainsCompletedEventHandler GetDomainsCompleted; + /// + public event GetDomainsByDomainIdCompletedEventHandler GetDomainsByDomainIdCompleted; + /// public event GetMyDomainsCompletedEventHandler GetMyDomainsCompleted; @@ -3748,6 +3755,47 @@ namespace WebsitePanel.EnterpriseServer } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetDomainsByDomainId", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public DomainInfo[] GetDomainsByDomainId(int domainId) { + object[] results = this.Invoke("GetDomainsByDomainId", new object[] { + domainId}); + return ((DomainInfo[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetDomainsByDomainId(int domainId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetDomainsByDomainId", new object[] { + domainId}, callback, asyncState); + } + + /// + public DomainInfo[] EndGetDomainsByDomainId(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((DomainInfo[])(results[0])); + } + + /// + public void GetDomainsByDomainIdAsync(int domainId) { + this.GetDomainsByDomainIdAsync(domainId, null); + } + + /// + public void GetDomainsByDomainIdAsync(int domainId, object userState) { + if ((this.GetDomainsByDomainIdOperationCompleted == null)) { + this.GetDomainsByDomainIdOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetDomainsByDomainIdOperationCompleted); + } + this.InvokeAsync("GetDomainsByDomainId", new object[] { + domainId}, this.GetDomainsByDomainIdOperationCompleted, userState); + } + + private void OnGetDomainsByDomainIdOperationCompleted(object arg) { + if ((this.GetDomainsByDomainIdCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetDomainsByDomainIdCompleted(this, new GetDomainsByDomainIdCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetMyDomains", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public DomainInfo[] GetMyDomains(int packageId) { @@ -5622,11 +5670,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetAllServersCompletedEventHandler(object sender, GetAllServersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetAllServersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5648,11 +5696,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawAllServersCompletedEventHandler(object sender, GetRawAllServersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawAllServersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5674,11 +5722,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServersCompletedEventHandler(object sender, GetServersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5700,11 +5748,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawServersCompletedEventHandler(object sender, GetRawServersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawServersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5726,11 +5774,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServerShortDetailsCompletedEventHandler(object sender, GetServerShortDetailsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServerShortDetailsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5752,11 +5800,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServerByIdCompletedEventHandler(object sender, GetServerByIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServerByIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5778,11 +5826,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServerByNameCompletedEventHandler(object sender, GetServerByNameCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServerByNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5804,11 +5852,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckServerAvailableCompletedEventHandler(object sender, CheckServerAvailableCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CheckServerAvailableCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5830,11 +5878,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddServerCompletedEventHandler(object sender, AddServerCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5856,11 +5904,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateServerCompletedEventHandler(object sender, UpdateServerCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5882,11 +5930,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateServerConnectionPasswordCompletedEventHandler(object sender, UpdateServerConnectionPasswordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateServerConnectionPasswordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5908,11 +5956,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateServerADPasswordCompletedEventHandler(object sender, UpdateServerADPasswordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateServerADPasswordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5934,11 +5982,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteServerCompletedEventHandler(object sender, DeleteServerCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5960,11 +6008,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetVirtualServersCompletedEventHandler(object sender, GetVirtualServersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetVirtualServersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5986,11 +6034,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetAvailableVirtualServicesCompletedEventHandler(object sender, GetAvailableVirtualServicesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetAvailableVirtualServicesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6012,11 +6060,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetVirtualServicesCompletedEventHandler(object sender, GetVirtualServicesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetVirtualServicesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6038,11 +6086,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddVirtualServicesCompletedEventHandler(object sender, AddVirtualServicesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddVirtualServicesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6064,11 +6112,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteVirtualServicesCompletedEventHandler(object sender, DeleteVirtualServicesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteVirtualServicesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6090,11 +6138,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateVirtualGroupsCompletedEventHandler(object sender, UpdateVirtualGroupsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateVirtualGroupsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6116,11 +6164,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawServicesByServerIdCompletedEventHandler(object sender, GetRawServicesByServerIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawServicesByServerIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6142,11 +6190,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServicesByServerIdCompletedEventHandler(object sender, GetServicesByServerIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServicesByServerIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6168,11 +6216,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServicesByServerIdGroupNameCompletedEventHandler(object sender, GetServicesByServerIdGroupNameCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServicesByServerIdGroupNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6194,11 +6242,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawServicesByGroupIdCompletedEventHandler(object sender, GetRawServicesByGroupIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawServicesByGroupIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6220,11 +6268,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawServicesByGroupNameCompletedEventHandler(object sender, GetRawServicesByGroupNameCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawServicesByGroupNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6246,11 +6294,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServiceInfoCompletedEventHandler(object sender, GetServiceInfoCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServiceInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6272,11 +6320,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddServiceCompletedEventHandler(object sender, AddServiceCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddServiceCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6298,11 +6346,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateServiceCompletedEventHandler(object sender, UpdateServiceCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateServiceCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6324,11 +6372,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteServiceCompletedEventHandler(object sender, DeleteServiceCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteServiceCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6350,11 +6398,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServiceSettingsCompletedEventHandler(object sender, GetServiceSettingsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServiceSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6376,11 +6424,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateServiceSettingsCompletedEventHandler(object sender, UpdateServiceSettingsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateServiceSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6402,11 +6450,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void InstallServiceCompletedEventHandler(object sender, InstallServiceCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class InstallServiceCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6428,11 +6476,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetProviderServiceQuotaCompletedEventHandler(object sender, GetProviderServiceQuotaCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetProviderServiceQuotaCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6454,11 +6502,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetInstalledProvidersCompletedEventHandler(object sender, GetInstalledProvidersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetInstalledProvidersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6480,11 +6528,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetResourceGroupsCompletedEventHandler(object sender, GetResourceGroupsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetResourceGroupsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6506,11 +6554,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetResourceGroupCompletedEventHandler(object sender, GetResourceGroupCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetResourceGroupCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6532,11 +6580,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetProviderCompletedEventHandler(object sender, GetProviderCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetProviderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6558,11 +6606,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetProvidersCompletedEventHandler(object sender, GetProvidersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetProvidersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6584,11 +6632,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetProvidersByGroupIdCompletedEventHandler(object sender, GetProvidersByGroupIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetProvidersByGroupIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6610,11 +6658,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetPackageServiceProviderCompletedEventHandler(object sender, GetPackageServiceProviderCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageServiceProviderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6636,11 +6684,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void IsInstalledCompletedEventHandler(object sender, IsInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6662,11 +6710,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetServerVersionCompletedEventHandler(object sender, GetServerVersionCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetServerVersionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6688,11 +6736,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetIPAddressesCompletedEventHandler(object sender, GetIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6714,11 +6762,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetIPAddressesPagedCompletedEventHandler(object sender, GetIPAddressesPagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetIPAddressesPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6740,11 +6788,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetIPAddressCompletedEventHandler(object sender, GetIPAddressCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetIPAddressCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6766,11 +6814,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddIPAddressCompletedEventHandler(object sender, AddIPAddressCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddIPAddressCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6792,11 +6840,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddIPAddressesRangeCompletedEventHandler(object sender, AddIPAddressesRangeCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddIPAddressesRangeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6818,11 +6866,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateIPAddressCompletedEventHandler(object sender, UpdateIPAddressCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateIPAddressCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6844,11 +6892,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateIPAddressesCompletedEventHandler(object sender, UpdateIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6870,11 +6918,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteIPAddressCompletedEventHandler(object sender, DeleteIPAddressCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteIPAddressCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6896,11 +6944,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteIPAddressesCompletedEventHandler(object sender, DeleteIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6922,11 +6970,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetUnallottedIPAddressesCompletedEventHandler(object sender, GetUnallottedIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUnallottedIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6948,11 +6996,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetPackageIPAddressesCompletedEventHandler(object sender, GetPackageIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -6974,11 +7022,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetPackageUnassignedIPAddressesCompletedEventHandler(object sender, GetPackageUnassignedIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPackageUnassignedIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7000,11 +7048,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AllocatePackageIPAddressesCompletedEventHandler(object sender, AllocatePackageIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AllocatePackageIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7026,11 +7074,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AllocateMaximumPackageIPAddressesCompletedEventHandler(object sender, AllocateMaximumPackageIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AllocateMaximumPackageIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7052,11 +7100,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeallocatePackageIPAddressesCompletedEventHandler(object sender, DeallocatePackageIPAddressesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeallocatePackageIPAddressesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7078,11 +7126,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetClustersCompletedEventHandler(object sender, GetClustersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetClustersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7104,11 +7152,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddClusterCompletedEventHandler(object sender, AddClusterCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddClusterCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7130,11 +7178,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteClusterCompletedEventHandler(object sender, DeleteClusterCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteClusterCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7156,11 +7204,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawDnsRecordsByServiceCompletedEventHandler(object sender, GetRawDnsRecordsByServiceCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawDnsRecordsByServiceCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7182,11 +7230,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawDnsRecordsByServerCompletedEventHandler(object sender, GetRawDnsRecordsByServerCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawDnsRecordsByServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7208,11 +7256,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawDnsRecordsByPackageCompletedEventHandler(object sender, GetRawDnsRecordsByPackageCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawDnsRecordsByPackageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7234,11 +7282,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawDnsRecordsByGroupCompletedEventHandler(object sender, GetRawDnsRecordsByGroupCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawDnsRecordsByGroupCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7260,11 +7308,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDnsRecordsByServiceCompletedEventHandler(object sender, GetDnsRecordsByServiceCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDnsRecordsByServiceCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7286,11 +7334,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDnsRecordsByServerCompletedEventHandler(object sender, GetDnsRecordsByServerCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDnsRecordsByServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7312,11 +7360,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDnsRecordsByPackageCompletedEventHandler(object sender, GetDnsRecordsByPackageCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDnsRecordsByPackageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7338,11 +7386,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDnsRecordsByGroupCompletedEventHandler(object sender, GetDnsRecordsByGroupCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDnsRecordsByGroupCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7364,11 +7412,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDnsRecordCompletedEventHandler(object sender, GetDnsRecordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDnsRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7390,11 +7438,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddDnsRecordCompletedEventHandler(object sender, AddDnsRecordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddDnsRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7416,11 +7464,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateDnsRecordCompletedEventHandler(object sender, UpdateDnsRecordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateDnsRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7442,11 +7490,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteDnsRecordCompletedEventHandler(object sender, DeleteDnsRecordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteDnsRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7468,11 +7516,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDomainsCompletedEventHandler(object sender, GetDomainsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDomainsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7494,11 +7542,37 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void GetDomainsByDomainIdCompletedEventHandler(object sender, GetDomainsByDomainIdCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetDomainsByDomainIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetDomainsByDomainIdCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public DomainInfo[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((DomainInfo[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetMyDomainsCompletedEventHandler(object sender, GetMyDomainsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetMyDomainsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7520,11 +7594,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetResellerDomainsCompletedEventHandler(object sender, GetResellerDomainsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetResellerDomainsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7546,11 +7620,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDomainsPagedCompletedEventHandler(object sender, GetDomainsPagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDomainsPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7572,11 +7646,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDomainCompletedEventHandler(object sender, GetDomainCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7598,11 +7672,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddDomainCompletedEventHandler(object sender, AddDomainCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7624,11 +7698,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddDomainWithProvisioningCompletedEventHandler(object sender, AddDomainWithProvisioningCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddDomainWithProvisioningCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7650,11 +7724,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateDomainCompletedEventHandler(object sender, UpdateDomainCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7676,11 +7750,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteDomainCompletedEventHandler(object sender, DeleteDomainCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7702,11 +7776,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DetachDomainCompletedEventHandler(object sender, DetachDomainCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DetachDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7728,11 +7802,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void EnableDomainDnsCompletedEventHandler(object sender, EnableDomainDnsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class EnableDomainDnsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7754,11 +7828,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DisableDomainDnsCompletedEventHandler(object sender, DisableDomainDnsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DisableDomainDnsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7780,11 +7854,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateDomainInstantAliasCompletedEventHandler(object sender, CreateDomainInstantAliasCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CreateDomainInstantAliasCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7806,11 +7880,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteDomainInstantAliasCompletedEventHandler(object sender, DeleteDomainInstantAliasCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteDomainInstantAliasCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7832,11 +7906,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDnsZoneRecordsCompletedEventHandler(object sender, GetDnsZoneRecordsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetDnsZoneRecordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7858,11 +7932,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetRawDnsZoneRecordsCompletedEventHandler(object sender, GetRawDnsZoneRecordsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetRawDnsZoneRecordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7884,11 +7958,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddDnsZoneRecordCompletedEventHandler(object sender, AddDnsZoneRecordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class AddDnsZoneRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7910,11 +7984,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateDnsZoneRecordCompletedEventHandler(object sender, UpdateDnsZoneRecordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class UpdateDnsZoneRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7936,11 +8010,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteDnsZoneRecordCompletedEventHandler(object sender, DeleteDnsZoneRecordCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteDnsZoneRecordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7962,11 +8036,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetTerminalServicesSessionsCompletedEventHandler(object sender, GetTerminalServicesSessionsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetTerminalServicesSessionsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -7988,11 +8062,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CloseTerminalServicesSessionCompletedEventHandler(object sender, CloseTerminalServicesSessionCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CloseTerminalServicesSessionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8014,11 +8088,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetWindowsProcessesCompletedEventHandler(object sender, GetWindowsProcessesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetWindowsProcessesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8040,11 +8114,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void TerminateWindowsProcessCompletedEventHandler(object sender, TerminateWindowsProcessCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class TerminateWindowsProcessCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8066,11 +8140,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckLoadUserProfileCompletedEventHandler(object sender, CheckLoadUserProfileCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CheckLoadUserProfileCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8092,19 +8166,19 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void EnableLoadUserProfileCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void InitWPIFeedsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetWPITabsCompletedEventHandler(object sender, GetWPITabsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetWPITabsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8126,11 +8200,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetWPIKeywordsCompletedEventHandler(object sender, GetWPIKeywordsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetWPIKeywordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8152,11 +8226,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetWPIProductsCompletedEventHandler(object sender, GetWPIProductsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetWPIProductsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8178,11 +8252,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetWPIProductsFilteredCompletedEventHandler(object sender, GetWPIProductsFilteredCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetWPIProductsFilteredCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8204,11 +8278,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetWPIProductsWithDependenciesCompletedEventHandler(object sender, GetWPIProductsWithDependenciesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetWPIProductsWithDependenciesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8230,19 +8304,19 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void InstallWPIProductsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CancelInstallWPIProductsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetWPIStatusCompletedEventHandler(object sender, GetWPIStatusCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetWPIStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8264,11 +8338,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void WpiGetLogFileDirectoryCompletedEventHandler(object sender, WpiGetLogFileDirectoryCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class WpiGetLogFileDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8290,11 +8364,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void WpiGetLogsInDirectoryCompletedEventHandler(object sender, WpiGetLogsInDirectoryCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class WpiGetLogsInDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8316,11 +8390,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetWindowsServicesCompletedEventHandler(object sender, GetWindowsServicesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetWindowsServicesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8342,11 +8416,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ChangeWindowsServiceStatusCompletedEventHandler(object sender, ChangeWindowsServiceStatusCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class ChangeWindowsServiceStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8368,11 +8442,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetLogNamesCompletedEventHandler(object sender, GetLogNamesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetLogNamesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8394,11 +8468,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetLogEntriesCompletedEventHandler(object sender, GetLogEntriesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetLogEntriesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8420,11 +8494,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetLogEntriesPagedCompletedEventHandler(object sender, GetLogEntriesPagedCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetLogEntriesPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8446,11 +8520,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ClearLogCompletedEventHandler(object sender, ClearLogCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class ClearLogCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -8472,11 +8546,11 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void RebootSystemCompletedEventHandler(object sender, RebootSystemCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class RebootSystemCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln index f28eaeef..36ca6285 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln @@ -2,7 +2,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2010 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C57D3F9F-7BA0-4D38-A159-B6EDA5C19B13}" ProjectSection(SolutionItems) = preProject - ..\Database\install_db.sql = ..\Database\install_db.sql ..\..\LICENSE.txt = ..\..\LICENSE.txt ..\..\Readme.htm = ..\..\Readme.htm ..\..\ReleaseNotes.htm = ..\..\ReleaseNotes.htm diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs index 5135bfc6..c1b440b3 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs @@ -5,7 +5,7 @@ using System.Web; namespace WebsitePanel.EnterpriseServer { - public struct IPAddress { + public struct IPAddress : IComparable { public Int128 Address; public bool V6 { get; private set; } public bool V4 { get { return !V6 || Null; } } @@ -68,10 +68,19 @@ namespace WebsitePanel.EnterpriseServer { if (Null) return ""; var s = new System.Text.StringBuilder(); - if (!V6) { - var ipl = (long)Address; - s.Append(String.Format("{0}.{1}.{2}.{3}", (ipl >> 24) & 0xFFL, (ipl >> 16) & 0xFFL, (ipl >> 8) & 0xFFL, (ipl & 0xFFL))); - } else if (!IsMask) { + if (!V6) + { + var ipl = Address; + if (IsMask) + { + int digits = 32 - Cidr; + ipl = (Int128.MaxValue << 1) | 0x1; // remove left sign bit + ipl = ipl << digits; + } + s.Append(String.Format("{0}.{1}.{2}.{3}", (ipl >> 24) & 0xFFL, (ipl >> 16) & 0xFFL, (ipl >> 8) & 0xFFL, (ipl & 0xFFL))); + } + else if (!IsMask) + { var vals = new List(); int i; @@ -127,6 +136,30 @@ namespace WebsitePanel.EnterpriseServer { public static bool operator >(IPAddress a, IPAddress b) { return a.Address > b.Address; } public static bool operator <=(IPAddress a, IPAddress b) { return a.Address <= b.Address; } public static bool operator >=(IPAddress a, IPAddress b) { return a.Address >= b.Address; } + + public override bool Equals(object obj) + { + if (obj is IPAddress) + { + var b = (IPAddress)obj; + return this.Address == b.Address && this.Null == b.Null && (this.Null || !(this.IsSubnet && b.IsSubnet || this.IsMask && b.IsMask) || this.Cidr == b.Cidr); + } + else if (obj is long) + { + var b = (long)obj; + return this.Address == b; + } + else + { + return false; + } + } + + public override int GetHashCode() + { + return this.Address.GetHashCode(); + } + /* public static IPAddress operator +(IPAddress a, IPAddress b) { if (a.IsSubnet || b.IsSubnet || a.V6 != b.V6) throw new ArgumentException("Arithmetic with subnets or mixed v4 & v6 addresses not supported."); @@ -149,7 +182,7 @@ namespace WebsitePanel.EnterpriseServer { } public static IPAddress operator &(IPAddress a, IPAddress b) { if (a.V6 != b.V6) throw new ArgumentException("Arithmetic with mixed v4 & v6 addresses not supported."); - return new IPAddress { Address = a.Address | b.Address, Cidr = a.V4 ? 32 : 128, Null = false, V6 = a.V6, IsSubnet = false }; + return new IPAddress { Address = a.Address & b.Address, Cidr = a.V4 ? 32 : 128, Null = false, V6 = a.V6, IsSubnet = false }; } public static IPAddress operator ~(IPAddress a) { if (a.Null) return new IPAddress { Address = 0, Null = true, Cidr = a.V4 ? 32 : 128, V6 = true, IsSubnet = false }; @@ -157,7 +190,20 @@ namespace WebsitePanel.EnterpriseServer { } public static implicit operator IPAddress(NullIPAddress a) { return new IPAddress { Null = true, Address = 0, Cidr = -1 }; } - } + + public int CompareTo(object obj) + { + var a = this.Address; + var b = ((IPAddress)obj).Address; + + if (a < b) + return 1; + else if (a > b) + return -1; + else + return 0; + } + } public class NullIPAddress { } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index b102fb37..a92f6776 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -785,14 +785,35 @@ namespace WebsitePanel.EnterpriseServer new SqlParameter("@domainId", domainId)); } - public static IDataReader GetDomainByName(int actorId, string domainName) + public static IDataReader GetDomainByName(int actorId, string domainName, bool searchOnDomainPointer, bool isDomainPointer) { return SqlHelper.ExecuteReader(ConnectionString, CommandType.StoredProcedure, ObjectQualifier + "GetDomainByName", new SqlParameter("@ActorId", actorId), - new SqlParameter("@domainName", domainName)); + new SqlParameter("@domainName", domainName), + new SqlParameter("@SearchOnDomainPointer", searchOnDomainPointer), + new SqlParameter("@IsDomainPointer", isDomainPointer)); } + + public static DataSet GetDomainsByZoneId(int actorId, int zoneId) + { + return SqlHelper.ExecuteDataset(ConnectionString, CommandType.StoredProcedure, + ObjectQualifier + "GetDomainsByZoneID", + new SqlParameter("@ActorId", actorId), + new SqlParameter("@ZoneID", zoneId)); + } + + public static DataSet GetDomainsByDomainItemId(int actorId, int domainId) + { + return SqlHelper.ExecuteDataset(ConnectionString, CommandType.StoredProcedure, + ObjectQualifier + "GetDomainsByDomainItemId", + new SqlParameter("@ActorId", actorId), + new SqlParameter("@DomainID", domainId)); + } + + + public static int CheckDomain(int packageId, string domainName, bool isDomainPointer) { SqlParameter prmId = new SqlParameter("@Result", SqlDbType.Int); @@ -808,6 +829,22 @@ namespace WebsitePanel.EnterpriseServer return Convert.ToInt32(prmId.Value); } + + + public static int CheckDomainUsedByHostedOrganization(string domainName) + { + SqlParameter prmId = new SqlParameter("@Result", SqlDbType.Int); + prmId.Direction = ParameterDirection.Output; + + SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, + ObjectQualifier + "CheckDomainUsedByHostedOrganization", + prmId, + new SqlParameter("@domainName", domainName)); + + return Convert.ToInt32(prmId.Value); + } + + public static int AddDomain(int actorId, int packageId, int zoneItemId, string domainName, bool hostingAllowed, int webSiteId, int mailDomainId, bool isSubDomain, bool isInstantAlias, bool isDomainPointer) { @@ -832,7 +869,7 @@ namespace WebsitePanel.EnterpriseServer } public static void UpdateDomain(int actorId, int domainId, int zoneItemId, - bool hostingAllowed, int webSiteId, int mailDomainId) + bool hostingAllowed, int webSiteId, int mailDomainId, int domainItemId) { SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, ObjectQualifier + "UpdateDomain", @@ -841,7 +878,8 @@ namespace WebsitePanel.EnterpriseServer new SqlParameter("@ZoneItemId", zoneItemId), new SqlParameter("@HostingAllowed", hostingAllowed), new SqlParameter("@WebSiteId", webSiteId), - new SqlParameter("@MailDomainId", mailDomainId)); + new SqlParameter("@MailDomainId", mailDomainId), + new SqlParameter("@DomainItemId", domainItemId)); } public static void DeleteDomain(int actorId, int domainId) @@ -2153,6 +2191,18 @@ namespace WebsitePanel.EnterpriseServer ); } + public static void ChangeExchangeAcceptedDomainType(int itemId, int domainId, int domainTypeId) + { + SqlHelper.ExecuteNonQuery( + ConnectionString, + CommandType.StoredProcedure, + "ChangeExchangeAcceptedDomainType", + new SqlParameter("@ItemID", itemId), + new SqlParameter("@DomainID", domainId), + new SqlParameter("@DomainTypeID", domainTypeId) + ); + } + public static IDataReader GetExchangeOrganizationStatistics(int itemId) { return SqlHelper.ExecuteReader( @@ -2304,6 +2354,16 @@ namespace WebsitePanel.EnterpriseServer ); } + public static void UpdateExchangeAccountUserPrincipalName(int accountId, string userPrincipalName) + { + SqlHelper.ExecuteNonQuery( + ConnectionString, + CommandType.StoredProcedure, + "UpdateExchangeAccountUserPrincipalName", + new SqlParameter("@AccountID", accountId), + new SqlParameter("@UserPrincipalName", userPrincipalName)); + } + public static IDataReader GetExchangeAccount(int itemId, int accountId) { return SqlHelper.ExecuteReader( @@ -2549,6 +2609,18 @@ namespace WebsitePanel.EnterpriseServer ); } + + public static IDataReader GetExchangeOrganization(int itemId) + { + return SqlHelper.ExecuteReader( + ConnectionString, + CommandType.StoredProcedure, + "GetExchangeOrganization", + new SqlParameter("@ItemID", itemId) + ); + } + + public static void SetOrganizationDefaultExchangeMailboxPlan(int itemId, int mailboxPlanId) { SqlHelper.ExecuteNonQuery( @@ -3211,7 +3283,7 @@ namespace WebsitePanel.EnterpriseServer #region Lync - public static void AddLyncUser(int accountId, int lyncUserPlanId) + public static void AddLyncUser(int accountId, int lyncUserPlanId, string sipAddress) { SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, @@ -3219,10 +3291,24 @@ namespace WebsitePanel.EnterpriseServer new[] { new SqlParameter("@AccountID", accountId), - new SqlParameter("@LyncUserPlanID", lyncUserPlanId) + new SqlParameter("@LyncUserPlanID", lyncUserPlanId), + new SqlParameter("@SipAddress", sipAddress) }); } + public static void UpdateLyncUser(int accountId, string sipAddress) + { + SqlHelper.ExecuteNonQuery(ConnectionString, + CommandType.StoredProcedure, + "UpdateLyncUser", + new[] + { + new SqlParameter("@AccountID", accountId), + new SqlParameter("@SipAddress", sipAddress) + }); + } + + public static bool CheckLyncUserExists(int accountId) { int res = (int)SqlHelper.ExecuteScalar(ConnectionString, CommandType.StoredProcedure, "CheckLyncUserExists", @@ -3230,6 +3316,25 @@ namespace WebsitePanel.EnterpriseServer return res > 0; } + public static bool LyncUserExists(int accountId, string sipAddress) + { + SqlParameter outParam = new SqlParameter("@Exists", SqlDbType.Bit); + outParam.Direction = ParameterDirection.Output; + + SqlHelper.ExecuteNonQuery( + ConnectionString, + CommandType.StoredProcedure, + "LyncUserExists", + new SqlParameter("@AccountID", accountId), + new SqlParameter("@SipAddress", sipAddress), + outParam + ); + + return Convert.ToBoolean(outParam.Value); + } + + + public static IDataReader GetLyncUsers(int itemId, string sortColumn, string sortDirection, int startRow, int count) { SqlParameter[] sqlParams = new SqlParameter[] @@ -3402,7 +3507,6 @@ namespace WebsitePanel.EnterpriseServer public static int GetPackageIdByName(string Name) { - // get Helicon Zoo provider int packageId = -1; List providers = ServerController.GetProviders(); foreach (ProviderInfo providerInfo in providers) @@ -3414,10 +3518,10 @@ namespace WebsitePanel.EnterpriseServer } } - if (-1 == packageId) - { - throw new Exception("Provider not found"); - } + //if (-1 == packageId) + //{ + // throw new Exception("Provider not found"); + //} return packageId; } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs index 0592a899..de9aa5fd 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs @@ -47,10 +47,10 @@ namespace WebsitePanel.EnterpriseServer public static int AddZone(int packageId, int serviceId, string zoneName) { - return AddZone(packageId, serviceId, zoneName, true); + return AddZone(packageId, serviceId, zoneName, true, false); } - public static int AddZone(int packageId, int serviceId, string zoneName, bool addPackageItem) + public static int AddZone(int packageId, int serviceId, string zoneName, bool addPackageItem, bool ignoreGlobalDNSRecords) { // get DNS provider DNSServer dns = GetDNSServer(serviceId); @@ -148,13 +148,17 @@ namespace WebsitePanel.EnterpriseServer zoneRecords.Add(ns); } - // add all other records - zoneRecords.AddRange(BuildDnsResourceRecords(records, "", zoneName, "")); + if (!ignoreGlobalDNSRecords) + { + // add all other records + zoneRecords.AddRange(BuildDnsResourceRecords(records, "", zoneName, "")); + } // add zone records dns.AddZoneRecords(zoneName, zoneRecords.ToArray()); + // add secondary zones foreach (int secondaryId in secondaryServiceIds) { @@ -190,7 +194,7 @@ namespace WebsitePanel.EnterpriseServer return zoneItemId; } - + private static int RegisterZoneItems(int spaceId, int serviceId, string zoneName, bool primaryZone) { // zone item @@ -202,6 +206,7 @@ namespace WebsitePanel.EnterpriseServer return zoneItemId; } + public static int DeleteZone(int zoneItemId) { // delete DNS zone if applicable @@ -283,8 +288,13 @@ namespace WebsitePanel.EnterpriseServer if (record.RecordType == "A" || record.RecordType == "AAAA") { + // If the service IP address and the DNS records external address are empty / null SimpleDNS will fail to properly create the zone record + if (String.IsNullOrEmpty(serviceIP) && String.IsNullOrEmpty(record.ExternalIP) && String.IsNullOrEmpty(record.RecordData)) + continue; + rr.RecordData = String.IsNullOrEmpty(record.RecordData) ? record.ExternalIP : record.RecordData; - rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "ip", record.ExternalIP); + rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "ip", string.IsNullOrEmpty(serviceIP) ? record.ExternalIP : serviceIP); + rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "domain_name", string.IsNullOrEmpty(domainName) ? string.Empty : domainName); if (String.IsNullOrEmpty(rr.RecordData) && !String.IsNullOrEmpty(serviceIP)) rr.RecordData = serviceIP; @@ -315,7 +325,6 @@ namespace WebsitePanel.EnterpriseServer zoneRecords.Add(rr); } } - return zoneRecords; } @@ -443,7 +452,7 @@ namespace WebsitePanel.EnterpriseServer if (!dns.ZoneExists(itemName)) { // create primary and secondary zones - AddZone(packageId, serviceId, itemName, false); + AddZone(packageId, serviceId, itemName, false, false); // restore records XmlSerializer serializer = new XmlSerializer(typeof(DnsRecord)); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 9fe58540..9e8665bb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -446,11 +446,31 @@ namespace WebsitePanel.EnterpriseServer { hubTransportRole.AddAuthoritativeDomain(domain.DomainName); } + if (domain.DomainType != ExchangeAcceptedDomainType.Authoritative) + { + hubTransportRole.ChangeAcceptedDomainType(domain.DomainName, domain.DomainType); + } } authDomainCreated = true; break; } + foreach (OrganizationDomainName d in domains) + { + DomainInfo domain = ServerController.GetDomain(d.DomainId); + + //Add the service records + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, ""); + ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.BlackBerry, domain, ""); + ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.OCS, domain, ""); + } + } + } + // 4) Add the address book policy (Exchange 2010 SP2 // @@ -747,7 +767,7 @@ namespace WebsitePanel.EnterpriseServer // load account ExchangeAccount account = GetAccount(itemId, accountId); - return exchange.GetMailboxStatistics(account.AccountName); + return exchange.GetMailboxStatistics(account.UserPrincipalName); } catch (Exception ex) { @@ -1221,6 +1241,9 @@ namespace WebsitePanel.EnterpriseServer string CounterStr = "00000"; int counter = 0; bool bFound = false; + + if (!AccountExists(accountName)) return accountName; + do { accountName = genSamLogin(name, CounterStr); @@ -1293,8 +1316,13 @@ namespace WebsitePanel.EnterpriseServer if (String.Compare(account.PrimaryEmailAddress, email.EmailAddress, true) == 0) { email.IsPrimary = true; - break; } + + if (String.Compare(account.UserPrincipalName, email.EmailAddress, true) == 0) + { + email.IsUserPrincipalName = true; + } + } return emails.ToArray(); @@ -1410,7 +1438,16 @@ namespace WebsitePanel.EnterpriseServer if (domains == null || Array.BinarySearch(domains, domain.DomainName) < 0) hubTransportRole.AddAuthoritativeDomain(domain.DomainName); break; - } + } + + //Add the service records + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, ""); + } + } return 0; } @@ -1423,8 +1460,64 @@ namespace WebsitePanel.EnterpriseServer TaskManager.CompleteTask(); } } - + public static int ChangeAcceptedDomainType(int itemId, int domainId, ExchangeAcceptedDomainType domainType) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // place log record + TaskManager.StartTask("EXCHANGE", "CHANGE_DOMAIN_TYPE"); + TaskManager.TaskParameters["Domain ID"] = domainId; + TaskManager.TaskParameters["Domain Type"] = domainType.ToString(); + TaskManager.ItemId = itemId; + + try + { + // load organization + Organization org = (Organization)PackageController.GetPackageItem(itemId); + if (org == null) + return -1; + + // load domain + DomainInfo domain = ServerController.GetDomain(domainId); + if (domain == null) + return -1; + + int[] hubTransportServiceIds; + int[] clientAccessServiceIds; + int exchangeServiceId = GetExchangeServiceID(org.PackageId); + GetExchangeServices(exchangeServiceId, out hubTransportServiceIds, out clientAccessServiceIds); + + foreach (int id in hubTransportServiceIds) + { + ExchangeServer hubTransportRole = null; + try + { + hubTransportRole = GetExchangeServer(id, org.ServiceId); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + continue; + } + + hubTransportRole.ChangeAcceptedDomainType(domain.DomainName, domainType); + break; + + } + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } public static int DeleteAuthoritativeDomain(int itemId, int domainId) { @@ -1449,6 +1542,10 @@ namespace WebsitePanel.EnterpriseServer if(domain == null) return -1; + if (DataProvider.CheckDomainUsedByHostedOrganization(domain.DomainName) == 1) + { + return -1; + } // delete domain on Exchange int[] hubTransportServiceIds; @@ -1474,6 +1571,17 @@ namespace WebsitePanel.EnterpriseServer } + //Add the service records + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.RemoveServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, "", false); + } + } + + + return 0; } catch (Exception ex) @@ -1594,6 +1702,9 @@ namespace WebsitePanel.EnterpriseServer ExchangeMailboxPlan plan = GetExchangeMailboxPlan(itemId, mailboxPlanId); if (maxDiskSpace != -1) { + if (plan.MailboxSizeMB == -1) + return BusinessErrorCodes.ERROR_EXCHANGE_STORAGE_QUOTAS_EXCEED_HOST_VALUES; + if ((quotaUsed + plan.MailboxSizeMB) > (maxDiskSpace)) return BusinessErrorCodes.ERROR_EXCHANGE_STORAGE_QUOTAS_EXCEED_HOST_VALUES; } @@ -1711,10 +1822,11 @@ namespace WebsitePanel.EnterpriseServer // delete mailbox int serviceExchangeId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(serviceExchangeId, org.ServiceId); - exchange.DisableMailbox(account.AccountName); + exchange.DisableMailbox(account.UserPrincipalName); account.AccountType = ExchangeAccountType.User; - account.MailEnabledPublicFolder = false; + account.MailEnabledPublicFolder = false; + account.AccountPassword = null; UpdateAccount(account); DataProvider.DeleteUserEmailAddresses(account.AccountId, account.PrimaryEmailAddress); @@ -1760,7 +1872,7 @@ namespace WebsitePanel.EnterpriseServer // delete mailbox int serviceExchangeId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(serviceExchangeId, org.ServiceId); - exchange.DeleteMailbox(account.AccountName); + exchange.DeleteMailbox(account.UserPrincipalName); @@ -1835,7 +1947,7 @@ namespace WebsitePanel.EnterpriseServer int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - return exchange.GetMailboxGeneralSettings(account.AccountName); + return exchange.GetMailboxGeneralSettings(account.UserPrincipalName); } catch (Exception ex) { @@ -1882,7 +1994,7 @@ namespace WebsitePanel.EnterpriseServer hideAddressBook = true; exchange.SetMailboxGeneralSettings( - account.AccountName, + account.UserPrincipalName, hideAddressBook, disabled); @@ -1954,7 +2066,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxEmailAddresses( - account.AccountName, + account.UserPrincipalName, GetAccountSimpleEmailAddresses(itemId, accountId)); return 0; @@ -2010,7 +2122,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxPrimaryEmailAddress( - account.AccountName, + account.UserPrincipalName, emailAddress); if (DataProvider.CheckOCSUserExists(account.AccountId)) @@ -2020,7 +2132,13 @@ namespace WebsitePanel.EnterpriseServer ocs.SetUserPrimaryUri(instanceId, emailAddress); } + if (DataProvider.CheckLyncUserExists(account.AccountId)) + { + LyncController.SetLyncUserGeneralSettings(itemId, accountId, emailAddress, null); + } + // save account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -2054,7 +2172,8 @@ namespace WebsitePanel.EnterpriseServer List toDelete = new List(); foreach (string emailAddress in emailAddresses) { - if (String.Compare(account.PrimaryEmailAddress, emailAddress, true) != 0) + if ((String.Compare(account.PrimaryEmailAddress, emailAddress, true) != 0) & + (String.Compare(account.UserPrincipalName, emailAddress, true) != 0)) toDelete.Add(emailAddress); } @@ -2071,7 +2190,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxEmailAddresses( - account.AccountName, + account.UserPrincipalName, GetAccountSimpleEmailAddresses(itemId, accountId)); return 0; @@ -2112,7 +2231,7 @@ namespace WebsitePanel.EnterpriseServer // get mailbox settings int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - ExchangeMailbox mailbox = exchange.GetMailboxMailFlowSettings(account.AccountName); + ExchangeMailbox mailbox = exchange.GetMailboxMailFlowSettings(account.UserPrincipalName); mailbox.DisplayName = account.DisplayName; return mailbox; } @@ -2157,7 +2276,7 @@ namespace WebsitePanel.EnterpriseServer int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - exchange.SetMailboxMailFlowSettings(account.AccountName, + exchange.SetMailboxMailFlowSettings(account.UserPrincipalName, enableForwarding, forwardingAccountName, forwardToBoth, @@ -2205,7 +2324,7 @@ namespace WebsitePanel.EnterpriseServer // get mailbox settings int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - ExchangeMailbox mailbox = exchange.GetMailboxAdvancedSettings(account.AccountName); + ExchangeMailbox mailbox = exchange.GetMailboxAdvancedSettings(account.UserPrincipalName); mailbox.DisplayName = account.DisplayName; return mailbox; } @@ -2248,6 +2367,7 @@ namespace WebsitePanel.EnterpriseServer else account.MailboxManagerActions &= ~action; // update account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -2412,7 +2532,7 @@ namespace WebsitePanel.EnterpriseServer // get mailbox settings int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - ExchangeMailbox mailbox = exchange.GetMailboxPermissions(org.OrganizationId, account.AccountName); + ExchangeMailbox mailbox = exchange.GetMailboxPermissions(org.OrganizationId, account.UserPrincipalName); mailbox.DisplayName = account.DisplayName; return mailbox; } @@ -2454,7 +2574,7 @@ namespace WebsitePanel.EnterpriseServer int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - exchange.SetMailboxPermissions(org.OrganizationId, account.AccountName, sendAsaccounts, fullAccessAcounts); + exchange.SetMailboxPermissions(org.OrganizationId, account.UserPrincipalName, sendAsaccounts, fullAccessAcounts); return 0; @@ -2512,10 +2632,25 @@ namespace WebsitePanel.EnterpriseServer } ExchangeMailboxPlan plan = GetExchangeMailboxPlan(itemId, mailboxPlanId); + if (maxDiskSpace != -1) { - if ((quotaUsed + plan.MailboxSizeMB) > (maxDiskSpace)) + if (plan.MailboxSizeMB == -1) return BusinessErrorCodes.ERROR_EXCHANGE_STORAGE_QUOTAS_EXCEED_HOST_VALUES; + + ExchangeAccount exchangeAccount = GetAccount(itemId, accountId); + if (exchangeAccount.MailboxPlanId > 0) + { + ExchangeMailboxPlan oldPlan = GetExchangeMailboxPlan(itemId, exchangeAccount.MailboxPlanId); + + if (((quotaUsed - oldPlan.MailboxSizeMB) + plan.MailboxSizeMB) > (maxDiskSpace)) + return BusinessErrorCodes.ERROR_EXCHANGE_STORAGE_QUOTAS_EXCEED_HOST_VALUES; + } + else + { + if ((quotaUsed + plan.MailboxSizeMB) > (maxDiskSpace)) + return BusinessErrorCodes.ERROR_EXCHANGE_STORAGE_QUOTAS_EXCEED_HOST_VALUES; + } } // get mailbox settings @@ -2524,7 +2659,7 @@ namespace WebsitePanel.EnterpriseServer exchange.SetMailboxAdvancedSettings( org.OrganizationId, - account.AccountName, + account.UserPrincipalName, plan.EnablePOP, plan.EnableIMAP, plan.EnableOWA, @@ -2569,6 +2704,17 @@ namespace WebsitePanel.EnterpriseServer else ExchangeServerController.GetExchangeMailboxPlansByUser(0, user, ref mailboxPlans); + + ExchangeOrganization ExchangeOrg = ObjectUtils.FillObjectFromDataReader(DataProvider.GetExchangeOrganization(itemId)); + + if (ExchangeOrg != null) + { + foreach (ExchangeMailboxPlan p in mailboxPlans) + { + p.IsDefault = (p.MailboxPlanId == ExchangeOrg.ExchangeMailboxPlanID); + } + } + return mailboxPlans; } catch (Exception ex) @@ -3058,6 +3204,7 @@ namespace WebsitePanel.EnterpriseServer // update account account.DisplayName = displayName; account.PrimaryEmailAddress = emailAddress; + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -3386,6 +3533,7 @@ namespace WebsitePanel.EnterpriseServer // update account account.DisplayName = displayName; + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -3606,6 +3754,7 @@ namespace WebsitePanel.EnterpriseServer addressLists.ToArray()); // save account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -4008,6 +4157,7 @@ namespace WebsitePanel.EnterpriseServer account.AccountName = accountName; account.MailEnabledPublicFolder = true; account.PrimaryEmailAddress = email; + account.AccountPassword = null; UpdateAccount(account); // register e-mail @@ -4060,6 +4210,7 @@ namespace WebsitePanel.EnterpriseServer // update and save account account.MailEnabledPublicFolder = false; account.PrimaryEmailAddress = ""; + account.AccountPassword = null; UpdateAccount(account); @@ -4179,6 +4330,7 @@ namespace WebsitePanel.EnterpriseServer { // rename original folder account.DisplayName = newFullName; + account.AccountPassword = null; UpdateAccount(account); // rename nested folders @@ -4396,6 +4548,7 @@ namespace WebsitePanel.EnterpriseServer emailAddress); // save account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -4613,7 +4766,7 @@ namespace WebsitePanel.EnterpriseServer int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - return exchange.GetMobileDevices(account.AccountName); + return exchange.GetMobileDevices(account.UserPrincipalName); } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/CRMController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/CRMController.cs index 10a2bd10..ed6cb8d0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/CRMController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/CRMController.cs @@ -249,7 +249,7 @@ namespace WebsitePanel.EnterpriseServer OrganizationResult serverRes = crm.CreateOrganization(orgId, org.OrganizationId, org.Name, baseCurrencyCode, baseCurrencyName, - baseCurrencySymbol, user.AccountName, user.FirstName, user.LastName, user.PrimaryEmailAddress, + baseCurrencySymbol, user.SamAccountName, user.FirstName, user.LastName, user.PrimaryEmailAddress, collation); if (!serverRes.IsSuccess) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs index 0c2a67df..a72d5b59 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs @@ -198,8 +198,8 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_CONFERENCING].QuotaAllocatedValue), Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_ALLOWVIDEO].QuotaAllocatedValue), Convert.ToInt32(cntx.Quotas[Quotas.LYNC_MAXPARTICIPANTS].QuotaAllocatedValue), - Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_CONFERENCING].QuotaAllocatedValue), - Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_CONFERENCING].QuotaAllocatedValue)); + Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_FEDERATION].QuotaAllocatedValue), + Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_ENTERPRISEVOICE].QuotaAllocatedValue)); if (string.IsNullOrEmpty(org.LyncTenantId)) { @@ -208,6 +208,18 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } else { + + DomainInfo domain = ServerController.GetDomain(org.DefaultDomain); + + //Add the service records + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.Lync, domain, ""); + } + } + PackageController.UpdatePackageItem(org); bReloadConfiguration = true; @@ -216,7 +228,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution LyncUserPlan plan = GetLyncUserPlan(itemId, lyncUserPlanId); - if (!lync.CreateUser(org.OrganizationId, user.PrimaryEmailAddress, plan)) + if (!lync.CreateUser(org.OrganizationId, user.UserPrincipalName, plan)) { TaskManager.CompleteResultTask(res, LyncErrorCodes.CANNOT_ADD_LYNC_USER); return res; @@ -238,7 +250,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution try { - DataProvider.AddLyncUser(accountId, lyncUserPlanId); + DataProvider.AddLyncUser(accountId, lyncUserPlanId, user.UserPrincipalName); } catch (Exception ex) { @@ -306,7 +318,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution usr = OrganizationController.GetAccount(itemId, accountId); if (usr != null) - user = lync.GetLyncUserGeneralSettings(org.OrganizationId, usr.PrimaryEmailAddress); + user = lync.GetLyncUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName); if (user != null) { @@ -329,6 +341,77 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } + public static LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) + { + LyncUserResult res = TaskManager.StartResultTask("LYNC", "SET_LYNC_USER_GENERAL_SETTINGS"); + + LyncUser user = null; + + try + { + Organization org = (Organization)PackageController.GetPackageItem(itemId); + if (org == null) + { + throw new ApplicationException( + string.Format("Organization is null. ItemId={0}", itemId)); + } + + int lyncServiceId = GetLyncServiceID(org.PackageId); + LyncServer lync = GetLyncServer(lyncServiceId, org.ServiceId); + + OrganizationUser usr; + usr = OrganizationController.GetAccount(itemId, accountId); + + if (usr != null) + user = lync.GetLyncUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName); + + if (user != null) + { + LyncUserPlan plan = ObjectUtils.FillObjectFromDataReader(DataProvider.GetLyncUserPlanByAccountId(accountId)); + + if (plan != null) + { + user.LyncUserPlanId = plan.LyncUserPlanId; + user.LyncUserPlanName = plan.LyncUserPlanName; + } + + + if (!string.IsNullOrEmpty(sipAddress)) + { + if (sipAddress != usr.UserPrincipalName) + { + if (DataProvider.LyncUserExists(accountId, sipAddress)) + { + TaskManager.CompleteResultTask(res, LyncErrorCodes.ADDRESS_ALREADY_USED); + return res; + } + } + + user.SipAddress = sipAddress; + + } + + if (!string.IsNullOrEmpty(lineUri)) user.LineUri = lineUri; + + lync.SetLyncUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName, user); + + DataProvider.UpdateLyncUser(accountId, sipAddress); + } + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, LyncErrorCodes.FAILED_SET_SETTINGS, ex); + return res; + } + + res.IsSuccess = true; + TaskManager.CompleteResultTask(); + return res; + + } + + + public static int DeleteOrganization(int itemId) { // check account @@ -391,7 +474,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution OrganizationUser user; user = OrganizationController.GetAccount(itemId, accountId); - if (!lync.SetLyncUserPlan(org.OrganizationId, user.PrimaryEmailAddress, plan)) + if (!lync.SetLyncUserPlan(org.OrganizationId, user.UserPrincipalName, plan)) { TaskManager.CompleteResultTask(res, LyncErrorCodes.CANNOT_ADD_LYNC_USER); return res; @@ -419,7 +502,12 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } - public static LyncUsersPagedResult GetLyncUsers(int itemId, string sortColumn, string sortDirection, int startRow, int count) + public static LyncUsersPagedResult GetLyncUsers(int itemId) + { + return GetLyncUsersPaged(itemId, string.Empty, string.Empty, 0, int.MaxValue); + } + + public static LyncUsersPagedResult GetLyncUsersPaged(int itemId, string sortColumn, string sortDirection, int startRow, int count) { LyncUsersPagedResult res = TaskManager.StartResultTask("LYNC", "GET_LYNC_USERS"); @@ -501,7 +589,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution user = OrganizationController.GetAccount(itemId, accountId); if (user != null) - lync.DeleteUser(user.PrimaryEmailAddress); + lync.DeleteUser(user.UserPrincipalName); } catch (Exception ex) { @@ -548,6 +636,18 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution else LyncController.GetLyncUserPlansByUser(0, user, ref plans); + + ExchangeOrganization ExchangeOrg = ObjectUtils.FillObjectFromDataReader(DataProvider.GetExchangeOrganization(itemId)); + + if (ExchangeOrg != null) + { + foreach (LyncUserPlan p in plans) + { + p.IsDefault = (p.LyncUserPlanId == ExchangeOrg.LyncUserPlanID); + } + } + + return plans; } catch (Exception ex) @@ -572,12 +672,12 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution if ((Packages != null) & (Packages.Count > 0)) { - orgs = ExchangeServerController.GetExchangeOrganizations(Packages[0].PackageId, false); + orgs = ExchangeServerController.GetExchangeOrganizationsInternal(Packages[0].PackageId, false); } } else { - orgs = ExchangeServerController.GetExchangeOrganizations(1, false); + orgs = ExchangeServerController.GetExchangeOrganizationsInternal(1, false); } int OrgId = -1; @@ -825,8 +925,8 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_CONFERENCING].QuotaAllocatedValue), Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_ALLOWVIDEO].QuotaAllocatedValue), Convert.ToInt32(cntx.Quotas[Quotas.LYNC_MAXPARTICIPANTS].QuotaAllocatedValue), - Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_CONFERENCING].QuotaAllocatedValue), - Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_CONFERENCING].QuotaAllocatedValue)); + Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_FEDERATION].QuotaAllocatedValue), + Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_ENTERPRISEVOICE].QuotaAllocatedValue)); if (string.IsNullOrEmpty(org.LyncTenantId)) { @@ -839,7 +939,20 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution lync = GetLyncServer(lyncServiceId, org.ServiceId); - lync.AddFederationDomain(org.OrganizationId, domainName, proxyFqdn); + bool bDomainExists = false; + LyncFederationDomain[] domains = GetFederationDomains(itemId); + foreach (LyncFederationDomain d in domains) + { + if (d.DomainName.ToLower() == domainName.ToLower()) + { + bDomainExists = true; + break; + } + + } + + if (!bDomainExists) + lync.AddFederationDomain(org.OrganizationId, domainName.ToLower(), proxyFqdn); } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OCSController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OCSController.cs index 56b08755..d202ce0c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OCSController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OCSController.cs @@ -84,20 +84,23 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution private static OCSEdgeServer[] GetEdgeServers(string edgeServices) { List list = new List(); - string[] services = edgeServices.Split(';'); - foreach (string current in services) + if (!string.IsNullOrEmpty(edgeServices)) { - string[] data = current.Split(','); - try + string[] services = edgeServices.Split(';'); + foreach (string current in services) { - int serviceId = int.Parse(data[1]); - OCSEdgeServer ocs = new OCSEdgeServer(); - ServiceProviderProxy.Init(ocs, serviceId); - list.Add(ocs); - } - catch(Exception ex) - { - TaskManager.WriteError(ex); + string[] data = current.Split(','); + try + { + int serviceId = int.Parse(data[1]); + OCSEdgeServer ocs = new OCSEdgeServer(); + ServiceProviderProxy.Init(ocs, serviceId); + list.Add(ocs); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 824e058a..ef2994d8 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -40,6 +40,8 @@ using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.ResultObjects; using WebsitePanel.Providers.SharePoint; using WebsitePanel.Providers.Common; +using WebsitePanel.Providers.DNS; +using WebsitePanel.Providers.OCS; using System.IO; using System.Xml; @@ -281,7 +283,7 @@ namespace WebsitePanel.EnterpriseServer TaskManager.WriteError(ex); } } - public static int CreateOrganization(int packageId, string organizationId, string organizationName) + public static int CreateOrganization(int packageId, string organizationId, string organizationName, string domainName) { int itemId; int errorCode; @@ -291,6 +293,7 @@ namespace WebsitePanel.EnterpriseServer // place log record TaskManager.StartTask("ORGANIZATION", "CREATE_ORG", organizationName); TaskManager.TaskParameters["Organization ID"] = organizationId; + TaskManager.TaskParameters["DomainName"] = domainName; try { @@ -311,7 +314,12 @@ namespace WebsitePanel.EnterpriseServer return BusinessErrorCodes.ERROR_ORG_ID_EXISTS; //create temporary domain name; - string domainName = CreateTemporyDomainName(serviceId, organizationId); + if (string.IsNullOrEmpty(domainName)) + { + string tmpDomainName = CreateTemporyDomainName(serviceId, organizationId); + + if (!string.IsNullOrEmpty(tmpDomainName)) domainName = tmpDomainName; + } if (string.IsNullOrEmpty(domainName)) { @@ -329,6 +337,17 @@ namespace WebsitePanel.EnterpriseServer RollbackOrganization(packageId, organizationId); return domainId; } + + DomainInfo domain = ServerController.GetDomain(domainId); + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.HostedOrganizations, domain, ""); + ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.HostedCRM, domain, ""); + } + } + PackageContext cntx = PackageController.GetPackageContext(packageId); @@ -361,60 +380,6 @@ namespace WebsitePanel.EnterpriseServer PackageController.AddPackageItem(orgDomain); - if (cntx.Quotas[Quotas.EXCHANGE2007_MAILBOXES] != null) - { - // 5) Create default mailbox plans - // load user info - UserInfo user = PackageController.GetPackageOwner(org.PackageId); - - // get settings - UserSettings userSettings = UserController.GetUserSettings(user.UserId, "ExchangeMailboxPlansPolicy"); - - if (!string.IsNullOrEmpty(userSettings[UserSettings.DEFAULT_MAILBOXPLANS])) - { - - List list = new List(); - - XmlSerializer serializer = new XmlSerializer(list.GetType()); - - StringReader reader = new StringReader(userSettings[UserSettings.DEFAULT_MAILBOXPLANS]); - - list = (List)serializer.Deserialize(reader); - - foreach (ExchangeMailboxPlan p in list) - { - ExchangeServerController.AddExchangeMailboxPlan(itemId, p); - } - } - } - - if (cntx.Quotas[Quotas.LYNC_USERS] != null) - { - // 5) Create default mailbox plans - // load user info - UserInfo user = PackageController.GetPackageOwner(org.PackageId); - - // get settings - UserSettings userSettings = UserController.GetUserSettings(user.UserId, "LyncUserPlansPolicy"); - - if (!string.IsNullOrEmpty(userSettings[UserSettings.DEFAULT_LYNCUSERPLANS])) - { - - List list = new List(); - - XmlSerializer serializer = new XmlSerializer(list.GetType()); - - StringReader reader = new StringReader(userSettings[UserSettings.DEFAULT_LYNCUSERPLANS]); - - list = (List)serializer.Deserialize(reader); - - foreach (LyncUserPlan p in list) - { - LyncController.AddLyncUserPlan(itemId, p); - } - } - } - } catch (Exception ex) @@ -461,7 +426,15 @@ namespace WebsitePanel.EnterpriseServer DomainInfo domain = ServerController.GetDomain(domainId); if (domain == null) return -1; - + + if (!string.IsNullOrEmpty(org.GlobalAddressList)) + { + if (DataProvider.CheckDomainUsedByHostedOrganization(domain.DomainName) == 1) + { + return -1; + } + } + // unregister domain DataProvider.DeleteExchangeOrganizationDomain(itemId, domainId); @@ -553,7 +526,7 @@ namespace WebsitePanel.EnterpriseServer try { - LyncUsersPagedResult res = LyncController.GetLyncUsers(itemId, string.Empty, string.Empty, 0, int.MaxValue); + LyncUsersPagedResult res = LyncController.GetLyncUsers(itemId); if (res.IsSuccess) { @@ -1042,6 +1015,37 @@ namespace WebsitePanel.EnterpriseServer } } + public static int ChangeOrganizationDomainType(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // place log record + TaskManager.StartTask("ORGANIZATION", "CHANGE_DOMAIN_TYPE", domainId); + TaskManager.ItemId = itemId; + + try + { + // change accepted domain type on Exchange + int checkResult = ExchangeServerController.ChangeAcceptedDomainType(itemId, domainId, newDomainType); + + + // change accepted domain type in DB + int domainTypeId= (int) newDomainType; + DataProvider.ChangeExchangeAcceptedDomainType(itemId, domainId, domainTypeId); + + return checkResult; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } public static int AddOrganizationDomain(int itemId, string domainName) { @@ -1130,6 +1134,14 @@ namespace WebsitePanel.EnterpriseServer ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId); } + OrganizationStatistics orgStatsExchange = ExchangeServerController.GetOrganizationStatistics(itemId); + + if (orgStatsExchange.AllocatedMailboxes == 0) + { + ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; + ChangeOrganizationDomainType(org.ServiceId, domain.DomainId, newDomainType); + } + if (org.IsOCSOrganization) { OCSController.AddDomain(domain.DomainName, itemId); @@ -1324,11 +1336,11 @@ namespace WebsitePanel.EnterpriseServer if (orgProxy.CreateUser(org.OrganizationId, sAMAccountName, displayName, upn, password, enabled) == 0) { - OrganizationUser retUser = orgProxy.GetUserGeneralSettings(upn, org.OrganizationId); + accountName = sAMAccountName; + OrganizationUser retUser = orgProxy.GetUserGeneralSettings(sAMAccountName, org.OrganizationId); TaskManager.Write("sAMAccountName :" + retUser.DomainUserName); - userId = AddOrganizationUser(itemId, upn, displayName, email, retUser.DomainUserName, password, subscriberNumber); - accountName = upn; + userId = AddOrganizationUser(itemId, sAMAccountName, displayName, email, retUser.DomainUserName, password, subscriberNumber); // register email address AddAccountEmailAddress(userId, email); @@ -1420,7 +1432,7 @@ namespace WebsitePanel.EnterpriseServer TaskManager.Write("sAMAccountName :" + retUser.DomainUserName); - userId = AddOrganizationUser(itemId, accountName, displayName, email, retUser.DomainUserName, password, subscriberNumber); + userId = AddOrganizationUser(itemId, retUser.SamAccountName, displayName, email, retUser.DomainUserName, password, subscriberNumber); AddAccountEmailAddress(userId, email); @@ -1449,6 +1461,9 @@ namespace WebsitePanel.EnterpriseServer string CounterStr = "00000"; int counter = 0; bool bFound = false; + + if (!AccountExists(accountName)) return accountName; + do { accountName = genSamLogin(name, CounterStr); @@ -1505,8 +1520,15 @@ namespace WebsitePanel.EnterpriseServer if (DataProvider.CheckOCSUserExists(accountId)) { - return BusinessErrorCodes.CURRENT_USER_IS_OCS_USER; ; + return BusinessErrorCodes.CURRENT_USER_IS_OCS_USER; } + + if (DataProvider.CheckLyncUserExists(accountId)) + { + return BusinessErrorCodes.CURRENT_USER_IS_LYNC_USER; + } + + // load organization Organization org = GetOrganization(itemId); if (org == null) @@ -1652,7 +1674,7 @@ namespace WebsitePanel.EnterpriseServer if (accountCheck < 0) return accountCheck; // place log record - TaskManager.StartTask("EXCHANGE", "UPDATE_MAILBOX_GENERAL"); + TaskManager.StartTask("ORGANIZATION", "UPDATE_USER_GENERAL"); TaskManager.ItemId = itemId; try @@ -1717,7 +1739,7 @@ namespace WebsitePanel.EnterpriseServer if (!String.IsNullOrEmpty(password)) account.AccountPassword = CryptoUtils.Encrypt(password); else - account.AccountPassword = string.Empty; + account.AccountPassword = null; UpdateAccount(account); @@ -1734,6 +1756,162 @@ namespace WebsitePanel.EnterpriseServer } } + + public static int SetUserPrincipalName(int itemId, int accountId, string userPrincipalName, bool inherit) + { + + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + + // place log record + TaskManager.StartTask("ORGANIZATION", "SET_USER_USERPRINCIPALNAME"); + TaskManager.ItemId = itemId; + + try + { + + + // 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; + + // load account + OrganizationUser user = GetUserGeneralSettings(itemId, accountId); + + if (user.UserPrincipalName != userPrincipalName) + { + bool userPrincipalNameOwned = false; + ExchangeEmailAddress[] emails = ExchangeServerController.GetMailboxEmailAddresses(itemId, accountId); + + foreach (ExchangeEmailAddress mail in emails) + { + if (mail.EmailAddress == userPrincipalName) + { + userPrincipalNameOwned = true; + break; + } + } + + if (!userPrincipalNameOwned) + { + if (EmailAddressExists(userPrincipalName)) + return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS; + } + } + + Organizations orgProxy = GetOrganizationProxy(org.ServiceId); + + orgProxy.SetUserPrincipalName(org.OrganizationId, + user.AccountName, + userPrincipalName.ToLower()); + + DataProvider.UpdateExchangeAccountUserPrincipalName(accountId, userPrincipalName.ToLower()); + + if (inherit) + { + if (user.AccountType == ExchangeAccountType.Mailbox) + { + ExchangeServerController.AddMailboxEmailAddress(itemId, accountId, userPrincipalName.ToLower()); + ExchangeServerController.SetMailboxPrimaryEmailAddress(itemId, accountId, userPrincipalName.ToLower()); + } + else + { + if (user.IsLyncUser) + { + if (!DataProvider.LyncUserExists(accountId, userPrincipalName.ToLower())) + { + LyncController.SetLyncUserGeneralSettings(itemId, accountId, userPrincipalName.ToLower(), null); + } + } + else + { + if (user.IsOCSUser) + { + OCSServer ocs = GetOCSProxy(itemId); + string instanceId = DataProvider.GetOCSUserInstanceID(user.AccountId); + ocs.SetUserPrimaryUri(instanceId, userPrincipalName.ToLower()); + } + } + } + } + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + + + } + + + public static int SetUserPassword(int itemId, int accountId, string password) + { + + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // place log record + TaskManager.StartTask("ORGANIZATION", "SET_USER_PASSWORD"); + TaskManager.ItemId = itemId; + + try + { + // 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; + + // load account + ExchangeAccount account = ExchangeServerController.GetAccount(itemId, accountId); + + string accountName = GetAccountName(account.AccountName); + + Organizations orgProxy = GetOrganizationProxy(org.ServiceId); + + orgProxy.SetUserPassword( org.OrganizationId, + accountName, + password); + + //account. + if (!String.IsNullOrEmpty(password)) + account.AccountPassword = CryptoUtils.Encrypt(password); + else + account.AccountPassword = null; + + UpdateAccount(account); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + + private static void UpdateAccount(ExchangeAccount account) { DataProvider.UpdateExchangeAccount(account.AccountId, account.AccountName, account.AccountType, account.DisplayName, @@ -1951,6 +2129,19 @@ namespace WebsitePanel.EnterpriseServer } return res; } + + private static OCSServer GetOCSProxy(int itemId) + { + Organization org = OrganizationController.GetOrganization(itemId); + int serviceId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.OCS); + + OCSServer ocs = new OCSServer(); + ServiceProviderProxy.Init(ocs, serviceId); + + + return ocs; + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs index 3692a9c6..b934d5e0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs @@ -123,8 +123,25 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution delegate(CRMOrganizationStatistics stats) { return stats.OrganizationID == org.OrganizationId; }); item.TotalCRMUsers = crmOrganizationStatistics.Count; + } + + item.TotalLyncUsers = 0; + item.TotalLyncEVUsers = 0; + + if (report.LyncReport != null) + { + List lyncOrganizationStatistics = + report.LyncReport.Items.FindAll( + delegate(LyncUserStatistics stats) { return stats.OrganizationID == org.OrganizationId; }); + + foreach (LyncUserStatistics current in lyncOrganizationStatistics) + { + if (current.EnterpriseVoice) item.TotalLyncEVUsers++; + } + + item.TotalLyncUsers = lyncOrganizationStatistics.Count; } - + report.OrganizationReport.Items.Add(item); } @@ -296,7 +313,19 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution { TaskManager.WriteError(ex); } - } + } + + if (report.LyncReport != null) + { + try + { + PopulateLyncReportItems(org, report, topReseller); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } + } if (report.OrganizationReport != null) { @@ -308,7 +337,9 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution { TaskManager.WriteError(ex); } - } + } + + } private static int GetExchangeServiceID(int packageId) @@ -316,6 +347,10 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution return PackageController.GetPackageServiceId(packageId, ResourceGroups.Exchange); } + private static int GetLyncServiceID(int packageId) + { + return PackageController.GetPackageServiceId(packageId, ResourceGroups.Lync); + } private static void PopulateSharePointItem(Organization org, EnterpriseSolutionStatisticsReport report, string topReseller) @@ -409,12 +444,12 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution try { - stats = exchange.GetMailboxStatistics(mailbox.AccountName); + stats = exchange.GetMailboxStatistics(mailbox.UserPrincipalName); } catch (Exception ex) { TaskManager.WriteError(ex, "Could not get mailbox statistics. AccountName: {0}", - mailbox.AccountName); + mailbox.UserPrincipalName); } @@ -422,7 +457,13 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution { PopulateBaseItem(stats, org, topReseller); stats.MailboxType = mailbox.AccountType; + if (mailbox.AccountType == ExchangeAccountType.Mailbox) + { + ExchangeAccount a = ExchangeServerController.GetAccount(mailbox.ItemId, mailbox.AccountId); + stats.MailboxPlan = a.MailboxPlan; + } + stats.BlackberryEnabled = BlackBerryController.CheckBlackBerryUserExists(mailbox.AccountId); report.ExchangeReport.Items.Add(stats); } @@ -436,6 +477,74 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } + + + private static void PopulateLyncReportItems(Organization org, EnterpriseSolutionStatisticsReport report, string topReseller) + { + + //Check if lync organization + if (string.IsNullOrEmpty(org.LyncTenantId)) + return; + + LyncUser[] lyncUsers = null; + + try + { + LyncUsersPagedResult res = LyncController.GetLyncUsers(org.Id); + if (res.IsSuccess) lyncUsers = res.Value.PageUsers; + } + catch (Exception ex) + { + throw new ApplicationException( + string.Format("Could not get lync users for current organization {0}", org.Id), ex); + } + + + if (lyncUsers == null) + return; + + foreach (LyncUser lyncUser in lyncUsers) + { + try + { + LyncUserStatistics stats = new LyncUserStatistics(); + + try + { + stats.SipAddress = lyncUser.SipAddress; + if (string.IsNullOrEmpty(lyncUser.LineUri)) stats.PhoneNumber = string.Empty; else stats.PhoneNumber = lyncUser.LineUri; + + LyncUserPlan plan = LyncController.GetLyncUserPlan(org.Id, lyncUser.LyncUserPlanId); + stats.Conferencing = plan.Conferencing; + stats.EnterpriseVoice = plan.EnterpriseVoice; + stats.Federation = plan.Federation; + stats.InstantMessaing = plan.IM; + stats.MobileAccess = plan.Mobility; + stats.LyncUserPlan = plan.LyncUserPlanName; + stats.DisplayName = lyncUser.DisplayName; + } + catch (Exception ex) + { + TaskManager.WriteError(ex, "Could not get lync statistics. AccountName: {0}", + lyncUser.DisplayName); + } + + + if (stats != null) + { + PopulateBaseItem(stats, org, topReseller); + report.LyncReport.Items.Add(stats); + } + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } + } + + } + + private static void PopulateSpaceData(int packageId, EnterpriseSolutionStatisticsReport report, string topReseller) { List organizations; @@ -489,8 +598,8 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } } - - private static void GetUsersData(EnterpriseSolutionStatisticsReport report, int userId, bool generateExchangeReport, bool generateSharePointReport, bool generateCRMReport, bool generateOrganizationReport, string topReseller) + + private static void GetUsersData(EnterpriseSolutionStatisticsReport report, int userId, bool generateExchangeReport, bool generateSharePointReport, bool generateCRMReport, bool generateOrganizationReport, bool generateLyncReport, string topReseller) { List users; try @@ -514,6 +623,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution GetUsersData(report, user.UserId, generateExchangeReport, generateSharePointReport, generateCRMReport, generateOrganizationReport, + generateLyncReport, string.IsNullOrEmpty(topReseller) ? user.Username : topReseller); } } @@ -523,8 +633,8 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } } } - - public static EnterpriseSolutionStatisticsReport GetEnterpriseSolutionStatisticsReport(int userId, bool generateExchangeReport, bool generateSharePointReport, bool generateCRMReport, bool generateOrganizationReport) + + public static EnterpriseSolutionStatisticsReport GetEnterpriseSolutionStatisticsReport(int userId, bool generateExchangeReport, bool generateSharePointReport, bool generateCRMReport, bool generateOrganizationReport, bool generateLyncReport) { EnterpriseSolutionStatisticsReport report = new EnterpriseSolutionStatisticsReport(); @@ -534,17 +644,20 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution if (generateSharePointReport || generateOrganizationReport) report.SharePointReport = new SharePointStatisticsReport(); + if (generateLyncReport || generateOrganizationReport) + report.LyncReport = new LyncStatisticsReport(); + + if (generateCRMReport || generateOrganizationReport) report.CRMReport = new CRMStatisticsReport(); if (generateOrganizationReport) report.OrganizationReport = new OrganizationStatisticsReport(); - - + try { GetUsersData(report, userId, generateExchangeReport, generateSharePointReport, generateCRMReport, - generateOrganizationReport, null); + generateOrganizationReport, generateLyncReport, null); } catch(Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs index c4914931..a911b077 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs @@ -1051,18 +1051,21 @@ namespace WebsitePanel.EnterpriseServer int itemId = PackageController.AddPackageItem(item); // update related domain with a new pointer - DomainInfo domain = ServerController.GetDomain(item.Name); + DomainInfo domain = ServerController.GetDomain(item.Name, true, false); if (domain != null) { domain.MailDomainId = itemId; ServerController.UpdateDomain(domain); + + domain = ServerController.GetDomain(domain.DomainId); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Mail, domain, ""); } // check if instant alias must be added if (!String.IsNullOrEmpty(domain.InstantAliasName)) { // load instant alias - DomainInfo instantAlias = ServerController.GetDomainItem(domain.InstantAliasName); + DomainInfo instantAlias = ServerController.GetDomain(domain.InstantAliasId); if (instantAlias != null) { AddMailDomainPointer(itemId, instantAlias.DomainId); @@ -1161,7 +1164,7 @@ namespace WebsitePanel.EnterpriseServer PackageController.DeletePackageItem(origItem.Id); // update related domain with a new pointer - DomainInfo domain = ServerController.GetDomain(origItem.Name); + DomainInfo domain = ServerController.GetDomain(origItem.Name, true, false); if (domain != null) { domain.MailDomainId = 0; @@ -1202,7 +1205,7 @@ namespace WebsitePanel.EnterpriseServer return pointers; } - public static int AddMailDomainPointer(int itemId, int domainId) + public static int AddMailDomainPointer( int itemId, int domainId) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); @@ -1231,6 +1234,16 @@ namespace WebsitePanel.EnterpriseServer ServiceProviderProxy.Init(mail, mailDomain.ServiceId); mail.AddDomainAlias(mailDomain.Name, domain.DomainName); + + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Mail, domain, ""); + } + } + + // update domain domain.MailDomainId = itemId; ServerController.UpdateDomain(domain); @@ -1474,7 +1487,7 @@ namespace WebsitePanel.EnterpriseServer // add/update domains/pointers foreach (string domainName in domains) { - DomainInfo domain = ServerController.GetDomain(domainName); + DomainInfo domain = ServerController.GetDomain(domainName, true, false); if (domain == null) { domain = new DomainInfo(); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs index deed780f..2e6bc7bb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs @@ -412,17 +412,54 @@ namespace WebsitePanel.EnterpriseServer public static bool CheckLoadUserProfile(int serverId) { - int packageId = DataProvider.GetPackageIdByName("IIS70"); - int serviceId = DataProvider.GetServiceIdByProviderForServer(packageId, serverId); - return WebServerController.GetWebServer(serviceId).CheckLoadUserProfile(); - + int serviceId = getWebServiceId(serverId); + if (serviceId != -1) + { + return WebServerController.GetWebServer(serviceId).CheckLoadUserProfile(); + } + + return false; } + private static int getWebServiceId(int serverId) + { + DataSet dsServices = ServerController.GetRawServicesByServerId(serverId); + + int webGroup = -1; + + if (dsServices.Tables.Count < 1) return -1; + + foreach (DataRow r in dsServices.Tables[0].Rows) + { + if (r["GroupName"].ToString() == "Web") + { + webGroup = (int)r["GroupID"]; + break; + } + } + + if (webGroup == -1) return -1; + + foreach (DataRow r in dsServices.Tables[1].Rows) + { + if ((int)r["GroupID"] == webGroup) + { + return (int)r["ServiceID"]; + } + } + + return -1; + } + + + public static void EnableLoadUserProfile(int serverId) { - int packageId = DataProvider.GetPackageIdByName("IIS70"); - int serviceId = DataProvider.GetServiceIdByProviderForServer(packageId, serverId); - WebServerController.GetWebServer(serviceId).EnableLoadUserProfile(); + int serviceId = getWebServiceId(serverId); + if (serviceId != -1) + { + WebServerController.GetWebServer(serviceId).EnableLoadUserProfile(); + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs index 164ad64f..fd61926f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs @@ -460,13 +460,37 @@ namespace WebsitePanel.EnterpriseServer domain.PackageId = packageId; domain.DomainName = domainName; domain.HostingAllowed = false; - domainId = ServerController.AddDomain(domain, createInstantAlias, true); + domainId = ServerController.AddDomain(domain, false, true); if (domainId < 0) { result.Result = domainId; DeletePackage(packageId); return result; } + + domain = ServerController.GetDomain(domainId); + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Os, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Dns, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Ftp, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2000, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2005, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2008, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2012, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MySql4, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MySql5, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Statistics, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.VPS, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.VPSForPC, domain, ""); + } + } + + if (createInstantAlias) + ServerController.CreateDomainInstantAlias("", domainId); + } catch (Exception ex) { @@ -481,7 +505,7 @@ namespace WebsitePanel.EnterpriseServer // create web site try { - int webSiteId = WebServerController.AddWebSite(packageId, hostName, domainId, 0, true, false); + int webSiteId = WebServerController.AddWebSite(packageId, hostName, domainId, 0, createInstantAlias, false); if (webSiteId < 0) { result.Result = webSiteId; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs index 13d53b8a..fef786d4 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs @@ -29,8 +29,9 @@ using System; using System.Data; using System.Collections.Generic; - +using WebsitePanel.EnterpriseServer; using WebsitePanel.Providers; +using WebsitePanel.Providers.Web; namespace WebsitePanel.EnterpriseServer { @@ -68,69 +69,74 @@ namespace WebsitePanel.EnterpriseServer if (accountCheck < 0) return items; // load item type - ServiceProviderItemType itemType = PackageController.GetServiceItemType(itemTypeId); - - // load group - ResourceGroupInfo group = ServerController.GetResourceGroup(itemType.GroupId); - - // get service id - int serviceId = PackageController.GetPackageServiceId(packageId, group.GroupName); - if (serviceId == 0) - return items; - - DataTable dtServiceItems = PackageController.GetServiceItemsDataSet(serviceId).Tables[0]; - DataTable dtPackageItems = PackageController.GetPackageItemsDataSet(packageId).Tables[0]; - - // instantiate controller - IImportController ctrl = null; - try + if (itemTypeId > 0) { - List importableItems = null; - ctrl = Activator.CreateInstance(Type.GetType(group.GroupController)) as IImportController; - if (ctrl != null) - { - importableItems = ctrl.GetImportableItems(packageId, itemTypeId, Type.GetType(itemType.TypeName), group); - } + ServiceProviderItemType itemType = PackageController.GetServiceItemType(itemTypeId); - foreach (string importableItem in importableItems) - { + // load group + ResourceGroupInfo group = ServerController.GetResourceGroup(itemType.GroupId); - // filter items by service - bool serviceContains = false; - foreach (DataRow dr in dtServiceItems.Rows) + // get service id + int serviceId = PackageController.GetPackageServiceId(packageId, group.GroupName); + if (serviceId == 0) + return items; + + DataTable dtServiceItems = PackageController.GetServiceItemsDataSet(serviceId).Tables[0]; + DataTable dtPackageItems = PackageController.GetPackageItemsDataSet(packageId).Tables[0]; + + // instantiate controller + IImportController ctrl = null; + try + { + List importableItems = null; + ctrl = Activator.CreateInstance(Type.GetType(group.GroupController)) as IImportController; + if (ctrl != null) { - string serviceItemName = (string)dr["ItemName"]; - int serviceItemTypeId = (int)dr["ItemTypeId"]; - - if (String.Compare(importableItem, serviceItemName, true) == 0 - && serviceItemTypeId == itemTypeId) - { - serviceContains = true; - break; - } + importableItems = ctrl.GetImportableItems(packageId, itemTypeId, Type.GetType(itemType.TypeName), group); } - // filter items by package - bool packageContains = false; - foreach (DataRow dr in dtPackageItems.Rows) + foreach (string importableItem in importableItems) { - string packageItemName = (string)dr["ItemName"]; - int packageItemTypeId = (int)dr["ItemTypeId"]; - if (String.Compare(importableItem, packageItemName, true) == 0 - && packageItemTypeId == itemTypeId) + // filter items by service + bool serviceContains = false; + foreach (DataRow dr in dtServiceItems.Rows) { - packageContains = true; - break; + string serviceItemName = (string)dr["ItemName"]; + int serviceItemTypeId = (int)dr["ItemTypeId"]; + + if (String.Compare(importableItem, serviceItemName, true) == 0 + && serviceItemTypeId == itemTypeId) + { + serviceContains = true; + break; + } } + + // filter items by package + bool packageContains = false; + foreach (DataRow dr in dtPackageItems.Rows) + { + string packageItemName = (string)dr["ItemName"]; + int packageItemTypeId = (int)dr["ItemTypeId"]; + + if (String.Compare(importableItem, packageItemName, true) == 0 + && packageItemTypeId == itemTypeId) + { + packageContains = true; + break; + } + } + + if (!serviceContains && !packageContains) + items.Add(importableItem); } - if (!serviceContains && !packageContains) - items.Add(importableItem); } - + catch { /* do nothing */ } } - catch { /* do nothing */ } + else + return GetImportableCustomItems(packageId, itemTypeId); return items; } @@ -172,19 +178,35 @@ namespace WebsitePanel.EnterpriseServer TaskManager.IndicatorCurrent = 0; Dictionary> groupedItems = new Dictionary>(); + List customItems = new List(); // sort by groups foreach (string item in items) { + string[] itemParts = item.Split('|'); - int itemTypeId = Utils.ParseInt(itemParts[0], 0); - string itemName = itemParts[1]; + if (!item.StartsWith("+")) + { + int itemTypeId = Utils.ParseInt(itemParts[0], 0); + string itemName = itemParts[1]; - // add to group - if (!groupedItems.ContainsKey(itemTypeId)) - groupedItems[itemTypeId] = new List(); + // add to group + if (!groupedItems.ContainsKey(itemTypeId)) + groupedItems[itemTypeId] = new List(); - groupedItems[itemTypeId].Add(itemName); + groupedItems[itemTypeId].Add(itemName); + } + else + { + switch (itemParts[0]) + { + case ("+100"): + if (itemParts.Length > 2) + customItems.Add(item); + break; + } + + } } // import each group @@ -226,9 +248,64 @@ namespace WebsitePanel.EnterpriseServer catch { /* do nothing */ } } + foreach (string s in customItems) + { + try + { + string[] sParts = s.Split('|'); + switch (sParts[0]) + { + case "+100": + TaskManager.Write(String.Format("Import {0}", sParts[4])); + + int result = WebServerController.ImporHostHeader(int.Parse(sParts[2],0), int.Parse(sParts[3],0), int.Parse(sParts[5],0)); + + if (result < 0) + TaskManager.WriteError(String.Format("Failed to Import {0} ,error: {1}: ", sParts[4], result.ToString())); + + break; + } + } + catch { /* do nothing */ } + + TaskManager.IndicatorCurrent++; + } + + TaskManager.IndicatorCurrent = items.Length; + TaskManager.CompleteTask(); return 0; } + + private static List GetImportableCustomItems(int packageId, int itemTypeId) + { + + List items = new List(); + PackageInfo packageInfo = PackageController.GetPackage(packageId); + if (packageInfo == null) return items; + + switch (itemTypeId) + { + case -100: + List users = UserController.GetUsers(packageInfo.UserId, true); + foreach (UserInfo user in users) + { + List packages = PackageController.GetPackages(user.UserId); + foreach (PackageInfo package in packages) + { + List webSites = WebServerController.GetWebSites(package.PackageId, false); + foreach (WebSite webSite in webSites) + { + items.Add(user.Username+"|"+user.UserId.ToString()+"|"+package.PackageId.ToString()+"|"+webSite.SiteId+"|"+webSite.Id); + } + } + } + + break; + } + + return items; + } } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SchedulerTasks/HostedSolutionReport.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SchedulerTasks/HostedSolutionReport.cs index 10322c79..b82436df 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SchedulerTasks/HostedSolutionReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SchedulerTasks/HostedSolutionReport.cs @@ -42,6 +42,7 @@ namespace WebsitePanel.EnterpriseServer private static readonly string EXCHANGE_REPORT = "EXCHANGE_REPORT"; private static readonly string ORGANIZATION_REPORT = "ORGANIZATION_REPORT"; private static readonly string SHAREPOINT_REPORT = "SHAREPOINT_REPORT"; + private static readonly string LYNC_REPORT = "LYNC_REPORT"; private static readonly string CRM_REPORT = "CRM_REPORT"; private static readonly string EMAIL = "EMAIL"; @@ -52,6 +53,7 @@ namespace WebsitePanel.EnterpriseServer { bool isExchange = Utils.ParseBool(TaskManager.TaskParameters[EXCHANGE_REPORT], false); bool isSharePoint = Utils.ParseBool(TaskManager.TaskParameters[SHAREPOINT_REPORT], false); + bool isLync = Utils.ParseBool(TaskManager.TaskParameters[LYNC_REPORT], false); bool isCRM = Utils.ParseBool(TaskManager.TaskParameters[CRM_REPORT], false); bool isOrganization = Utils.ParseBool(TaskManager.TaskParameters[ORGANIZATION_REPORT], false); @@ -61,13 +63,14 @@ namespace WebsitePanel.EnterpriseServer UserInfo user = PackageController.GetPackageOwner(TaskManager.PackageId); EnterpriseSolutionStatisticsReport report = ReportController.GetEnterpriseSolutionStatisticsReport(user.UserId, isExchange, isSharePoint, isCRM, - isOrganization); + isOrganization, isLync); SendMessage(user, email, isExchange && report.ExchangeReport != null ? report.ExchangeReport.ToCSV() : string.Empty, isSharePoint && report.SharePointReport != null ? report.SharePointReport.ToCSV() : string.Empty, isCRM && report.CRMReport != null ? report.CRMReport.ToCSV() : string.Empty, - isOrganization && report.OrganizationReport != null ? report.OrganizationReport.ToCSV() : string.Empty); + isOrganization && report.OrganizationReport != null ? report.OrganizationReport.ToCSV() : string.Empty, + isLync && report.LyncReport != null ? report.LyncReport.ToCSV() : string.Empty); } catch(Exception ex) { @@ -90,11 +93,12 @@ namespace WebsitePanel.EnterpriseServer } } - private void SendMessage(UserInfo user,string email, string exchange_csv, string sharepoint_csv, string crm_csv, string organization_csv) + private void SendMessage(UserInfo user,string email, string exchange_csv, string sharepoint_csv, string crm_csv, string organization_csv, string lync_csv) { List attacments = new List(); PrepareAttament("exchange.csv", exchange_csv, attacments); PrepareAttament("sharepoint.csv", sharepoint_csv, attacments); + PrepareAttament("lync.csv", lync_csv, attacments); PrepareAttament("crm.csv", crm_csv, attacments); PrepareAttament("organization.csv", organization_csv, attacments); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index fa1b5caf..b1cd15f0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -37,6 +37,8 @@ using WebsitePanel.Providers.Common; using WebsitePanel.Providers.DNS; using WebsitePanel.Server; using WebsitePanel.Providers.ResultObjects; +using WebsitePanel.Providers.Web; +using WebsitePanel.Providers.HostedSolution; namespace WebsitePanel.EnterpriseServer { @@ -988,7 +990,7 @@ namespace WebsitePanel.EnterpriseServer if (startExternalIP.V6 != startInternalIP.V6 && (startExternalIP.V6 != endExternalIP.V6 && endExternalIP != null)) throw new NotSupportedException("All IP addresses must be either V4 or V6."); int i = 0; - long step = (endExternalIP < startExternalIP) ? -1 : 1; + long step = ((endExternalIP - startExternalIP) > 0) ? 1 : -1; while (true) { @@ -1602,6 +1604,20 @@ namespace WebsitePanel.EnterpriseServer DataProvider.GetDomains(SecurityContext.User.UserId, packageId, true)); } + + public static List GetDomainsByZoneId(int zoneId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDomainsByZoneId(SecurityContext.User.UserId, zoneId)); + } + + public static List GetDomainsByDomainItemId(int zoneId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDomainsByDomainItemId(SecurityContext.User.UserId, zoneId)); + } + + public static List GetMyDomains(int packageId) { return ObjectUtils.CreateListFromDataSet( @@ -1635,13 +1651,16 @@ namespace WebsitePanel.EnterpriseServer public static DomainInfo GetDomain(string domainName) { - // get domain by name - DomainInfo domain = GetDomainItem(domainName); - - // return - return GetDomain(domain); + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetDomainByName(SecurityContext.User.UserId, domainName,false, false)); } + public static DomainInfo GetDomain(string domainName, bool searchOnDomainPointer, bool isDomainPointer) + { + return GetDomainItem(domainName, searchOnDomainPointer, isDomainPointer); + } + + private static DomainInfo GetDomain(DomainInfo domain) { // check domain @@ -1650,7 +1669,7 @@ namespace WebsitePanel.EnterpriseServer // get instant alias domain.InstantAliasName = GetDomainAlias(domain.PackageId, domain.DomainName); - DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName); + DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName, true, false); if (instantAlias != null) domain.InstantAliasId = instantAlias.DomainId; @@ -1664,9 +1683,15 @@ namespace WebsitePanel.EnterpriseServer } public static DomainInfo GetDomainItem(string domainName) + { + return GetDomainItem(domainName, false, false); + } + + + public static DomainInfo GetDomainItem(string domainName, bool searchOnDomainPointer, bool isDomainPointer) { return ObjectUtils.FillObjectFromDataReader( - DataProvider.GetDomainByName(SecurityContext.User.UserId, domainName)); + DataProvider.GetDomainByName(SecurityContext.User.UserId, domainName, searchOnDomainPointer, isDomainPointer)); } public static string GetDomainAlias(int packageId, string domainName) @@ -1710,6 +1735,26 @@ namespace WebsitePanel.EnterpriseServer if (domainId < 0) return domainId; + DomainInfo domain = ServerController.GetDomain(domainId); + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Os, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Dns, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Ftp, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2000, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2005, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2008, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2012, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MySql4, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MySql5, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Statistics, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.VPS, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.VPSForPC, domain, ""); + } + } + // add instant alias createInstantAlias &= (domainType != DomainType.DomainPointer); if (createInstantAlias) @@ -1741,7 +1786,7 @@ namespace WebsitePanel.EnterpriseServer // add web site pointer if (webEnabled && pointWebSiteId > 0) { - WebServerController.AddWebSitePointer(pointWebSiteId, hostName, domainId); + WebServerController.AddWebSitePointer(pointWebSiteId, hostName, domainId, true, false, false); } // add mail domain pointer @@ -1770,8 +1815,9 @@ namespace WebsitePanel.EnterpriseServer // add main domain int domainId = AddDomainInternal(domain.PackageId, domain.DomainName, createZone, - domain.IsSubDomain, false, domain.IsDomainPointer, false); + domain.IsSubDomain, createInstantAlias, domain.IsDomainPointer, false); + /* if (domainId < 0) return domainId; @@ -1781,6 +1827,7 @@ namespace WebsitePanel.EnterpriseServer { AddDomainInternal(domain.PackageId, domainAlias, true, false, true, false, false); } + */ return domainId; } @@ -1800,11 +1847,9 @@ namespace WebsitePanel.EnterpriseServer else if (isDomainPointer) { // domain pointer - /* - if (PackageController.GetPackageQuota(packageId, Quotas.OS_DOMAINPOINTERS).QuotaExhausted) - return BusinessErrorCodes.ERROR_DOMAIN_QUOTA_LIMIT; - */ - } + //if (PackageController.GetPackageQuota(packageId, Quotas.OS_DOMAINPOINTERS).QuotaExhausted) + //return BusinessErrorCodes.ERROR_DOMAIN_QUOTA_LIMIT; + } else { // top-level domain @@ -1847,7 +1892,7 @@ namespace WebsitePanel.EnterpriseServer int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Dns); if (serviceId > 0) { - zoneItemId = DnsServerController.AddZone(packageId, serviceId, domainName); + zoneItemId = DnsServerController.AddZone(packageId, serviceId, domainName, true, isInstantAlias); } if (zoneItemId < 0) @@ -1878,6 +1923,116 @@ namespace WebsitePanel.EnterpriseServer domain.WebSiteId, domain.MailDomainId, domain.IsSubDomain, domain.IsInstantAlias, domain.IsDomainPointer); } + public static void AddServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP) + { + AddServiceDNSRecords(packageId, groupName, domain, serviceIP, false); + } + + public static void AddServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP, bool wildcardOnly) + { + int serviceId = PackageController.GetPackageServiceId(packageId, groupName); + if (serviceId > 0) + { + List tmpZoneRecords = new List(); + List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); + + if (wildcardOnly) + { + List temp = new List(); + foreach (GlobalDnsRecord d in dnsRecords) + { + if ((d.RecordName == "*") || + (d.RecordName == "@")) + temp.Add(d); + } + + dnsRecords = temp; + } + + DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); + tmpZoneRecords.AddRange(DnsServerController.BuildDnsResourceRecords(dnsRecords, "", domain.ZoneName, serviceIP)); + + try + { + DNSServer dns = new DNSServer(); + ServiceProviderProxy.Init(dns, zone.ServiceId); + + DnsRecord[] domainRecords = dns.GetZoneRecords(domain.DomainName); + + List zoneRecords = new List(); + foreach (DnsRecord t in tmpZoneRecords) + { + if (!RecordDoesExist(t, domainRecords)) + zoneRecords.Add(t); + } + + + // add new resource records + dns.AddZoneRecords(zone.Name, zoneRecords.ToArray()); + } + catch (Exception ex1) + { + TaskManager.WriteError(ex1, "Error updating DNS records"); + } + } + } + + + + public static void RemoveServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP, bool wildcardOnly) + { + int serviceId = PackageController.GetPackageServiceId(packageId, groupName); + if (serviceId > 0) + { + List zoneRecords = new List(); + List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); + if (wildcardOnly) + { + List temp = new List(); + foreach (GlobalDnsRecord d in dnsRecords) + { + if ((d.RecordName == "*") || + (d.RecordName == "@")) + temp.Add(d); + } + + dnsRecords = temp; + } + + DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); + zoneRecords.AddRange(DnsServerController.BuildDnsResourceRecords(dnsRecords, "", domain.ZoneName, serviceIP)); + + try + { + DNSServer dns = new DNSServer(); + ServiceProviderProxy.Init(dns, zone.ServiceId); + + // add new resource records + dns.DeleteZoneRecords(zone.Name, zoneRecords.ToArray()); + } + catch (Exception ex1) + { + TaskManager.WriteError(ex1, "Error updating DNS records"); + } + } + } + + + private static bool RecordDoesExist(DnsRecord record, DnsRecord[] domainRecords) + { + foreach (DnsRecord d in domainRecords) + { + if ((record.RecordName.ToLower() == d.RecordName.ToLower()) & + (record.RecordType == d.RecordType)) + { + return true; + } + } + + return false; + } + + public static int UpdateDomain(DomainInfo domain) { // check account @@ -1893,7 +2048,7 @@ namespace WebsitePanel.EnterpriseServer { DataProvider.UpdateDomain(SecurityContext.User.UserId, domain.DomainId, domain.ZoneItemId, domain.HostingAllowed, domain.WebSiteId, - domain.MailDomainId); + domain.MailDomainId, domain.DomainItemId); return 0; } @@ -1915,6 +2070,8 @@ namespace WebsitePanel.EnterpriseServer // load domain DomainInfo domain = GetDomain(domainId); + if (domain == null) + return 0; // place log record TaskManager.StartTask("DOMAIN", "DETACH", domain.DomainName); @@ -1941,6 +2098,18 @@ namespace WebsitePanel.EnterpriseServer return BusinessErrorCodes.ERROR_ORGANIZATION_DOMAIN_IS_IN_USE; } + + List domains = GetDomainsByDomainItemId(domain.DomainId); + foreach (DomainInfo d in domains) + { + if (d.WebSiteId > 0) + { + TaskManager.WriteError("Domain points to the existing web site"); + return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_WEB_SITE; + } + } + + // remove DNS zone meta-item if required if (domain.ZoneItemId > 0) { @@ -1970,6 +2139,8 @@ namespace WebsitePanel.EnterpriseServer // load domain DomainInfo domain = GetDomain(domainId); + if (domain == null) + return 0; // place log record TaskManager.StartTask("DOMAIN", "DELETE", domain.DomainName); @@ -1996,6 +2167,21 @@ namespace WebsitePanel.EnterpriseServer return BusinessErrorCodes.ERROR_ORGANIZATION_DOMAIN_IS_IN_USE; } + + if (!domain.IsDomainPointer) + { + List domains = GetDomainsByDomainItemId(domain.DomainId); + foreach (DomainInfo d in domains) + { + if (d.WebSiteId > 0) + { + TaskManager.WriteError("Domain points to the existing web site"); + return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_WEB_SITE; + } + } + } + + // delete instant alias if (domain.InstantAliasId > 0) { @@ -2106,6 +2292,143 @@ namespace WebsitePanel.EnterpriseServer // update domain domain.ZoneItemId = zoneItemId; UpdateDomain(domain); + + domain = GetDomain(domainId); + + + PackageContext cntx = PackageController.GetPackageContext(domain.PackageId); + if (cntx != null) + { + // fill dictionaries + foreach (HostingPlanGroupInfo group in cntx.GroupsArray) + { + try + { + bool bFound = false; + switch (group.GroupName) + { + case ResourceGroups.Dns: + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Ftp, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2000, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2005, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2008, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2012, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MySql4, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MySql5, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Statistics, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.VPS, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.VPSForPC, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Dns, domain, ""); + break; + case ResourceGroups.Os: + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Os, domain, ""); + break; + case ResourceGroups.HostedOrganizations: + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.HostedOrganizations, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.HostedCRM, domain, ""); + break; + case ResourceGroups.Mail: + List myDomains = ServerController.GetMyDomains(domain.PackageId); + foreach (DomainInfo mailDomain in myDomains) + { + if ((mailDomain.MailDomainId != 0) && (domain.DomainName.ToLower() == mailDomain.DomainName.ToLower())) + { + bFound = true; + break; + } + } + if (bFound) ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Mail, domain, ""); + break; + case ResourceGroups.Exchange: + List orgs = OrganizationController.GetOrganizations(domain.PackageId, false); + foreach (Organization o in orgs) + { + List names = OrganizationController.GetOrganizationDomains(o.Id); + foreach (OrganizationDomainName name in names) + { + if (domain.DomainName.ToLower() == name.DomainName.ToLower()) + { + bFound = true; + break; + } + } + if (bFound) break; + } + if (bFound) + { + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Exchange, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.BlackBerry, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.OCS, domain, ""); + } + break; + case ResourceGroups.Lync: + List orgsLync = OrganizationController.GetOrganizations(domain.PackageId, false); + foreach (Organization o in orgsLync) + { + if ((o.DefaultDomain.ToLower() == domain.DomainName.ToLower()) & + (o.LyncTenantId != null)) + { + bFound = true; + break; + } + } + if (bFound) + { + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Lync, domain, ""); + } + break; + case ResourceGroups.Web: + List sites = WebServerController.GetWebSites(domain.PackageId, false); + foreach (WebSite w in sites) + { + if ((w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1) || + (w.SiteId.ToLower() == domain.DomainName.ToLower())) + { + WebServerController.AddWebSitePointer( w.Id, + (w.SiteId.ToLower() == domain.DomainName.ToLower()) ? "" : w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), ""), + domain.DomainId, false, true, true); + } + + List pointers = WebServerController.GetWebSitePointers(w.Id); + foreach (DomainInfo pointer in pointers) + { + if ((pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1)|| + (pointer.DomainName.ToLower() == domain.DomainName.ToLower())) + { + WebServerController.AddWebSitePointer( w.Id, + (pointer.DomainName.ToLower() == domain.DomainName.ToLower()) ? "" : pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), ""), + domain.DomainId, false, true, true); + } + } + } + + if (sites.Count == 1) + { + // load site item + IPAddressInfo ip = ServerController.GetIPAddress(sites[0].SiteIPAddressId); + + string serviceIp = (ip != null) ? ip.ExternalIP : null; + + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(sites[0].ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Web, domain, serviceIp, true); + } + + break; + } + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } + } + } + } // add web site DNS records @@ -2172,22 +2495,46 @@ namespace WebsitePanel.EnterpriseServer instantAlias = GetDomainItem(instantAliasId); } - // add web site pointer if required - if (domain.WebSiteId > 0 && instantAlias.WebSiteId == 0) + string parentZone = domain.ZoneName; + if (string.IsNullOrEmpty(parentZone)) { - int webRes = WebServerController.AddWebSitePointer(domain.WebSiteId, hostName, domainId); - if (webRes < 0) - return webRes; + DomainInfo parentDomain = GetDomain(domain.DomainId); + parentZone = parentDomain.DomainName; + } + + + if (domain.WebSiteId > 0) + { + WebServerController.AddWebSitePointer(domain.WebSiteId, + ((domain.DomainName.Replace("." + parentZone, "") == parentZone) | + (domain.DomainName == parentZone)) + ? "" : domain.DomainName.Replace("." + parentZone, ""), + instantAlias.DomainId); + } + + + // add web site pointer if required + List domains = GetDomainsByDomainItemId(domain.DomainId); + foreach (DomainInfo d in domains) + { + + if (d.WebSiteId > 0) + { + WebServerController.AddWebSitePointer(d.WebSiteId, + ((d.DomainName.Replace("." + parentZone, "") == parentZone) | + (d.DomainName == parentZone)) + ? "" : d.DomainName.Replace("." + parentZone, ""), + instantAlias.DomainId); + } + } + + // add mail domain pointer + if (domain.MailDomainId > 0 && instantAlias.MailDomainId == 0) + { + int mailRes = MailServerController.AddMailDomainPointer(domain.MailDomainId, instantAliasId); + if (mailRes < 0) + return mailRes; } - /* - // add mail domain pointer - if (domain.MailDomainId > 0 && instantAlias.MailDomainId == 0) - { - int mailRes = MailServerController.AddMailDomainPointer(domain.MailDomainId, instantAliasId); - if (mailRes < 0) - return mailRes; - } - */ return 0; } @@ -2209,6 +2556,8 @@ namespace WebsitePanel.EnterpriseServer // load domain DomainInfo domain = GetDomain(domainId); + if (domain == null) + return 0; // place log record TaskManager.StartTask("DOMAIN", "DELETE_INSTANT_ALIAS", domain.DomainName); @@ -2217,7 +2566,7 @@ namespace WebsitePanel.EnterpriseServer try { // load instant alias domain - DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName); + DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName, true, false); if (instantAlias == null) return 0; @@ -2228,15 +2577,24 @@ namespace WebsitePanel.EnterpriseServer if (webRes < 0) return webRes; } - /* - // remove from mail domain pointers - if (instantAlias.MailDomainId > 0) - { - int mailRes = MailServerController.DeleteMailDomainPointer(instantAlias.MailDomainId, instantAlias.DomainId); - if (mailRes < 0) - return mailRes; - } - */ + + List domains = GetDomainsByDomainItemId(instantAlias.DomainId); + + foreach (DomainInfo d in domains) + { + if (d.WebSiteId > 0) + { + WebServerController.DeleteWebSitePointer(d.WebSiteId, d.DomainId); + } + } + + // remove from mail domain pointers + if (instantAlias.MailDomainId > 0) + { + int mailRes = MailServerController.DeleteMailDomainPointer(instantAlias.MailDomainId, instantAlias.DomainId); + if (mailRes < 0) + return mailRes; + } // delete instant alias int res = DeleteDomain(instantAlias.DomainId); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SharePoint/HostedSharePointServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SharePoint/HostedSharePointServerController.cs index 38534a99..eebff84b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SharePoint/HostedSharePointServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SharePoint/HostedSharePointServerController.cs @@ -331,27 +331,13 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint string hostName = tmpStr[0]; string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1)); - DomainInfo domain = ServerController.GetDomain(domainName); - if (domain != null) - { - string website = siteName; + List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); + List resourceRecords = DnsServerController.BuildDnsResourceRecords(dnsRecords, hostName, domainName, ""); + DNSServer dns = new DNSServer(); - DnsRecord[] records = ServerController.GetDnsZoneRecords(domain.DomainId); - foreach (DnsRecord record in records) - { - var type = record.RecordType; - if ((type == DnsRecordType.A || type == DnsRecordType.AAAA) && String.IsNullOrEmpty(record.RecordName)) - { - ServerController.DeleteDnsZoneRecord(domain.DomainId, String.Empty, type, record.RecordData); - break; - } - } - - ServerController.AddDnsZoneRecord(domain.DomainId, hostName, DnsRecordType.A, hostedSharePointSettings["RootWebApplicationIpAddress"], 0, 0, 0, 0); - var ip = hostedSharePointSettings["RootWebApplicationIpAddress"]; - var type2 = ip.Contains(":") ? DnsRecordType.AAAA : DnsRecordType.A; - ServerController.AddDnsZoneRecord(domain.DomainId, String.Empty, type2, ip, 0, 0, 0, 0); - } + ServiceProviderProxy.Init(dns, dnsServiceId); + // add new resource records + dns.AddZoneRecords(domainName, resourceRecords.ToArray()); } TaskManager.ItemId = itemId; @@ -412,27 +398,13 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint string hostName = tmpStr[0]; string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1)); - DomainInfo domain = ServerController.GetDomain(domainName); - if (domain != null) - { - var ip = hostedSharePointSettings["RootWebApplicationIpAddress"]; - var type = ip.Contains(":") ? DnsRecordType.AAAA : DnsRecordType.A; - ServerController.DeleteDnsZoneRecord(domain.DomainId, String.Empty, type, ip); - ServerController.DeleteDnsZoneRecord(domain.DomainId, "www", type, ip); - if (!String.IsNullOrEmpty(domain.WebSiteName)) - { - DnsRecord[] records = ServerController.GetDnsZoneRecords(domain.DomainId); - foreach (DnsRecord record in records) - { - type = record.RecordType; - if ((type == DnsRecordType.A || type == DnsRecordType.AAAA) && record.RecordName.Equals("www", StringComparison.CurrentCultureIgnoreCase)) - { - ServerController.AddDnsZoneRecord(domain.DomainId, String.Empty, DnsRecordType.A, record.RecordData, 0, 0, 0, 0); - break; - } - } - } - } + List dnsRecords = ServerController.GetDnsRecordsByService(origItem.ServiceId); + List resourceRecords = DnsServerController.BuildDnsResourceRecords(dnsRecords, hostName, domainName, ""); + DNSServer dns = new DNSServer(); + + ServiceProviderProxy.Init(dns, dnsServiceId); + // add new resource records + dns.DeleteZoneRecords(domainName, resourceRecords.ToArray()); } return 0; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SharePoint/SharePointServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SharePoint/SharePointServerController.cs index 5e3692dd..63382be7 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SharePoint/SharePointServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/SharePoint/SharePointServerController.cs @@ -228,7 +228,7 @@ namespace WebsitePanel.EnterpriseServer "sp_dropsrvrolemember '{0}', 'dbcreator'\nGO", dbUser.Name)); // restore original web site bindings - web.UpdateSiteBindings(site.SiteId, bindings); + web.UpdateSiteBindings(site.SiteId, bindings, false); // save statistics item item.ServiceId = serviceId; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Tasks/TaskManager.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Tasks/TaskManager.cs index e482544d..e7b3c904 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Tasks/TaskManager.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Tasks/TaskManager.cs @@ -398,12 +398,18 @@ namespace WebsitePanel.EnterpriseServer public static Dictionary GetScheduledTasks() { Dictionary scheduledTasks = new Dictionary(); - foreach (BackgroundTask task in tasks.Values) + try + { + foreach (BackgroundTask task in tasks.Values) + { + if (task.ScheduleId > 0 + && !task.Completed + && !scheduledTasks.ContainsKey(task.ScheduleId)) + scheduledTasks.Add(task.ScheduleId, task); + } + } + catch (Exception) { - if (task.ScheduleId > 0 - && !task.Completed - && !scheduledTasks.ContainsKey(task.ScheduleId)) - scheduledTasks.Add(task.ScheduleId, task); } return scheduledTasks; } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Virtualization/VirtualizationServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Virtualization/VirtualizationServerController.cs index f8f24345..ee986ab1 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Virtualization/VirtualizationServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Virtualization/VirtualizationServerController.cs @@ -39,6 +39,7 @@ using WebsitePanel.Providers; using System.Text; using System.Collections; using System.Net.Mail; +using System.Diagnostics; namespace WebsitePanel.EnterpriseServer { @@ -2991,6 +2992,18 @@ namespace WebsitePanel.EnterpriseServer public static ResultObject AddVirtualMachinePrivateIPAddresses(int itemId, bool selectRandom, int addressesNumber, string[] addresses, bool provisionKvp) { + // trace info + Trace.TraceInformation("Entering AddVirtualMachinePrivateIPAddresses()"); + Trace.TraceInformation("Item ID: {0}", itemId); + Trace.TraceInformation("SelectRandom: {0}", selectRandom); + Trace.TraceInformation("AddressesNumber: {0}", addressesNumber); + + if (addresses != null) + { + foreach(var address in addresses) + Trace.TraceInformation("addresses[n]: {0}", address); + } + ResultObject res = new ResultObject(); // load service item @@ -3026,6 +3039,9 @@ namespace WebsitePanel.EnterpriseServer bool wasEmptyList = (nic.IPAddresses.Length == 0); + if(wasEmptyList) + Trace.TraceInformation("NIC IP addresses list is empty"); + // check IP addresses if they are specified List checkResults = CheckPrivateIPAddresses(vm.PackageId, addresses); if (checkResults.Count > 0) @@ -3213,51 +3229,69 @@ namespace WebsitePanel.EnterpriseServer private static string GenerateNextAvailablePrivateIP(SortedList ips, string subnetMask, string startIPAddress) { - // start IP address - var startIp = IPAddress.Parse(startIPAddress); - var mask = IPAddress.Parse(subnetMask); + Trace.TraceInformation("Entering GenerateNextAvailablePrivateIP()"); + Trace.TraceInformation("Param - number of sorted IPs in the list: {0}", ips.Count); + Trace.TraceInformation("Param - startIPAddress: {0}", startIPAddress); + Trace.TraceInformation("Param - subnetMask: {0}", subnetMask); - var lastAddress = (startIp & ~mask) - 1; + // start IP address + var ip = IPAddress.Parse(startIPAddress) - 1; + + Trace.TraceInformation("Start looking for next available IP"); foreach (var addr in ips.Keys) { - if ((addr - lastAddress) > 1) + if ((addr - ip) > 1) { // it is a gap break; } else { - lastAddress = addr; + ip = addr; } } - var genAddr = lastAddress + 1; + // final IP found + ip = ip + 1; - // convert to IP address - var ip = startIp & mask | genAddr; string genIP = ip.ToString(); + Trace.TraceInformation("Generated IP: {0}", genIP); // store in cache - ips.Add(genAddr, genIP); + Trace.TraceInformation("Adding to sorted list"); + ips.Add(ip, genIP); + Trace.TraceInformation("Leaving GenerateNextAvailablePrivateIP()"); return genIP; } private static SortedList GetSortedNormalizedIPAddresses(List ips, string subnetMask) { + Trace.TraceInformation("Entering GetSortedNormalizedIPAddresses()"); + Trace.TraceInformation("Param - subnetMask: {0}", subnetMask); + var mask = IPAddress.Parse(subnetMask); SortedList sortedIps = new SortedList(); foreach (PrivateIPAddress ip in ips) { - var addr = ~mask & IPAddress.Parse(ip.IPAddress); + var addr = IPAddress.Parse(ip.IPAddress); sortedIps.Add(addr, ip.IPAddress); + + Trace.TraceInformation("Added {0} to sorted IPs list with key: {1} ", ip.IPAddress, addr.ToString()); } + Trace.TraceInformation("Leaving GetSortedNormalizedIPAddresses()"); return sortedIps; } private static string GetPrivateNetworkSubnetMask(string cidr, bool v6) { - if (v6) return "/" + cidr; - else return IPAddress.Parse("/" + cidr).ToV4MaskString(); + if (v6) + { + return "/" + cidr; + } + else + { + return IPAddress.Parse("/" + cidr).ToV4MaskString(); + } } private static string GetSubnetMaskCidr(string subnetMask) { @@ -3266,7 +3300,7 @@ namespace WebsitePanel.EnterpriseServer var ip = IPAddress.Parse(subnetMask); if (ip.V4) { int cidr = 32; - long mask = (long)ip.Address; + var mask = ip.Address; while ((mask & 1) == 0 && cidr > 0) { mask >>= 1; cidr -= 1; @@ -3282,7 +3316,8 @@ namespace WebsitePanel.EnterpriseServer var mask = IPAddress.Parse(subnetMask); var ip = IPAddress.Parse(ipAddress); - return ((mask & ip) == mask); + //return ((mask & ip) == mask); + return true; } #endregion diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/VirtualizationForPrivateCloud/VirtualizationServerControllerForPrivateCloud.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/VirtualizationForPrivateCloud/VirtualizationServerControllerForPrivateCloud.cs index bdca6de3..d1df6e1e 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/VirtualizationForPrivateCloud/VirtualizationServerControllerForPrivateCloud.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/VirtualizationForPrivateCloud/VirtualizationServerControllerForPrivateCloud.cs @@ -3778,7 +3778,7 @@ namespace WebsitePanel.EnterpriseServer ret = vs.GetDeviceEvents(serviceInfo.ServerName, serviceProviderItem.Name); } - catch(Exception ex) + catch(Exception ) { ret = null; } @@ -3804,7 +3804,7 @@ namespace WebsitePanel.EnterpriseServer ret = vs.GetMonitoringAlerts(serviceInfo.ServerName, serviceProviderItem.Name); } - catch (Exception ex) + catch (Exception ) { ret = null; } @@ -3832,7 +3832,7 @@ namespace WebsitePanel.EnterpriseServer ret = vs.GetPerfomanceValue(serviceProviderItem.Name, perf, startPeriod, endPeriod); } - catch (Exception ex) + catch (Exception ) { ret = null; } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs index 3ba7ed7c..ff0f06d2 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs @@ -156,7 +156,10 @@ namespace WebsitePanel.EnterpriseServer WebServer webServer = GetAssociatedWebServer(packageId); if (!webServer.IsMsDeployInstalled()) + { + TaskManager.WriteError("MsDeploy is not installed"); return Error(GalleryErrors.MsDeployIsNotInstalled); + } // get categories result = webServer.GetGalleryCategories(SecurityContext.User.UserId); @@ -270,6 +273,7 @@ namespace WebsitePanel.EnterpriseServer // x => MatchGalleryAppDependencies(x.Dependency, appsFilter.ToArray()) // || MatchMenaltoGalleryApp(x, appsFilter.ToArray()))); + { FilterResultApplications(packageId, result); @@ -293,14 +297,33 @@ namespace WebsitePanel.EnterpriseServer int userId = SecurityContext.User.UserId; // SecurityContext.SetThreadSupervisorPrincipal(); + + //get filter mode + int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Web); + StringDictionary serviceSettings = ServerController.GetServiceSettings(serviceId); + bool bExclude = (Utils.ParseInt(serviceSettings["GalleryAppsFilterMode"], 0) != 1); //0 - Exclude apps, 1- Include apps + // string[] filteredApps = GetServiceAppsCatalogFilter(packageId); // + + + if (filteredApps != null) { - result.Value = new List(Array.FindAll(result.Value.ToArray(), - x => !Array.Exists(filteredApps, - z => z.Equals(x.Id, StringComparison.InvariantCultureIgnoreCase)))); + if (bExclude) + { + result.Value = new List(Array.FindAll(result.Value.ToArray(), + x => !Array.Exists(filteredApps, + z => z.Equals(x.Id, StringComparison.InvariantCultureIgnoreCase)))); + } + else + { + result.Value = new List(Array.FindAll(result.Value.ToArray(), + x => Array.Exists(filteredApps, + z => z.Equals(x.Id, StringComparison.InvariantCultureIgnoreCase)))); + + } } // SecurityContext.SetThreadPrincipal(userId); @@ -487,6 +510,19 @@ namespace WebsitePanel.EnterpriseServer || context.Groups.ContainsKey(ResourceGroups.MySql5))) result.ErrorCodes.Add(GalleryErrors.MySQLRequired); + + + //show Dependency warning optionaly + int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Web); + StringDictionary serviceSettings = ServerController.GetServiceSettings(serviceId); + + bool galleryAppsAlwaysIgnoreDependencies = Utils.ParseBool(serviceSettings["GalleryAppsAlwaysIgnoreDependencies"], false); + + if (galleryAppsAlwaysIgnoreDependencies) + { + result.ErrorCodes.Clear(); + } + if (result.ErrorCodes.Count > 0) { GalleryApplicationResult warning = Warning(result, GalleryErrors.PackageDoesNotMeetRequirements); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 49916149..1590849d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -29,6 +29,7 @@ using System; using System.IO; using System.Data; +using System.Linq; using System.Collections.Specialized; using System.Collections.Generic; using System.Text; @@ -133,6 +134,18 @@ namespace WebsitePanel.EnterpriseServer if(ip != null) site.SiteIPAddress = ip.ExternalIP; + // check if site has dedicated IP assigned + var siteIpAddresses = ServerController.GetItemIPAddresses(siteItemId, IPAddressPool.None); + foreach (var siteIp in siteIpAddresses) + { + var packageIpAddress = ServerController.GetPackageIPAddress(siteIp.AddressID); + if (packageIpAddress != null && packageIpAddress.ExternalIP == site.SiteIPAddress) + { + site.IsDedicatedIP = true; + break; + } + } + // truncate home folder site.ContentPath = FilesController.GetVirtualPackagePath(siteItem.PackageId, site.ContentPath); @@ -143,14 +156,13 @@ namespace WebsitePanel.EnterpriseServer site.FrontPageAccount = siteItem.FrontPageAccount; if (String.IsNullOrEmpty(site.FrontPageAccount)) site.FrontPageAccount = GetFrontPageUsername(site.Name); - #region Restore Web Deploy publishing persistent properties + // Set Web Deploy publishing account site.WebDeployPublishingAccount = siteItem.WebDeployPublishingAccount; // Set Web Deploy site publishing enabled site.WebDeploySitePublishingEnabled = siteItem.WebDeploySitePublishingEnabled; // Set Web Deploy site publishing profile site.WebDeploySitePublishingProfile = siteItem.WebDeploySitePublishingProfile; - #endregion return site; } @@ -160,6 +172,21 @@ namespace WebsitePanel.EnterpriseServer return AddWebSite(packageId, hostName, domainId, ipAddressId, false, true); } + + private static bool IsValidIPAdddress(string addr) + { + System.Net.IPAddress ip; + if (System.Net.IPAddress.TryParse(addr, out ip)) + { + return ((ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) | + (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)); + } + else + { + return false; + } + } + public static int AddWebSite(int packageId, string hostName, int domainId, int packageAddressId, bool addInstantAlias, bool ignoreGlobalDNSRecords) { @@ -201,7 +228,7 @@ namespace WebsitePanel.EnterpriseServer if (serviceId == 0) return BusinessErrorCodes.ERROR_WEB_SITE_SERVICE_UNAVAILABLE; - #region Fix for bug #587 + // Initialize IIS provider webservice proxy WebServer web = new WebServer(); ServiceProviderProxy.Init(web, serviceId); @@ -219,7 +246,6 @@ namespace WebsitePanel.EnterpriseServer // Return generic operation failed error return BusinessErrorCodes.FAILED_EXECUTE_SERVICE_OPERATION; } - #endregion // load web settings StringDictionary webSettings = ServerController.GetServiceSettings(serviceId); @@ -247,24 +273,41 @@ namespace WebsitePanel.EnterpriseServer // load web DNS records List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); + if (dedicatedIp) + { + foreach (GlobalDnsRecord d in dnsRecords) + { + if (!string.IsNullOrEmpty(d.ExternalIP)) + { + if (!IsValidIPAdddress(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; + } + } + } + else + { + if (domain.ZoneItemId > 0) + { + StringDictionary settings = ServerController.GetServiceSettings(serviceId); + if (string.IsNullOrEmpty(settings["PublicSharedIP"])) + return BusinessErrorCodes.ERROR_PUBLICSHAREDIP_FOR_SHAREDIP; + } + } + // prepare site bindings List bindings = new List(); - if (!dedicatedIp) + // SHARED IP + // fill main domain bindings + FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); + + //double check all bindings + foreach (ServerBinding b in bindings) { - // SHARED IP - // fill main domain bindings - FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); - - //double check all bindings - foreach (ServerBinding b in bindings) - { - if (DataProvider.CheckDomain(domain.PackageId, b.Host, true) != 0) - return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; - } - + if (DataProvider.CheckDomain(domain.PackageId, b.Host, true) != 0) + return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; } - else + + if (dedicatedIp) { // DEDICATED IP bindings.Add(new ServerBinding(ipAddr, "80", "")); @@ -321,12 +364,10 @@ namespace WebsitePanel.EnterpriseServer site.EnableParentPaths = Utils.ParseBool(webPolicy["EnableParentPaths"], false); site.DedicatedApplicationPool = Utils.ParseBool(webPolicy["EnableDedicatedPool"], false); - #region Fix for bug: #1556 + // Ensure the website meets hosting plan quotas QuotaValueInfo quotaInfo = PackageController.GetPackageQuota(packageId, Quotas.WEB_APPPOOLS); site.DedicatedApplicationPool = site.DedicatedApplicationPool && (quotaInfo.QuotaAllocatedValue > 0); - - #endregion site.EnableAnonymousAccess = Utils.ParseBool(webPolicy["EnableAnonymousAccess"], false); site.EnableWindowsAuthentication = Utils.ParseBool(webPolicy["EnableWindowsAuthentication"], false); @@ -386,7 +427,7 @@ namespace WebsitePanel.EnterpriseServer // update domain // add main pointer - AddWebSitePointer(siteItemId, hostName, domain.DomainId, false, ignoreGlobalDNSRecords); + AddWebSitePointer(siteItemId, hostName, domain.DomainId, false, ignoreGlobalDNSRecords, false); // add parking page @@ -560,27 +601,56 @@ namespace WebsitePanel.EnterpriseServer // delete web site try { - // remove all web site pointers + //cleanup certificates + //cleanup certificates + List certificates = GetCertificatesForSite(siteItemId); + foreach (SSLCertificate c in certificates) + { + DeleteCertificate(siteItemId, c); + } + + // remove all web site pointers List pointers = GetWebSitePointers(siteItemId); foreach (DomainInfo pointer in pointers) - DeleteWebSitePointer(siteItemId, pointer.DomainId, false, true); + DeleteWebSitePointer(siteItemId, pointer.DomainId, false, true, true); // remove web site main pointer DomainInfo domain = ServerController.GetDomain(siteItem.Name); if(domain != null) - DeleteWebSitePointer(siteItemId, domain.DomainId, false, true); + DeleteWebSitePointer(siteItemId, domain.DomainId, false, true, true); + + List sites = WebServerController.GetWebSites(domain.PackageId, false); + bool oneSiteOnly = (sites.Count == 1); + + if (oneSiteOnly) + { + // load site item + IPAddressInfo ip = ServerController.GetIPAddress(sites[0].SiteIPAddressId); + + string serviceIp = (ip != null) ? ip.ExternalIP : null; + + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(sites[0].ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + + ServerController.RemoveServiceDNSRecords(domain.PackageId, ResourceGroups.Web, domain, serviceIp, true); + } + + + // delete web site WebServer web = new WebServer(); ServiceProviderProxy.Init(web, siteItem.ServiceId); - #region Fix for bug #710 // if (web.IsFrontPageSystemInstalled() && web.IsFrontPageInstalled(siteItem.SiteId)) { web.UninstallFrontPage(siteItem.SiteId, siteItem.FrontPageAccount); } - #endregion // web.DeleteSite(siteItem.SiteId); @@ -611,12 +681,23 @@ namespace WebsitePanel.EnterpriseServer if (siteItem == null) return BusinessErrorCodes.ERROR_WEB_SITE_PACKAGE_ITEM_NOT_FOUND; - // load assigned IP address - IPAddressInfo ip = ServerController.GetIPAddress(ipAddressId); - if (ip == null) - return BusinessErrorCodes.ERROR_WEB_SITE_IP_ADDRESS_NOT_SPECIFIED; + + int addressId = 0; + PackageIPAddress packageIp = ServerController.GetPackageIPAddress(ipAddressId); + if (packageIp != null) + { + addressId = packageIp.AddressID; + } - string ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; + List dnsRecords = ServerController.GetDnsRecordsByService(siteItem.ServiceId); + + foreach (GlobalDnsRecord d in dnsRecords) + { + if (!string.IsNullOrEmpty(d.ExternalIP)) + { + if (!IsValidIPAdddress(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; + } + } // place log record TaskManager.StartTask("WEB_SITE", "SWITCH_TO_DEDICATED_IP", siteItem.Name); @@ -624,33 +705,151 @@ namespace WebsitePanel.EnterpriseServer try { - // get web site pointers - var sitePointers = GetWebSitePointers(siteItemId); + IPAddressInfo ip; - // get existing web site bindings + // remove all web site pointers + DomainInfo domain = ServerController.GetDomain(siteItem.Name); + DomainInfo ZoneInfo = ServerController.GetDomain(domain.DomainItemId); + + if (ZoneInfo == null) + throw new Exception("Parent zone not found"); + + //cleanup certificates + List certificates = GetCertificatesForSite(siteItemId); + foreach (SSLCertificate c in certificates) + { + DeleteCertificate(siteItemId, c); + } + + certificates = GetPendingCertificates(siteItemId); + foreach (SSLCertificate c in certificates) + { + DeleteCertificateRequest(siteItemId, c.id); + } + + List pointers = GetWebSitePointers(siteItemId); + foreach (DomainInfo pointer in pointers) + DeleteWebSitePointer(siteItemId, pointer.DomainId, true, true, false); + + // remove web site main pointer + if (domain != null) + DeleteWebSitePointer(siteItemId, domain.DomainId, true, true, false); + + // clear binding left overs + List newBindings = new List(); WebServer web = new WebServer(); ServiceProviderProxy.Init(web, siteItem.ServiceId); - var bindings = web.GetSiteBindings(siteItem.SiteId); + try + { + web.UpdateSiteBindings(siteItem.SiteId, newBindings.ToArray(), true); + } + catch (Exception) + { + + } + + List sites = WebServerController.GetWebSites(domain.PackageId, false); + bool oneSiteOnly = (sites.Count == 1); + + if (oneSiteOnly) + { + // load site item + ip = ServerController.GetIPAddress(sites[0].SiteIPAddressId); + + string serviceIp = (ip != null) ? ip.ExternalIP : null; + + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(sites[0].ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + + ServerController.RemoveServiceDNSRecords(domain.PackageId, ResourceGroups.Web, domain, serviceIp, true); + } - // update site bindings - web.UpdateSiteBindings(siteItem.SiteId, new ServerBinding[] { new ServerBinding(ipAddr, "80", "") }); // update site item - siteItem.SiteIPAddressId = ipAddressId; + siteItem.SiteIPAddressId = addressId; PackageController.UpdatePackageItem(siteItem); // associate IP with web site - if (ipAddressId != 0) - ServerController.AddItemIPAddress(siteItemId, ipAddressId); + ServerController.AddItemIPAddress(siteItemId, ipAddressId); - // TODO - what would be correct logic here? - // re-create pointers - foreach (var pointer in sitePointers) - DeleteWebSitePointer(siteItemId, pointer.DomainId, false, true); - foreach (var pointer in sitePointers) - AddWebSitePointer(siteItemId, null, pointer.DomainId, false); + string parentZone = domain.ZoneName; + if (string.IsNullOrEmpty(parentZone)) + { + DomainInfo parentDomain = ServerController.GetDomain(domain.DomainItemId); + parentZone = parentDomain.DomainName; + } + + AddWebSitePointer(siteItemId, + ((domain.DomainName.Replace("." + parentZone, "") == parentZone) | + (domain.DomainName == parentZone)) + ? "" : domain.DomainName.Replace("." + parentZone, "") + , ZoneInfo.DomainId, true, true, true); + + foreach (DomainInfo pointer in pointers) + { + string pointerParentZone = pointer.ZoneName; + if (string.IsNullOrEmpty(pointerParentZone)) + { + DomainInfo parentDomain = ServerController.GetDomain(pointer.DomainItemId); + pointerParentZone = parentDomain.DomainName; + } + + + ZoneInfo = ServerController.GetDomain(pointerParentZone); + + AddWebSitePointer(siteItemId, + ((pointer.DomainName.Replace("." + pointerParentZone, "") == pointerParentZone) | + (pointer.DomainName == pointerParentZone)) + ? "" : pointer.DomainName.Replace("." + pointerParentZone, "") + , ZoneInfo.DomainId, true, true, true); + } + + // load web site IP address + ip = ServerController.GetIPAddress(siteItem.SiteIPAddressId); + string ipAddr = "*"; + if (ip != null) + ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; + + newBindings = new List(); + + ServerBinding srvBinding = new ServerBinding(ipAddr, "80", ""); + newBindings.Add(srvBinding); + + foreach (ServerBinding b in web.GetSiteBindings(siteItem.SiteId)) + { + if (!((b.Host == srvBinding.Host) & + (b.IP == srvBinding.IP) & + (b.Port == srvBinding.Port))) + newBindings.Add(b); + } + + web.UpdateSiteBindings(siteItem.SiteId, newBindings.ToArray(), false); + + if (oneSiteOnly) + { + sites = WebServerController.GetWebSites(domain.PackageId, false); + + // load site item + ip = ServerController.GetIPAddress(sites[0].SiteIPAddressId); + + string serviceIp = (ip != null) ? ip.ExternalIP : null; + + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(sites[0].ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Web, domain, serviceIp, true); + } + return 0; } catch (Exception ex) @@ -674,21 +873,160 @@ namespace WebsitePanel.EnterpriseServer if (siteItem == null) return BusinessErrorCodes.ERROR_WEB_SITE_PACKAGE_ITEM_NOT_FOUND; + + // place log record TaskManager.StartTask("WEB_SITE", "SWITCH_TO_SHARED_IP", siteItem.Name); TaskManager.ItemId = siteItemId; try { - // get web site pointers - var sitePointers = GetWebSitePointers(siteItemId); + IPAddressInfo ip; - // get existing web site bindings + DomainInfo domain = ServerController.GetDomain(siteItem.Name); + DomainInfo ZoneInfo = ServerController.GetDomain(domain.DomainItemId); + + if (ZoneInfo == null) + throw new Exception("Parent zone not found"); + + + if (ZoneInfo.ZoneItemId > 0) + { + StringDictionary settings = ServerController.GetServiceSettings(siteItem.ServiceId); + if (string.IsNullOrEmpty(settings["PublicSharedIP"])) + return BusinessErrorCodes.ERROR_PUBLICSHAREDIP_FOR_SHAREDIP; + + } + + //cleanup certificates + List certificates = GetCertificatesForSite(siteItemId); + foreach (SSLCertificate c in certificates) + { + DeleteCertificate(siteItemId, c); + } + + certificates = GetPendingCertificates(siteItemId); + foreach (SSLCertificate c in certificates) + { + DeleteCertificateRequest(siteItemId, c.id); + } + + // remove all web site pointers + List pointers = GetWebSitePointers(siteItemId); + foreach (DomainInfo pointer in pointers) + DeleteWebSitePointer(siteItemId, pointer.DomainId, true, true, false); + + // remove web site main pointer + if (domain != null) + DeleteWebSitePointer(siteItemId, domain.DomainId, true, true, false); + + // clear binding left overs WebServer web = new WebServer(); ServiceProviderProxy.Init(web, siteItem.ServiceId); - var bindings = web.GetSiteBindings(siteItem.SiteId); + List newBindings = new List(); + + try + { + web.UpdateSiteBindings(siteItem.SiteId, newBindings.ToArray(), true); + } + catch (Exception) + { + + } + + + List sites = WebServerController.GetWebSites(domain.PackageId, false); + bool oneSiteOnly = (sites.Count == 1); + + if (oneSiteOnly) + { + // load site item + ip = ServerController.GetIPAddress(sites[0].SiteIPAddressId); + + string serviceIp = (ip != null) ? ip.ExternalIP : null; + + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(sites[0].ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + + ServerController.RemoveServiceDNSRecords(domain.PackageId, ResourceGroups.Web, domain, serviceIp, true); + } + + + //figure out the PackageAddressId + PackageIPAddress packageIpAddress = null; + var siteIpAddresses = ServerController.GetItemIPAddresses(siteItemId, IPAddressPool.None); + foreach (var siteIp in siteIpAddresses) + { + packageIpAddress = ServerController.GetPackageIPAddress(siteIp.AddressID); + if (packageIpAddress != null && packageIpAddress.AddressID == siteItem.SiteIPAddressId) + { + break; + } + } + + //Deallocate IP Address + if (packageIpAddress != null) + ServerController.DeleteItemIPAddress(siteItemId, packageIpAddress.PackageAddressID); + + // update site item + siteItem.SiteIPAddressId = 0; + PackageController.UpdatePackageItem(siteItem); + + string parentZone = domain.ZoneName; + if (string.IsNullOrEmpty(parentZone)) + { + DomainInfo parentDomain = ServerController.GetDomain(domain.DomainItemId); + parentZone = parentDomain.DomainName; + } + + AddWebSitePointer(siteItemId, + ((domain.DomainName.Replace("." + parentZone, "") == parentZone) | + (domain.DomainName == parentZone)) + ? "" : domain.DomainName.Replace("." + parentZone, "") + , ZoneInfo.DomainId, true, true, true); + + foreach (DomainInfo pointer in pointers) + { + string pointerParentZone = pointer.ZoneName; + if (string.IsNullOrEmpty(pointerParentZone)) + { + DomainInfo parentDomain = ServerController.GetDomain(pointer.DomainItemId); + pointerParentZone = parentDomain.DomainName; + } + + + ZoneInfo = ServerController.GetDomain(pointerParentZone); + + AddWebSitePointer(siteItemId, + ((pointer.DomainName.Replace("." + pointerParentZone, "") == pointerParentZone) | + (pointer.DomainName == pointerParentZone)) + ? "" : pointer.DomainName.Replace("." + pointerParentZone, "") + , ZoneInfo.DomainId, true, true, true); + } + + if (oneSiteOnly) + { + sites = WebServerController.GetWebSites(domain.PackageId, false); + + // load site item + ip = ServerController.GetIPAddress(sites[0].SiteIPAddressId); + + string serviceIp = (ip != null) ? ip.ExternalIP : null; + + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(sites[0].ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Web, domain, serviceIp, true); + } - // TODO - what would be correct logic here? return 0; } @@ -736,7 +1074,7 @@ namespace WebsitePanel.EnterpriseServer if ((bindings.Count == bindingsCount) | (bindings.Count == 0)) { - AddBinding(bindings, new ServerBinding(ipAddr, "80", string.IsNullOrEmpty(hostName) ? domainName : hostName + "." + domainName)); + AddBinding(bindings, new ServerBinding(ipAddr, "80", string.IsNullOrEmpty(hostName) ? domainName : string.IsNullOrEmpty(domainName) ? hostName : hostName + "." + domainName)); } } @@ -837,15 +1175,15 @@ namespace WebsitePanel.EnterpriseServer public static int AddWebSitePointer(int siteItemId, string hostName, int domainId) { - return AddWebSitePointer(siteItemId, hostName, domainId, true, true); + return AddWebSitePointer(siteItemId, hostName, domainId, true, true, false); } internal static int AddWebSitePointer(int siteItemId, string hostName, int domainId, bool updateWebSite) { - return AddWebSitePointer(siteItemId, hostName, domainId, updateWebSite, false); + return AddWebSitePointer(siteItemId, hostName, domainId, updateWebSite, false, false); } - internal static int AddWebSitePointer(int siteItemId, string hostName, int domainId, bool updateWebSite, bool ignoreGlobalDNSRecords) + internal static int AddWebSitePointer(int siteItemId, string hostName, int domainId, bool updateWebSite, bool ignoreGlobalDNSRecords, bool rebuild) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); @@ -862,8 +1200,11 @@ namespace WebsitePanel.EnterpriseServer return BusinessErrorCodes.ERROR_DOMAIN_PACKAGE_ITEM_NOT_FOUND; // check if the web site already exists - if (DataProvider.CheckDomain(domain.PackageId, string.IsNullOrEmpty(hostName) ? domain.DomainName : hostName + "." + domain.DomainName, true) != 0) - return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; + if (!rebuild) + { + if (DataProvider.CheckDomain(domain.PackageId, string.IsNullOrEmpty(hostName) ? domain.DomainName : hostName + "." + domain.DomainName, true) != 0) + return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; + } // get zone records for the service List dnsRecords = ServerController.GetDnsRecordsByService(siteItem.ServiceId); @@ -880,6 +1221,8 @@ namespace WebsitePanel.EnterpriseServer try { + + // load appropriate zone DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); @@ -891,6 +1234,13 @@ namespace WebsitePanel.EnterpriseServer string serviceIp = (ip != null) ? ip.ExternalIP : null; + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(siteItem.ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + //filter initiat GlobaDNSRecords list if (ignoreGlobalDNSRecords) { @@ -898,23 +1248,28 @@ namespace WebsitePanel.EnterpriseServer foreach (GlobalDnsRecord r in dnsRecords) { if (r.RecordName == "[host_name]") + { tmpDnsRecords.Add(r); + break; + } } } else tmpDnsRecords = dnsRecords; - List resourceRecords = DnsServerController.BuildDnsResourceRecords( - tmpDnsRecords, hostName, domain.DomainName, serviceIp); + List resourceRecords = DnsServerController.BuildDnsResourceRecords(tmpDnsRecords, hostName, domain.DomainName, serviceIp); - foreach (DnsRecord r in resourceRecords) + if (!rebuild) { - if (r.RecordName != "*") + foreach (DnsRecord r in resourceRecords) { - // check if the web site already exists - if (DataProvider.CheckDomain(domain.PackageId, string.IsNullOrEmpty(r.RecordName) ? domain.DomainName : r.RecordName + "." + domain.DomainName, true) != 0) - return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; + if (r.RecordName != "*") + { + // check if the web site already exists + if (DataProvider.CheckDomain(domain.PackageId, string.IsNullOrEmpty(r.RecordName) ? domain.DomainName : r.RecordName + "." + domain.DomainName, true) != 0) + return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; + } } } @@ -923,6 +1278,17 @@ namespace WebsitePanel.EnterpriseServer DNSServer dns = new DNSServer(); ServiceProviderProxy.Init(dns, zone.ServiceId); + DnsRecord[] domainRecords = dns.GetZoneRecords(zone.Name); + var duplicateRecords = (from zoneRecord in domainRecords + from resRecord in resourceRecords + where zoneRecord.RecordName == resRecord.RecordName + where zoneRecord.RecordType == resRecord.RecordType + select zoneRecord).ToArray(); + if (duplicateRecords != null && duplicateRecords.Count() > 0) + { + dns.DeleteZoneRecords(zone.Name, duplicateRecords); + } + // add new resource records dns.AddZoneRecords(zone.Name, resourceRecords.ToArray()); } @@ -945,43 +1311,64 @@ namespace WebsitePanel.EnterpriseServer bool dedicatedIp = bindings.Exists(binding => { return String.IsNullOrEmpty(binding.Host) && binding.IP != "*"; }); // update binding only for "shared" ip addresses - if (!dedicatedIp) - { - // add new host headers - string ipAddr = "*"; - if (ip != null) - ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; + // add new host headers + string ipAddr = "*"; + if (ip != null) + ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; - // fill bindings - FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); + // fill bindings + FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); - //for logging purposes - foreach (ServerBinding b in bindings) - { - string header = string.Format("{0} {1} {2}", b.Host, b.IP, b.Port); - TaskManager.WriteParameter("Add Binding", header); - } - - // update bindings - if (updateWebSite) - web.UpdateSiteBindings(siteItem.SiteId, bindings.ToArray()); - } - - - // update domain - domain.WebSiteId = siteItemId; - domain.IsDomainPointer = true; + //for logging purposes foreach (ServerBinding b in bindings) { - //add new domain record - domain.DomainName = b.Host; - int domainID = ServerController.AddDomain(domain); - DomainInfo domainTmp = ServerController.GetDomain(domainID); - if (domainTmp != null) + string header = string.Format("{0} {1} {2}", b.Host, b.IP, b.Port); + TaskManager.WriteParameter("Add Binding", header); + } + + // update bindings + if (updateWebSite) + web.UpdateSiteBindings(siteItem.SiteId, bindings.ToArray(), false); + + // update domain + if (!rebuild) + { + domain.WebSiteId = siteItemId; + domain.IsDomainPointer = true; + foreach (ServerBinding b in bindings) { - domainTmp.WebSiteId = siteItemId; - domainTmp.ZoneItemId = domain.ZoneItemId; - ServerController.UpdateDomain(domainTmp); + //add new domain record + if (!string.IsNullOrEmpty(b.Host)) + { + domain.DomainName = b.Host; + + DomainInfo domainTmp = ServerController.GetDomain(domain.DomainName); + if (!((domainTmp != null) && (domainTmp.WebSiteId == siteItemId))) + { + int domainID = ServerController.AddDomain(domain, domain.IsInstantAlias, false); + domainTmp = ServerController.GetDomain(domainID); + if (domainTmp != null) + { + domainTmp.WebSiteId = siteItemId; + domainTmp.ZoneItemId = domain.ZoneItemId; + domainTmp.DomainItemId = domainId; + + ServerController.UpdateDomain(domainTmp); + } + } + } + } + } + else + { + if (domain.ZoneItemId > 0) + { + DomainInfo domainTmp = ServerController.GetDomain(string.IsNullOrEmpty(hostName) ? domain.DomainName : hostName + "." + domain.DomainName, true, true); + if (domainTmp != null) + { + domainTmp.ZoneItemId = domain.ZoneItemId; + ServerController.UpdateDomain(domainTmp); + } } } @@ -999,10 +1386,10 @@ namespace WebsitePanel.EnterpriseServer public static int DeleteWebSitePointer(int siteItemId, int domainId) { - return DeleteWebSitePointer(siteItemId, domainId, true, true); + return DeleteWebSitePointer(siteItemId, domainId, true, true, true); } - public static int DeleteWebSitePointer(int siteItemId, int domainId, bool updateWebSite, bool ignoreGlobalDNSRecords) + public static int DeleteWebSitePointer(int siteItemId, int domainId, bool updateWebSite, bool ignoreGlobalDNSRecords, bool deleteDomainsRecord) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); @@ -1042,6 +1429,13 @@ namespace WebsitePanel.EnterpriseServer string serviceIp = (ip != null) ? ip.ExternalIP : null; + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(siteItem.ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + if (ignoreGlobalDNSRecords) { foreach (GlobalDnsRecord r in dnsRecords) @@ -1078,30 +1472,38 @@ namespace WebsitePanel.EnterpriseServer bool dedicatedIp = bindings.Exists(binding => { return String.IsNullOrEmpty(binding.Host) && binding.IP != "*"; }); // update binding only for "shared" ip addresses - if (!dedicatedIp) - { - // remove host headers - List domainBindings = new List(); - FillWebServerBindings(domainBindings, dnsRecords, "", domain.DomainName, "", ignoreGlobalDNSRecords); - // fill to remove list - List headersToRemove = new List(); - foreach (ServerBinding domainBinding in domainBindings) - headersToRemove.Add(domainBinding.Host); + // remove host headers + List domainBindings = new List(); + FillWebServerBindings(domainBindings, dnsRecords, "", domain.DomainName, "", ignoreGlobalDNSRecords); - // remove bndings - bindings.RemoveAll(b => { return headersToRemove.Contains(b.Host) && b.Port == "80"; } ); + // fill to remove list + List headersToRemove = new List(); + foreach (ServerBinding domainBinding in domainBindings) + headersToRemove.Add(domainBinding.Host); - // update bindings - if (updateWebSite) - web.UpdateSiteBindings(siteItem.SiteId, bindings.ToArray()); - } + // remove bndings + bindings.RemoveAll(b => { return headersToRemove.Contains(b.Host) && b.Port == "80"; } ); + + // update bindings + if (updateWebSite) + web.UpdateSiteBindings(siteItem.SiteId, bindings.ToArray(), true); // update domain - domain.WebSiteId = 0; - ServerController.UpdateDomain(domain); - ServerController.DeleteDomain(domain.DomainId); - + if (deleteDomainsRecord) + { + if ((domain.WebSiteId > 0) && (!domain.IsDomainPointer)) + { + domain.WebSiteId = 0; + ServerController.UpdateDomain(domain); + } + else + { + domain.WebSiteId = 0; + ServerController.UpdateDomain(domain); + ServerController.DeleteDomain(domain.DomainId); + } + } return 0; } catch (Exception ex) @@ -2152,7 +2554,7 @@ namespace WebsitePanel.EnterpriseServer WebServer server = GetWebServer(item.ServiceId); StringDictionary webSettings = ServerController.GetServiceSettings(item.ServiceId); - if (webSettings["WmSvc.NETBIOS"] != null) + if (!String.IsNullOrEmpty(webSettings["WmSvc.NETBIOS"])) { accountName = webSettings["WmSvc.NETBIOS"].ToString() + "\\" + accountName; } @@ -2920,7 +3322,7 @@ namespace WebsitePanel.EnterpriseServer WebServer server = GetWebServer(item.ServiceId); StringDictionary webSettings = ServerController.GetServiceSettings(item.ServiceId); - if (webSettings["WmSvc.NETBIOS"] != null) + if (!String.IsNullOrEmpty(webSettings["WmSvc.NETBIOS"])) { accountName = webSettings["WmSvc.NETBIOS"].ToString() + "\\" + accountName; } @@ -3363,6 +3765,99 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and } } + + public static int ImporHostHeader(int userId, int packageId, int siteId) + { + WebSite siteItem = (WebSite)PackageController.GetPackageItem(siteId); + if (siteItem == null) + return -1; + + // load live site from service + WebServer web = new WebServer(); + ServiceProviderProxy.Init(web, siteItem.ServiceId); + + // Verify if already exists + List domains = ServerController.GetDomains(packageId); + + // Get hostheader + foreach (ServerBinding b in web.GetSiteBindings(siteItem.SiteId)) + { + if ((!DoesHeaderExistInDomains(b.Host.ToLower(), domains)) && (!string.IsNullOrEmpty(b.Host))) + { + // If not get domain info and add to domains + int domainId = FindDomainForHeader(b.Host.ToLower(), domains); + if (domainId > 0) + { + DomainInfo domain = ServerController.GetDomain(domainId); + DomainInfo newDomain = new DomainInfo(); + newDomain.DomainName = b.Host.ToLower(); + newDomain.PackageId = domain.PackageId; + newDomain.IsDomainPointer = true; + + int newDomainID = ServerController.AddDomain(newDomain, domain.IsInstantAlias, false); + if (newDomainID > 0) + { + newDomain = ServerController.GetDomain(newDomainID); + if (newDomain != null) + { + newDomain.WebSiteId = siteId; + newDomain.ZoneItemId = domain.ZoneItemId; + newDomain.DomainItemId = domain.DomainId; + ServerController.UpdateDomain(newDomain); + } + } + } + } + } + + return 0; + } + + private static bool DoesHeaderExistInDomains(string header, List domains) + { + bool bExist = false; + + if (!string.IsNullOrEmpty(header)) + { + foreach (DomainInfo d in domains) + { + if ((header == d.DomainName.ToLower()) && + (d.IsDomainPointer)) + { + bExist = true; + break; + } + } + } + return bExist; + } + + + private static int FindDomainForHeader(string header, List domains) + { + int domainId = 0; + int counter = 0; + while ((header.IndexOf(".") != -1) & (counter < 2)) + { + + foreach (DomainInfo d in domains) + { + if ((header == d.DomainName.ToLower()) && (!d.IsDomainPointer)) + { + return d.DomainId; + } + } + + header = header.Substring(header.IndexOf(".") + 1); + counter++; + + } + + return domainId; + } + + + #endregion #region IBackupController Members @@ -3525,6 +4020,10 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and long ticks = DateTime.UtcNow.Ticks - DateTime.Parse("01/01/1970 00:00:00").Ticks; ticks /= 10000000; // Convert windows ticks to seconds + //clean up bindings + + + certificate.FriendlyName = String.Format("{0}_{1}", certificate.Hostname, ticks.ToString()); certificate = server.generateCSR(certificate); certificate.id = DataProvider.AddSSLRequest(SecurityContext.User.UserId, item.PackageId, @@ -3561,12 +4060,19 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and WebServer server = GetWebServer(item.ServiceId); TaskManager.WriteParameter("item.ServiceId", item.ServiceId); + IPAddressInfo ip = ServerController.GetIPAddress(item.SiteIPAddressId); + + if (ip != null) + item.SiteIPAddress = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; + certificate = server.installCertificate(certificate, item); if (certificate.SerialNumber == null) { result.AddError("Error_Installing_certificate", null); result.IsSuccess = false; } + + DataProvider.CompleteSSLRequest(SecurityContext.User.UserId, item.PackageId, certificate.id, certificate.Certificate, certificate.DistinguishedName, certificate.SerialNumber, @@ -3604,6 +4110,11 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and WebServer server = GetWebServer(item.ServiceId); TaskManager.WriteParameter("item.ServiceId", item.ServiceId); + // remove all web site pointers + List pointers = GetWebSitePointers(siteItemId); + foreach (DomainInfo pointer in pointers) + DeleteWebSitePointer(siteItemId, pointer.DomainId, true, true, true); + SSLCertificate certificate = server.installPFX(pfx, password, item); if (certificate.SerialNumber == null) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Default.aspx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Default.aspx.cs index 6b51871f..7c71d343 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Default.aspx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Default.aspx.cs @@ -49,9 +49,9 @@ namespace WebsitePanel.EnterpriseServer litUrl.Text = url.Substring(0, url.LastIndexOf("/")); // set version - object[] attrs = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), true); + object[] attrs = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true); if (attrs.Length > 0) - litVersion.Text = ((AssemblyInformationalVersionAttribute)attrs[0]).InformationalVersion; + litVersion.Text = ((AssemblyFileVersionAttribute)attrs[0]).Version; imgLogo.ImageUrl = Page.ClientScript.GetWebResourceUrl( typeof(DefaultPage), "WebsitePanel.EnterpriseServer.Images.logo.png"); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png index 45f7ad78..003b659c 100644 Binary files a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png and b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index ba1ad41e..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,7 +5,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj index 52285130..8ba3e5cb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj @@ -19,6 +19,7 @@ v4.0 + false true @@ -410,6 +411,9 @@ + + Designer + @@ -430,7 +434,7 @@ - True + False False 9002 / diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs index 9996fb3d..8006be54 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs @@ -59,7 +59,7 @@ namespace WebsitePanel.EnterpriseServer [WebMethod] public LyncUsersPagedResult GetLyncUsersPaged(int itemId, string sortColumn, string sortDirection, int startRow, int maximumRows) { - return LyncController.GetLyncUsers(itemId, sortColumn, sortDirection, startRow, maximumRows); + return LyncController.GetLyncUsersPaged(itemId, sortColumn, sortDirection, startRow, maximumRows); } [WebMethod] @@ -119,6 +119,13 @@ namespace WebsitePanel.EnterpriseServer return LyncController.GetLyncUserGeneralSettings(itemId, accountId); } + [WebMethod] + public LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) + { + return LyncController.SetLyncUserGeneralSettings(itemId, accountId, sipAddress, lineUri); + } + + [WebMethod] public LyncUserResult SetUserLyncPlan(int itemId, int accountId, int lyncUserPlanId) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs index 9cd223ce..cc4a6b85 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs @@ -46,9 +46,9 @@ namespace WebsitePanel.EnterpriseServer #region Organizations [WebMethod] - public int CreateOrganization(int packageId, string organizationID, string organizationName) + public int CreateOrganization(int packageId, string organizationID, string organizationName, string domainName) { - return OrganizationController.CreateOrganization(packageId, organizationID, organizationName); + return OrganizationController.CreateOrganization(packageId, organizationID, organizationName, domainName); } @@ -122,6 +122,12 @@ namespace WebsitePanel.EnterpriseServer return OrganizationController.AddOrganizationDomain(itemId, domainName); } + [WebMethod] + public int ChangeOrganizationDomainType(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType) + { + return OrganizationController.ChangeOrganizationDomainType(itemId, domainId, newDomainType); + } + [WebMethod] public List GetOrganizationDomains(int itemId) { @@ -189,6 +195,22 @@ namespace WebsitePanel.EnterpriseServer } + [WebMethod] + public int SetUserPrincipalName(int itemId, int accountId, string userPrincipalName, bool inherit) + { + return OrganizationController.SetUserPrincipalName(itemId, accountId, userPrincipalName, + inherit); + } + + + [WebMethod] + public int SetUserPassword(int itemId, int accountId, string password) + { + return OrganizationController.SetUserPassword(itemId, accountId, password); + } + + + [WebMethod] public List SearchAccounts(int itemId, string filterColumn, string filterValue, string sortColumn, bool includeMailboxes) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esServers.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esServers.asmx.cs index e6b8aedf..c9f4a3b2 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esServers.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esServers.asmx.cs @@ -518,6 +518,12 @@ namespace WebsitePanel.EnterpriseServer return ServerController.GetDomains(packageId); } + [WebMethod] + public List GetDomainsByDomainId(int domainId) + { + return ServerController.GetDomainsByDomainItemId(domainId); + } + [WebMethod] public List GetMyDomains(int packageId) { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs index 3c460dbb..99703719 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs @@ -105,7 +105,8 @@ namespace WebsitePanel.Providers.HostedSolution { foreach (DirectoryEntry child in entry.Children) { - entry.Children.Remove(child); + //entry.Children.Remove(child); + child.DeleteTree(); } entry.CommitChanges(); } @@ -113,7 +114,8 @@ namespace WebsitePanel.Providers.HostedSolution DirectoryEntry parent = entry.Parent; if (parent != null) { - parent.Children.Remove(entry); + //parent.Children.Remove(entry); + entry.DeleteTree(); parent.CommitChanges(); } } @@ -159,6 +161,14 @@ namespace WebsitePanel.Providers.HostedSolution collection.Value = value; } + public static void SetADObjectPropertyValue(DirectoryEntry oDE, string name, string[] values) + { + PropertyValueCollection collection = oDE.Properties[name]; + collection.Value = values; + } + + + public static void SetADObjectPropertyValue(DirectoryEntry oDE, string name, Guid value) { PropertyValueCollection collection = oDE.Properties[name]; @@ -177,6 +187,19 @@ namespace WebsitePanel.Providers.HostedSolution return entry.Properties.Contains(name) ? entry.Properties[name][0] : null; } + public static string[] GetADObjectPropertyMultiValue(DirectoryEntry entry, string name) + { + if (!entry.Properties.Contains(name)) + return null; + + List returnList = new List(); + for (int i = 0; i < entry.Properties[name].Count; i++) + returnList.Add(entry.Properties[name][i].ToString()); + + return returnList.ToArray(); + } + + public static string GetADObjectStringProperty(DirectoryEntry entry, string name) { object ret = GetADObjectProperty(entry, name); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/EnterpriseSolutionStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/EnterpriseSolutionStatisticsReport.cs index 707c0531..f69dd959 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/EnterpriseSolutionStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/EnterpriseSolutionStatisticsReport.cs @@ -34,6 +34,6 @@ public SharePointStatisticsReport SharePointReport { get; set; } public CRMStatisticsReport CRMReport { get; set; } public OrganizationStatisticsReport OrganizationReport { get; set; } - + public LyncStatisticsReport LyncReport { get; set; } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAcceptedDomainType.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAcceptedDomainType.cs new file mode 100644 index 00000000..2d6e897e --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAcceptedDomainType.cs @@ -0,0 +1,37 @@ +// 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. + +namespace WebsitePanel.Providers.HostedSolution + { + public enum ExchangeAcceptedDomainType + { + Authoritative = 0, + InternalRelay = 1, + ExternalRelay = 2 + } + } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAccount.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAccount.cs index 36fbfdde..c3299d67 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAccount.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAccount.cs @@ -49,6 +49,7 @@ namespace WebsitePanel.Providers.HostedSolution int mailboxPlanId; string mailboxPlan; string publicFolderPermission; + string userPrincipalName; public int AccountId { @@ -142,5 +143,11 @@ namespace WebsitePanel.Providers.HostedSolution } + public string UserPrincipalName + { + get { return this.userPrincipalName; } + set { this.userPrincipalName = value; } + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeEmailAddress.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeEmailAddress.cs index 0db794cd..c16d9d09 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeEmailAddress.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeEmailAddress.cs @@ -58,5 +58,7 @@ namespace WebsitePanel.Providers.HostedSolution get { return primary; } set { primary = value; } } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxStatistics.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxStatistics.cs index 7583893e..7b408e10 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxStatistics.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeMailboxStatistics.cs @@ -50,5 +50,6 @@ namespace WebsitePanel.Providers.HostedSolution public bool Enabled { get; set; } public ExchangeAccountType MailboxType { get; set; } public bool BlackberryEnabled { get; set; } + public string MailboxPlan { get; set; } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeOrganization.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeOrganization.cs new file mode 100644 index 00000000..c697fec4 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeOrganization.cs @@ -0,0 +1,62 @@ +// 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 ExchangeOrganization + { + int itemId; + int exchangeMailboxPlanID; + int lyncUserPlanID; + + + public int ItemId + { + get { return this.itemId; } + set { this.itemId = value; } + } + + + public int ExchangeMailboxPlanID + { + get { return this.exchangeMailboxPlanID; } + set { this.exchangeMailboxPlanID = value; } + } + + public int LyncUserPlanID + { + get { return this.lyncUserPlanID; } + set { this.lyncUserPlanID = value; } + } + + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeStatisticsReport.cs index 7366c029..111dbae4 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeStatisticsReport.cs @@ -67,6 +67,7 @@ namespace WebsitePanel.Providers.HostedSolution sb.AppendFormat("{0},", ToCsvString(item.Enabled, "Enabled", "Disabled")); sb.AppendFormat("{0},", ToCsvString(item.MailboxType)); sb.AppendFormat("{0}", ToCsvString(item.BlackberryEnabled)); + sb.AppendFormat("{0}", ToCsvString(item.MailboxPlan)); mainBuilder.Append(sb.ToString()); } return mainBuilder.ToString(); @@ -74,7 +75,7 @@ namespace WebsitePanel.Providers.HostedSolution private void AddCSVHeader(StringBuilder sb) { - sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Ogranization Created,Organization ID,Mailbox Display Name,Account Created,Primary E-mail Address,MAPI,OWA,ActiveSync,POP 3,IMAP,Mailbox Size (Mb),Max Mailbox Size (Mb),Last Logon,Enabled,Mailbox Type, BlackBerry"); + sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Organization Created,Organization ID,Mailbox Display Name,Account Created,Primary E-mail Address,MAPI,OWA,ActiveSync,POP 3,IMAP,Mailbox Size (Mb),Max Mailbox Size (Mb),Last Logon,Enabled,Mailbox Type, BlackBerry, Mailbox Plan"); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IExchangeServer.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IExchangeServer.cs index 72fdcafd..dbbefc58 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IExchangeServer.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IExchangeServer.cs @@ -53,6 +53,7 @@ namespace WebsitePanel.Providers.HostedSolution // Domains void AddAuthoritativeDomain(string domain); void DeleteAuthoritativeDomain(string domain); + void ChangeAcceptedDomainType(string domain, ExchangeAcceptedDomainType domainType); string[] GetAuthoritativeDomains(); // Mailboxes diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ILyncServer.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ILyncServer.cs index ef1047a0..16d7e005 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ILyncServer.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ILyncServer.cs @@ -39,6 +39,7 @@ namespace WebsitePanel.Providers.HostedSolution bool CreateUser(string organizationId, string userUpn, LyncUserPlan plan); LyncUser GetLyncUserGeneralSettings(string organizationId, string userUpn); + bool SetLyncUserGeneralSettings(string organizationId, string userUpn, LyncUser lyncUser); bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan); bool DeleteUser(string userUpn); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IOrganization.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IOrganization.cs index 15846f9c..e3ce875d 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IOrganization.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IOrganization.cs @@ -51,6 +51,10 @@ namespace WebsitePanel.Providers.HostedSolution string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string webPage, string notes, string externalEmail); + void SetUserPassword(string organizationId, string accountName, string password); + + void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName); + bool OrganizationExists(string organizationId); void DeleteOrganizationDomain(string organizationDistinguishedName, string domain); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncErrorCodes.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncErrorCodes.cs index 15cfbae8..4f792ea3 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncErrorCodes.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncErrorCodes.cs @@ -70,5 +70,8 @@ public const string CANNOT_REMOVE_LYNC_FEDERATIONDOMAIN = "CANNOT_REMOVE_LYNC_FEDERATIONDOMAIN"; + public const string FAILED_SET_SETTINGS = "FAILED_SET_SETTINGS"; + + public const string ADDRESS_ALREADY_USED = "ADDRESS_ALREADY_USED"; } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncOrganizationStatistics.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncOrganizationStatistics.cs new file mode 100644 index 00000000..9b747767 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncOrganizationStatistics.cs @@ -0,0 +1,72 @@ +// 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.Linq; +using System.Text; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class LyncOrganizationStatistics + { + private int allocatedLyncUsers; + private int createdLyncUsers; + + private int allocatedLyncEVUsers; + private int createdLyncEVUsers; + + + public int AllocatedLyncUsers + { + get { return this.allocatedLyncUsers; } + set { this.allocatedLyncUsers = value; } + } + + public int CreatedLyncUsers + { + get { return this.createdLyncUsers; } + set { this.createdLyncUsers = value; } + } + + + public int AllocatedLyncEVUsers + { + get { return this.allocatedLyncEVUsers; } + set { this.allocatedLyncEVUsers = value; } + } + + public int CreatedLyncEVUsers + { + get { return this.createdLyncEVUsers; } + set { this.createdLyncEVUsers = value; } + } + + + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs new file mode 100644 index 00000000..104cb4a5 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs @@ -0,0 +1,77 @@ +// 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.Text; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class LyncStatisticsReport : BaseReport + { + public override string ToCSV() + { + StringBuilder mainBuilder = new StringBuilder(); + StringBuilder sb = null; + AddCSVHeader(mainBuilder); + foreach (LyncUserStatistics item in Items) + { + sb = new StringBuilder(); + sb.Append("\n"); + sb.AppendFormat("{0},", ToCsvString(item.TopResellerName)); + sb.AppendFormat("{0},", ToCsvString(item.ResellerName)); + sb.AppendFormat("{0},", ToCsvString(item.CustomerName)); + sb.AppendFormat("{0},", ToCsvString(item.CustomerCreated)); + sb.AppendFormat("{0},", ToCsvString(item.HostingSpace)); + sb.AppendFormat("{0},", ToCsvString(item.HostingSpaceCreated)); + sb.AppendFormat("{0},", ToCsvString(item.OrganizationName)); + sb.AppendFormat("{0},", ToCsvString(item.OrganizationCreated)); + sb.AppendFormat("{0},", ToCsvString(item.OrganizationID)); + + sb.AppendFormat("{0},", ToCsvString(item.DisplayName)); + + sb.AppendFormat("{0},", ToCsvString(item.SipAddress)); + sb.AppendFormat("{0},", ToCsvString(item.PhoneNumber)); + sb.AppendFormat("{0},", ToCsvString(item.Conferencing)); + sb.AppendFormat("{0},", ToCsvString(item.EnterpriseVoice)); + sb.AppendFormat("{0},", ToCsvString(item.Federation)); + sb.AppendFormat("{0},", ToCsvString(item.InstantMessaing)); + sb.AppendFormat("{0},", ToCsvString(item.MobileAccess)); + sb.AppendFormat("{0},", ToCsvString(item.LyncUserPlan)); + + mainBuilder.Append(sb.ToString()); + } + + return mainBuilder.ToString(); + + } + + private static void AddCSVHeader(StringBuilder sb) + { + sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Organization Created,Organization ID,Display Name,SipAddress,PhoneNumber,Conferencing,EnterpriseVoice,Federation,InstantMessaging,MobileAccess"); + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUser.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUser.cs index 1a4dd851..e95a9436 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUser.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUser.cs @@ -34,8 +34,8 @@ namespace WebsitePanel.Providers.HostedSolution { public class LyncUser { - public string PrimaryUri { get; set; } - public string PrimaryEmailAddress { get; set; } + public string SipAddress { get; set; } + public string UserPrincipalName { get; set; } public string DisplayName { get; set; } public string LineUri { get; set; } public int AccountID { get; set; } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUserStatistics.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUserStatistics.cs new file mode 100644 index 00000000..2604f3b7 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUserStatistics.cs @@ -0,0 +1,49 @@ +// 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 LyncUserStatistics : BaseStatistics + { + public string DisplayName { get; set; } + public DateTime AccountCreated { get; set; } + public string SipAddress { get; set; } + public bool InstantMessaing{ get; set; } + public bool MobileAccess { get; set; } + public bool Federation { get; set; } + public bool Conferencing { get; set; } + public bool EnterpriseVoice { get; set; } + public string EVPolicy { get; set; } + public string PhoneNumber { get; set; } + public string LyncUserPlan { get; set; } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationDomainName.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationDomainName.cs index 68587c08..323e7d48 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationDomainName.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationDomainName.cs @@ -26,6 +26,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +using System; namespace WebsitePanel.Providers.HostedSolution { public class OrganizationDomainName @@ -33,6 +34,7 @@ namespace WebsitePanel.Providers.HostedSolution int organizationDomainId; int itemId; int domainId; + int domainTypeId; string domainName; bool isHost; bool isDefault; @@ -55,6 +57,21 @@ namespace WebsitePanel.Providers.HostedSolution set { domainId = value; } } + public int DomainTypeId + { + get { return domainTypeId; } + set { domainTypeId = value; } + } + + public ExchangeAcceptedDomainType DomainType + { + get + { + ExchangeAcceptedDomainType type = (ExchangeAcceptedDomainType)domainTypeId; + return type; + } + } + public int OrganizationDomainId { get { return organizationDomainId; } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs index 3d94d8be..c9f85f26 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs @@ -56,7 +56,9 @@ namespace WebsitePanel.Providers.HostedSolution sb.AppendFormat("{0},", ToCsvString(item.TotalPublicFoldersSize / 1024.0 / 1024.0)); sb.AppendFormat("{0},", ToCsvString(item.TotalSharePointSiteCollections)); sb.AppendFormat("{0},", ToCsvString(item.TotalSharePointSiteCollectionsSize / 1024.0 / 1024.0)); - sb.AppendFormat("{0}", ToCsvString(item.TotalCRMUsers)); + sb.AppendFormat("{0},", ToCsvString(item.TotalCRMUsers)); + sb.AppendFormat("{0},", ToCsvString(item.TotalLyncUsers)); + sb.AppendFormat("{0}", ToCsvString(item.TotalLyncEVUsers)); mainBuilder.Append(sb.ToString()); } @@ -65,7 +67,7 @@ namespace WebsitePanel.Providers.HostedSolution private static void AddCSVHeader(StringBuilder sb) { - sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Ogranization Created,Organization ID,Total mailboxes,Total mailboxes size(Mb),Total Public Folders size(Mb),Total SharePoint site collections,Total SharePoint site collections size(Mb),Total CRM users"); + sb.Append("Top Reseller,Reseller,Customer,Customer Created,Hosting Space,Hosting Space Created,Ogranization Name,Ogranization Created,Organization ID,Total mailboxes,Total mailboxes size(Mb),Total Public Folders size(Mb),Total SharePoint site collections,Total SharePoint site collections size(Mb),Total CRM users,Total Lync users,Total Lync EV users"); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsRepotItem.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsRepotItem.cs index d7009b80..b240c79f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsRepotItem.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsRepotItem.cs @@ -66,5 +66,18 @@ set; } + public int TotalLyncUsers + { + get; + set; + } + + public int TotalLyncEVUsers + { + get; + set; + } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationUser.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationUser.cs index d3e2b62c..4502328f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationUser.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationUser.cs @@ -64,6 +64,7 @@ namespace WebsitePanel.Providers.HostedSolution private string country; private string notes; private string domainUserName; + private string userPrincipalName; private bool disabled; private bool locked; @@ -305,6 +306,11 @@ namespace WebsitePanel.Providers.HostedSolution set { subscriberNumber = value; } } + public string UserPrincipalName + { + get { return userPrincipalName; } + set { userPrincipalName = value; } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs index e32a8d27..03a8ee48 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs @@ -51,7 +51,7 @@ namespace WebsitePanel.Providers.Web ServerBinding[] GetSiteBindings(string siteId); string CreateSite(WebSite site); void UpdateSite(WebSite site); - void UpdateSiteBindings(string siteId, ServerBinding[] bindings); + void UpdateSiteBindings(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed); void DeleteSite(string siteId); // virtual directories diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebSite.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebSite.cs index e80b2f1a..f55588ea 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebSite.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebSite.cs @@ -47,6 +47,7 @@ namespace WebsitePanel.Providers.Web private string siteId; private string siteIPAddress; private int siteIPAddressId; + private bool isDedicatedIP; private string dataPath; private ServerBinding[] bindings; private bool frontPageAvailable; @@ -85,6 +86,12 @@ namespace WebsitePanel.Providers.Web set { siteIPAddressId = value; } } + public bool IsDedicatedIP + { + get { return isDedicatedIP; } + set { isDedicatedIP = value; } + } + /// /// Gets or sets logs path for the web site /// diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryApplication.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryApplication.cs index 882b4c2e..2abfd556 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryApplication.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryApplication.cs @@ -238,6 +238,7 @@ namespace WebsitePanel.Providers.WebAppGallery NotDownloaded, Downloaded, Downloading, + UnauthorizedAccessException, Failed } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index 3fed47eb..f65c7c25 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -80,12 +80,17 @@ + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs index d654e515..1f94a189 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs @@ -1,4 +1,4 @@ -// Copyright (c) 2012, Outercurve Foundation. +// Copyright (c) 2012, Outercurve Foundation. // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, @@ -99,7 +99,9 @@ namespace WebsitePanel.Providers.DNS { DnsRecordType.MX, new BuildDnsRecordDataEventHandler(BuildRecordData_MXRecord) }, // TXT { DnsRecordType.TXT, new BuildDnsRecordDataEventHandler(BuildRecordData_TXTRecord) }, - }; + // SRV + { DnsRecordType.SRV, new BuildDnsRecordDataEventHandler(BuildRecordData_SRVRecord) }, + }; #endregion public const int SOA_PRIMARY_NAME_SERVER = 0; @@ -135,67 +137,79 @@ namespace WebsitePanel.Providers.DNS return zoneName; } - protected DnsRecord ConvertToNative(DNSRecord record, string zoneName) - { - string recordName = ConvertRecordNameToInternalFormat(record.Name, zoneName); - // - DnsRecord dnsRecord = null; - switch (record.Type) - { - case "A": - dnsRecord = new DnsRecord - { - RecordName = recordName, - RecordType = DnsRecordType.A, - RecordData = record.DataFields[0] - }; - break; - case "AAAA": - dnsRecord = new DnsRecord { - RecordName = recordName, - RecordType = DnsRecordType.AAAA, - RecordData = record.DataFields[0] - }; - break; - case "NS": - dnsRecord = new DnsRecord - { - RecordName = recordName, - RecordType = DnsRecordType.NS, - RecordData = record.DataFields[0] - }; - break; - case "CNAME": - dnsRecord = new DnsRecord - { - RecordName = recordName, - RecordType = DnsRecordType.CNAME, - RecordData = record.DataFields[0] - }; - break; - case "MX": - dnsRecord = new DnsRecord - { - RecordName = recordName, - RecordType = DnsRecordType.MX, - MxPriority = Convert.ToInt32(record.DataFields[MX_RECORD_PRIORITY]), - RecordData = record.DataFields[MX_RECORD_NAMESERVER] - }; - break; - case "TXT": - dnsRecord = new DnsRecord - { - RecordName = recordName, - RecordType = DnsRecordType.TXT, - RecordData = record.DataFields[0] - }; - break; - } - // - return dnsRecord; - } - - /// + protected DnsRecord ConvertToNative(DNSRecord record, string zoneName) + { + string recordName = ConvertRecordNameToInternalFormat(record.Name, zoneName); + // + DnsRecord dnsRecord = null; + switch (record.Type) + { + case "A": + dnsRecord = new DnsRecord + { + RecordName = recordName, + RecordType = DnsRecordType.A, + RecordData = record.DataFields[0] + }; + break; + case "AAAA": + dnsRecord = new DnsRecord + { + RecordName = recordName, + RecordType = DnsRecordType.AAAA, + RecordData = record.DataFields[0] + }; + break; + case "NS": + dnsRecord = new DnsRecord + { + RecordName = recordName, + RecordType = DnsRecordType.NS, + RecordData = record.DataFields[0] + }; + break; + case "CNAME": + dnsRecord = new DnsRecord + { + RecordName = recordName, + RecordType = DnsRecordType.CNAME, + RecordData = record.DataFields[0] + }; + break; + case "MX": + dnsRecord = new DnsRecord + { + RecordName = recordName, + RecordType = DnsRecordType.MX, + MxPriority = Convert.ToInt32(record.DataFields[MX_RECORD_PRIORITY]), + RecordData = record.DataFields[MX_RECORD_NAMESERVER] + }; + break; + case "TXT": + dnsRecord = new DnsRecord + { + RecordName = recordName, + RecordType = DnsRecordType.TXT, + RecordData = record.DataFields[0] + }; + break; + case "SRV": + dnsRecord = new DnsRecord + { + RecordName = recordName, + RecordType = DnsRecordType.SRV, + RecordData = record.DataFields[3], + SrvPriority = Convert.ToInt32(record.DataFields[0]), + SrvWeight = Convert.ToInt32(record.DataFields[1]), + SrvPort = Convert.ToInt32(record.DataFields[2]) + }; + break; + } + // + return dnsRecord; + } + + /// /// Setups connection with the Simple DNS instance /// /// @@ -663,6 +677,15 @@ namespace WebsitePanel.Providers.DNS data.Add(record.RecordData); } + static void BuildRecordData_SRVRecord(string zoneName, ref string type, DnsRecord record, List data) + { + type = "SRV"; + data.Add(Convert.ToString(record.SrvPriority)); + data.Add(Convert.ToString(record.SrvWeight)); + data.Add(Convert.ToString(record.SrvPort)); + data.Add(record.RecordData); + } + #endregion new static string BuildRecordData(string zoneName, string host, string recordData) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/MsFTP80.cs b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/MsFTP80.cs index 1fbffbd8..910f18c1 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/MsFTP80.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/MsFTP80.cs @@ -1,4 +1,32 @@ -using Microsoft.Win32; +// 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 Microsoft.Win32; using System; using System.Collections.Generic; using System.Linq; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/Properties/AssemblyInfo.cs index 8ae894a1..5bb54eef 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/Properties/AssemblyInfo.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/Properties/AssemblyInfo.cs @@ -1,4 +1,32 @@ -using System.Reflection; +// 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.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index ba51c9ce..f972983b 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs @@ -230,6 +230,11 @@ namespace WebsitePanel.Providers.HostedSolution { DeleteAuthoritativeDomainInternal(domain); } + + public void ChangeAcceptedDomainType(string domainName, ExchangeAcceptedDomainType domainType) + { + ChangeAcceptedDomainTypeInternal(domainName, domainType); + } #endregion #region Mailboxes @@ -1374,30 +1379,37 @@ namespace WebsitePanel.Providers.HostedSolution long size = 0; - Command cmd = new Command("Get-PublicFolderStatistics"); - cmd.Parameters.Add("Identity", folder); - if (!string.IsNullOrEmpty(PublicFolderServer)) - cmd.Parameters.Add("Server", PublicFolderServer); + Command cmd = new Command("Get-PublicFolderDatabase"); Collection result = ExecuteShellCommand(runSpace, cmd); - if (result != null && result.Count > 0) - { - PSObject obj = result[0]; - Unlimited totalItemSize = - (Unlimited)GetPSObjectProperty(obj, "TotalItemSize"); - size += ConvertUnlimitedToBytes(totalItemSize); - } + if (result != null && result.Count > 0) + { + cmd = new Command("Get-PublicFolderStatistics"); + cmd.Parameters.Add("Identity", folder); + if (!string.IsNullOrEmpty(PublicFolderServer)) + cmd.Parameters.Add("Server", PublicFolderServer); + result = ExecuteShellCommand(runSpace, cmd); + if (result != null && result.Count > 0) + { + PSObject obj = result[0]; + Unlimited totalItemSize = + (Unlimited)GetPSObjectProperty(obj, "TotalItemSize"); + size += ConvertUnlimitedToBytes(totalItemSize); + } - cmd = new Command("Get-PublicFolder"); - cmd.Parameters.Add("Identity", folder); - cmd.Parameters.Add("GetChildren", new SwitchParameter(true)); - if (!string.IsNullOrEmpty(PublicFolderServer)) - cmd.Parameters.Add("Server", PublicFolderServer); - result = ExecuteShellCommand(runSpace, cmd); - foreach (PSObject obj in result) - { - string id = ObjToString(GetPSObjectProperty(obj, "Identity")); - size += CalculatePublicFolderDiskSpace(runSpace, id); - } + cmd = new Command("Get-PublicFolder"); + cmd.Parameters.Add("Identity", folder); + cmd.Parameters.Add("GetChildren", new SwitchParameter(true)); + if (!string.IsNullOrEmpty(PublicFolderServer)) + cmd.Parameters.Add("Server", PublicFolderServer); + result = ExecuteShellCommand(runSpace, cmd); + foreach (PSObject obj in result) + { + string id = ObjToString(GetPSObjectProperty(obj, "Identity")); + size += CalculatePublicFolderDiskSpace(runSpace, id); + } + } + else + size = 0; ExchangeLog.LogEnd("CalculatePublicFolderDiskSpace"); return size; } @@ -2579,8 +2591,8 @@ namespace WebsitePanel.Providers.HostedSolution Command cmd = new Command("Set-Mailbox"); cmd.Parameters.Add("Identity", accountName); cmd.Parameters.Add("PrimarySmtpAddress", primaryEmail); - cmd.Parameters.Add("UserPrincipalName", primaryEmail); - cmd.Parameters.Add("WindowsEmailAddress", primaryEmail); + //cmd.Parameters.Add("UserPrincipalName", primaryEmail); + //cmd.Parameters.Add("WindowsEmailAddress", primaryEmail); ExecuteShellCommand(runSpace, cmd); } @@ -5954,6 +5966,31 @@ namespace WebsitePanel.Providers.HostedSolution ExchangeLog.LogEnd("CreateAuthoritativeDomainInternal"); } + private void ChangeAcceptedDomainTypeInternal(string domainName, ExchangeAcceptedDomainType domainType) + { + ExchangeLog.LogStart("ChangeAcceptedDomainType"); + + Runspace runSpace = null; + try + { + runSpace = OpenRunspace(); + + SetAcceptedDomainType(runSpace, domainName,domainType); + } + catch (Exception ex) + { + ExchangeLog.LogError("ChangeAcceptedDomainType", ex); + throw; + } + finally + { + + CloseRunspace(runSpace); + } + + ExchangeLog.LogEnd("ChangeAcceptedDomainType"); + } + private void DeleteAcceptedDomain(string domainName) { ExchangeLog.LogStart("DeleteAcceptedDomain"); @@ -6018,6 +6055,17 @@ namespace WebsitePanel.Providers.HostedSolution ExchangeLog.LogEnd("RemoveAcceptedDomain"); } + private void SetAcceptedDomainType(Runspace runSpace, string id, ExchangeAcceptedDomainType domainType) + { + ExchangeLog.LogStart("SetAcceptedDomainType"); + Command cmd = new Command("Set-AcceptedDomain"); + cmd.Parameters.Add("Identity", id); + cmd.Parameters.Add("DomainType", domainType.ToString()); + cmd.Parameters.Add("Confirm", false); + ExecuteShellCommand(runSpace, cmd); + ExchangeLog.LogEnd("SetAcceptedDomainType"); + } + #endregion #region ActiveSync diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2010SP2.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2010SP2.cs index 65d4dabf..230ac187 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2010SP2.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2010SP2.cs @@ -607,15 +607,42 @@ namespace WebsitePanel.Providers.HostedSolution ExchangeLog.LogStart("GetDatabase"); ExchangeLog.LogInfo("DAG: " + dagName); - //Get Dag Servers + // this part of code handles mailboxnames like in the old 2007 provider + // check if DAG is in reality DAG\mailboxdatabase + string dagNameDAG = string.Empty; + string dagNameMBX = string.Empty; + bool isFixedDatabase = false; + if (dagName.Contains("\\")) + { + // split the two parts and extract DAG-Name and mailboxdatabase-name + string[] parts = dagName.Split(new char[] { '\\' }, 2, StringSplitOptions.None); + dagNameDAG = parts[0]; + dagNameMBX = parts[1]; + // check that we realy have a database name + if (!String.IsNullOrEmpty(dagNameMBX)) + { + isFixedDatabase = true; + } + } + else + { + // there is no mailboxdatabase-name use the loadbalancing-code + dagNameDAG = dagName; + isFixedDatabase = false; + } + + //Get Dag Servers - with the name of the database availability group Collection dags = null; Command cmd = new Command("Get-DatabaseAvailabilityGroup"); - cmd.Parameters.Add("Identity", dagName); + cmd.Parameters.Add("Identity", dagNameDAG); dags = ExecuteShellCommand(runSpace, cmd); if (htBbalancer == null) htBbalancer = new Hashtable(); + // use fully qualified dagName for loadbalancer. Thus if there are two services and one of them + // contains only the DAG, the "fixed" database could also be used in loadbalancing. If you do not want this, + // set either IsExcludedFromProvisioning or IsSuspendedFromProvisioning - it is not evaluated for fixed databases if (htBbalancer[dagName] == null) htBbalancer.Add(dagName, 0); @@ -628,35 +655,56 @@ namespace WebsitePanel.Providers.HostedSolution { System.Collections.Generic.List lstDatabase = new System.Collections.Generic.List(); - foreach (object objServer in servers) + if (!isFixedDatabase) // "old" loadbalancing code + { + foreach (object objServer in servers) + { + Collection 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); + } + } + } + } + } + else // new fixed database code { Collection databases = null; cmd = new Command("Get-MailboxDatabase"); - cmd.Parameters.Add("Server", ObjToString(objServer)); + cmd.Parameters.Add("Identity", dagNameMBX); databases = ExecuteShellCommand(runSpace, cmd); + // do not check "IsExcludedFromProvisioning" or "IsSuspended", just check if it is a member of the DAG foreach (PSObject objDatabase in databases) { - if (((bool)GetPSObjectProperty(objDatabase, "IsExcludedFromProvisioning") == false) && - ((bool)GetPSObjectProperty(objDatabase, "IsSuspendedFromProvisioning") == false)) + string dagSetting = ObjToString(GetPSObjectProperty(objDatabase, "MasterServerOrAvailabilityGroup")); + if (dagNameDAG.Equals(dagSetting, StringComparison.OrdinalIgnoreCase)) { - 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); - } + lstDatabase.Add(dagNameMBX); + ExchangeLog.LogInfo("AddFixedDatabase: " + dagNameMBX); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs index 21887292..be5e9397 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs @@ -127,6 +127,12 @@ namespace WebsitePanel.Providers.HostedSolution return GetLyncUserGeneralSettingsInternal(organizationId, userUpn); } + public bool SetLyncUserGeneralSettings(string organizationId, string userUpn, LyncUser lyncUser) + { + return SetLyncUserGeneralSettingsInternal(organizationId, userUpn, lyncUser); + } + + public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan) { return SetLyncUserPlanInternal(organizationId, userUpn, plan, null); @@ -162,6 +168,7 @@ namespace WebsitePanel.Providers.HostedSolution #region organization private string CreateOrganizationInternal(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice) { + sipDomain = sipDomain.ToLower(); HostedSolutionLog.LogStart("CreateOrganizationInternal"); HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId); HostedSolutionLog.DebugInfo("sipDomain: {0}", sipDomain); @@ -199,7 +206,8 @@ namespace WebsitePanel.Providers.HostedSolution //create conferencing policy cmd = new Command("New-CsConferencingPolicy"); cmd.Parameters.Add("Identity", organizationId); - cmd.Parameters.Add("MaxMeetingSize", maxConferenceSize); + + cmd.Parameters.Add("MaxMeetingSize", ((maxConferenceSize == -1) | (maxConferenceSize > 250)) ? 250 : maxConferenceSize); cmd.Parameters.Add("AllowIPVideo", enableConferencingVideo); ExecuteShellCommand(runSpace, cmd, false); transaction.RegisterNewConferencingPolicy(organizationId); @@ -286,11 +294,14 @@ namespace WebsitePanel.Providers.HostedSolution Guid tenantId = (Guid)GetPSObjectProperty(result[0], "TenantId"); // create sip domain - DeleteSipDomain(runSpace, sipDomain); - - //clear the msRTCSIP-Domains, TenantID, ObjectID string path = AddADPrefix(GetOrganizationPath(organizationId)); DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path); + string[] sipDs = (string[])ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "msRTCSIP-Domains"); + + foreach (string sipD in sipDs) + DeleteSipDomain(runSpace, sipD); + + //clear the msRTCSIP-Domains, TenantID, ObjectID ActiveDirectoryUtils.ClearADObjectPropertyValue(ou, "msRTCSIP-Domains"); ActiveDirectoryUtils.ClearADObjectPropertyValue(ou, "msRTCSIP-TenantId"); ActiveDirectoryUtils.ClearADObjectPropertyValue(ou, "msRTCSIP-ObjectId"); @@ -381,6 +392,51 @@ namespace WebsitePanel.Providers.HostedSolution { tenantId = (Guid)GetPSObjectProperty(result[0], "TenantId"); + string[] tmp = userUpn.Split('@'); + if (tmp.Length < 2) return false; + + // Get SipDomains and verify existence + bool bSipDomainExists = false; + cmd = new Command("Get-CsSipDomain"); + Collection sipDomains = ExecuteShellCommand(runSpace, cmd, false); + + foreach (PSObject domain in sipDomains) + { + string d = (string)GetPSObjectProperty(domain, "Name"); + if (d.ToLower() == tmp[1].ToLower()) + { + bSipDomainExists = true; + break; + } + } + + string path = string.Empty; + + if (!bSipDomainExists) + { + // Create Sip Domain + cmd = new Command("New-CsSipDomain"); + cmd.Parameters.Add("Identity", tmp[1].ToLower()); + ExecuteShellCommand(runSpace, cmd, false); + + transaction.RegisterNewSipDomain(tmp[1].ToLower()); + + + path = AddADPrefix(GetOrganizationPath(organizationId)); + DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path); + string[] sipDs = (string[])ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "msRTCSIP-Domains"); + List listSipDs = new List(); + listSipDs.AddRange(sipDs); + listSipDs.Add(tmp[1]); + + ActiveDirectoryUtils.SetADObjectPropertyValue(ou, "msRTCSIP-Domains", listSipDs.ToArray()); + ou.CommitChanges(); + + //Create simpleurls + CreateSimpleUrl(runSpace, tmp[1].ToLower(), tenantId); + transaction.RegisterNewSimpleUrl(tmp[1].ToLower(), tenantId.ToString()); + } + //enable for lync cmd = new Command("Enable-CsUser"); cmd.Parameters.Add("Identity", userUpn); @@ -395,17 +451,15 @@ namespace WebsitePanel.Providers.HostedSolution cmd.Parameters.Add("Identity", userUpn); result = ExecuteShellCommand(runSpace, cmd); - - string path = AddADPrefix(GetResultObjectDN(result)); + path = AddADPrefix(GetResultObjectDN(result)); DirectoryEntry user = ActiveDirectoryUtils.GetADObject(path); ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-GroupingID", tenantId); ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-TenantId", tenantId); - string[] tmp = userUpn.Split('@'); if (tmp.Length > 0) { string Url = SimpleUrlRoot + tmp[1]; - ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-BaseSimpleUrl", Url); + ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-BaseSimpleUrl", Url.ToLower()); } user.CommitChanges(); @@ -460,8 +514,10 @@ namespace WebsitePanel.Providers.HostedSolution PSObject user = result[0]; lyncUser.DisplayName = (string)GetPSObjectProperty(user, "DisplayName"); - lyncUser.PrimaryUri = (string)GetPSObjectProperty(user, "SipAddress"); + lyncUser.SipAddress = (string)GetPSObjectProperty(user, "SipAddress"); lyncUser.LineUri = (string)GetPSObjectProperty(user, "LineURI"); + + lyncUser.SipAddress = lyncUser.SipAddress.ToLower().Replace("sip:", ""); } catch (Exception ex) { @@ -476,6 +532,114 @@ namespace WebsitePanel.Providers.HostedSolution return lyncUser; } + private bool SetLyncUserGeneralSettingsInternal(string organizationId, string userUpn, LyncUser lyncUser) + { + HostedSolutionLog.LogStart("SetLyncUserGeneralSettingsInternal"); + HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId); + HostedSolutionLog.DebugInfo("userUpn: {0}", userUpn); + + bool ret = true; + Runspace runSpace = null; + Guid tenantId = Guid.Empty; + LyncTransaction transaction = StartTransaction(); + + try + { + runSpace = OpenRunspace(); + Command cmd = new Command("Get-CsTenant"); + cmd.Parameters.Add("Identity", GetOrganizationPath(organizationId)); + Collection result = ExecuteShellCommand(runSpace, cmd, false); + if ((result != null) && (result.Count > 0)) + { + tenantId = (Guid)GetPSObjectProperty(result[0], "TenantId"); + + string[] tmp = userUpn.Split('@'); + if (tmp.Length < 2) return false; + + // Get SipDomains and verify existence + bool bSipDomainExists = false; + cmd = new Command("Get-CsSipDomain"); + Collection sipDomains = ExecuteShellCommand(runSpace, cmd, false); + + foreach (PSObject domain in sipDomains) + { + string d = (string)GetPSObjectProperty(domain, "Name"); + if (d.ToLower() == tmp[1].ToLower()) + { + bSipDomainExists = true; + break; + } + } + + string path = string.Empty; + + if (!bSipDomainExists) + { + // Create Sip Domain + cmd = new Command("New-CsSipDomain"); + cmd.Parameters.Add("Identity", tmp[1].ToLower()); + ExecuteShellCommand(runSpace, cmd, false); + + transaction.RegisterNewSipDomain(tmp[1].ToLower()); + + + path = AddADPrefix(GetOrganizationPath(organizationId)); + DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path); + string[] sipDs = (string[])ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "msRTCSIP-Domains"); + List listSipDs = new List(); + listSipDs.AddRange(sipDs); + listSipDs.Add(tmp[1]); + + ActiveDirectoryUtils.SetADObjectPropertyValue(ou, "msRTCSIP-Domains", listSipDs.ToArray()); + ou.CommitChanges(); + + //Create simpleurls + CreateSimpleUrl(runSpace, tmp[1].ToLower(), tenantId); + transaction.RegisterNewSimpleUrl(tmp[1].ToLower(), tenantId.ToString()); + + path = AddADPrefix(GetResultObjectDN(result)); + DirectoryEntry user = ActiveDirectoryUtils.GetADObject(path); + + if (tmp.Length > 0) + { + string Url = SimpleUrlRoot + tmp[1]; + ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-BaseSimpleUrl", Url.ToLower()); + } + user.CommitChanges(); + } + } + + cmd = new Command("Set-CsUser"); + cmd.Parameters.Add("Identity", userUpn); + if (!string.IsNullOrEmpty(lyncUser.SipAddress)) cmd.Parameters.Add("SipAddress", "SIP:"+lyncUser.SipAddress); + if (!string.IsNullOrEmpty(lyncUser.SipAddress)) cmd.Parameters.Add("LineUri", lyncUser.LineUri); + + ExecuteShellCommand(runSpace, cmd, false); + + //initiate addressbook generation + cmd = new Command("Update-CsAddressBook"); + ExecuteShellCommand(runSpace, cmd, false); + + //initiate user database replication + cmd = new Command("Update-CsUserDatabase"); + ExecuteShellCommand(runSpace, cmd, false); + + } + catch (Exception ex) + { + ret = false; + HostedSolutionLog.LogError("SetLyncUserGeneralSettingsInternal", ex); + RollbackTransaction(transaction); + } + finally + { + CloseRunspace(runSpace); + } + HostedSolutionLog.LogEnd("SetLyncUserGeneralSettingsInternal"); + return ret; + } + + private bool SetLyncUserPlanInternal(string organizationId, string userUpn, LyncUserPlan plan, Runspace runSpace) { @@ -641,9 +805,6 @@ namespace WebsitePanel.Providers.HostedSolution SimpleUrls.Add(simpleUrl[0]); } - Hashtable properties = new Hashtable(); - properties.Add("Add", SimpleUrls); - //PSListModifier cmd = new Command("Set-CsSimpleUrlConfiguration"); cmd.Parameters.Add("Identity", "Global"); @@ -838,6 +999,9 @@ namespace WebsitePanel.Providers.HostedSolution HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId); HostedSolutionLog.DebugInfo("domainName: {0}", domainName); + domainName = domainName.ToLower(); + proxyFqdn = proxyFqdn.ToLower(); + Runspace runSpace = null; try { @@ -925,9 +1089,19 @@ namespace WebsitePanel.Providers.HostedSolution if (GetPSObjectProperty(result[0], "AllowedDomains").GetType().ToString() == "Microsoft.Rtc.Management.WritableConfig.Settings.Edge.AllowList") { + HostedSolutionLog.DebugInfo("Remove DomainName: {0}", domainName); allowList = (AllowList)GetPSObjectProperty(result[0], "AllowedDomains"); - DomainPattern domain = new DomainPattern(domainName); - allowList.AllowedDomain.Remove(domain); + DomainPattern domain = null; + foreach (DomainPattern d in allowList.AllowedDomain) + { + if (d.Domain.ToLower() == domainName.ToLower()) + { + domain = d; + break; + } + } + if (domain != null) + allowList.AllowedDomain.Remove(domain); } cmd = new Command("Set-CsTenantFederationConfiguration"); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs index 9b78cd77..cd7e60b0 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs @@ -43,13 +43,13 @@ namespace WebsitePanel.Providers.HostedSolution private string RootOU { get { return ProviderSettings["RootOU"]; } - } + } private string RootDomain { get { return ServerSettings.ADRootDomain; } } - + private string PrimaryDomainController { get { return ProviderSettings["PrimaryDomainController"]; } @@ -68,7 +68,7 @@ namespace WebsitePanel.Providers.HostedSolution AppendProtocol(sb); AppendDomainController(sb); AppendOUPath(sb, organizationId); - AppendOUPath(sb, RootOU); + AppendOUPath(sb, RootOU); AppendDomainPath(sb, RootDomain); return sb.ToString(); @@ -118,20 +118,20 @@ namespace WebsitePanel.Providers.HostedSolution { sb.Append(PrimaryDomainController + "/"); } - + private static void AppendCNPath(StringBuilder sb, string organizationId) { if (string.IsNullOrEmpty(organizationId)) return; - + sb.Append("CN=").Append(organizationId).Append(","); } - + private static void AppendProtocol(StringBuilder sb) { sb.Append("LDAP://"); } - + private static void AppendOUPath(StringBuilder sb, string ou) { if (string.IsNullOrEmpty(ou)) @@ -168,29 +168,29 @@ namespace WebsitePanel.Providers.HostedSolution { return OrganizationExistsInternal(organizationId); } - + internal bool OrganizationExistsInternal(string organizationId) { if (string.IsNullOrEmpty(organizationId)) throw new ArgumentNullException("organizationId"); - + string orgPath = GetOrganizationPath(organizationId); return ActiveDirectoryUtils.AdObjectExists(orgPath); } - + public Organization CreateOrganization(string organizationId) { - return CreateOrganizationInternal(organizationId); + return CreateOrganizationInternal(organizationId); } - + internal Organization CreateOrganizationInternal(string organizationId) { HostedSolutionLog.LogStart("CreateOrganizationInternal"); HostedSolutionLog.DebugInfo("OrganizationId : {0}", organizationId); - + if (string.IsNullOrEmpty(organizationId)) throw new ArgumentNullException("organizationId"); - + bool ouCreated = false; bool groupCreated = false; @@ -203,18 +203,18 @@ namespace WebsitePanel.Providers.HostedSolution //Create OU ActiveDirectoryUtils.CreateOrganizationalUnit(organizationId, parentPath); ouCreated = true; - + //Create security group ActiveDirectoryUtils.CreateGroup(orgPath, organizationId); groupCreated = true; - - + + org = new Organization(); org.OrganizationId = organizationId; org.DistinguishedName = ActiveDirectoryUtils.RemoveADPrefix(orgPath); - org.SecurityGroup = ActiveDirectoryUtils.RemoveADPrefix(GetGroupPath(organizationId)); + org.SecurityGroup = ActiveDirectoryUtils.RemoveADPrefix(GetGroupPath(organizationId)); } - catch(Exception ex) + catch (Exception ex) { HostedSolutionLog.LogError(ex); try @@ -225,7 +225,7 @@ namespace WebsitePanel.Providers.HostedSolution ActiveDirectoryUtils.DeleteADObject(groupPath); } } - catch(Exception e) + catch (Exception e) { HostedSolutionLog.LogError(e); } @@ -238,21 +238,21 @@ namespace WebsitePanel.Providers.HostedSolution ActiveDirectoryUtils.DeleteADObject(orgPath); } } - catch(Exception e) + catch (Exception e) { HostedSolutionLog.LogError(e); } throw; } - + HostedSolutionLog.LogEnd("CreateOrganizationInternal"); - - return org; + + return org; } public override void ChangeServiceItemsState(ServiceProviderItem[] items, bool enabled) - { + { foreach (ServiceProviderItem item in items) { @@ -261,7 +261,7 @@ namespace WebsitePanel.Providers.HostedSolution if (item is Organization) { Organization org = item as Organization; - ChangeOrganizationState(org, enabled); + ChangeOrganizationState(org, enabled); } } catch (Exception ex) @@ -281,7 +281,7 @@ namespace WebsitePanel.Providers.HostedSolution string.Format(CultureInfo.InvariantCulture, "(&(objectClass=user)(!{0}=disabled))", ADAttributes.CustomAttribute2); using (DirectorySearcher searcher = new DirectorySearcher(entry, filter)) - { + { SearchResultCollection resCollection = searcher.FindAll(); foreach (SearchResult res in resCollection) { @@ -303,21 +303,21 @@ namespace WebsitePanel.Providers.HostedSolution Organization org = item as Organization; DeleteOrganizationInternal(org.OrganizationId); } - + } catch (Exception ex) { HostedSolutionLog.LogError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex); } } - + } - + public void DeleteOrganization(string organizationId) - { + { DeleteOrganizationInternal(organizationId); } - + internal void DeleteOrganizationInternal(string organizationId) { HostedSolutionLog.LogStart("DeleteOrganizationInternal"); @@ -328,11 +328,11 @@ namespace WebsitePanel.Providers.HostedSolution string groupPath = GetGroupPath(organizationId); ActiveDirectoryUtils.DeleteADObject(groupPath); - - string path = GetOrganizationPath(organizationId); + + string path = GetOrganizationPath(organizationId); ActiveDirectoryUtils.DeleteADObject(path, true); - + HostedSolutionLog.LogEnd("DeleteOrganizationInternal"); } @@ -371,7 +371,7 @@ namespace WebsitePanel.Providers.HostedSolution userPath = GetUserPath(organizationId, loginName); if (!ActiveDirectoryUtils.AdObjectExists(userPath)) { - userPath = ActiveDirectoryUtils.CreateUser(path, upn, loginName, displayName, password, enabled); + userPath = ActiveDirectoryUtils.CreateUser(path, null, loginName, displayName, password, enabled); DirectoryEntry entry = new DirectoryEntry(userPath); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.UserPrincipalName, upn); entry.CommitChanges(); @@ -416,12 +416,12 @@ namespace WebsitePanel.Providers.HostedSolution { return GetPasswordPolicyInternal(); } - + internal PasswordPolicyResult GetPasswordPolicyInternal() { HostedSolutionLog.LogStart("GetPasswordPolicyInternal"); - PasswordPolicyResult res = new PasswordPolicyResult {IsSuccess = true}; + PasswordPolicyResult res = new PasswordPolicyResult { IsSuccess = true }; string[] policyAttributes = new[] {"minPwdLength", "pwdProperties", @@ -437,30 +437,30 @@ namespace WebsitePanel.Providers.HostedSolution SearchScope.Base ); - + SearchResult result = ds.FindOne(); PasswordPolicy ret = new PasswordPolicy - { - MinLength = ((int) result.Properties["minPwdLength"][0]), - IsComplexityEnable = ((int) result.Properties["pwdProperties"][0] == 1) - }; - res.Value = ret; + { + MinLength = ((int)result.Properties["minPwdLength"][0]), + IsComplexityEnable = ((int)result.Properties["pwdProperties"][0] == 1) + }; + res.Value = ret; } - catch(Exception ex) + catch (Exception ex) { HostedSolutionLog.LogError(ex); res.IsSuccess = false; - res.ErrorCodes.Add(ErrorCodes.CANNOT_GET_PASSWORD_COMPLEXITY); + res.ErrorCodes.Add(ErrorCodes.CANNOT_GET_PASSWORD_COMPLEXITY); } - HostedSolutionLog.LogEnd("GetPasswordPolicyInternal"); + HostedSolutionLog.LogEnd("GetPasswordPolicyInternal"); return res; } - + public void DeleteUser(string loginName, string organizationId) - { + { DeleteUserInternal(loginName, organizationId); } @@ -469,37 +469,37 @@ namespace WebsitePanel.Providers.HostedSolution HostedSolutionLog.LogStart("DeleteUserInternal"); HostedSolutionLog.DebugInfo("loginName : {0}", loginName); HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId); - + if (string.IsNullOrEmpty(loginName)) throw new ArgumentNullException("loginName"); if (string.IsNullOrEmpty(organizationId)) throw new ArgumentNullException("organizationId"); - string path = GetUserPath(organizationId, loginName); + string path = GetUserPath(organizationId, loginName); if (ActiveDirectoryUtils.AdObjectExists(path)) - ActiveDirectoryUtils.DeleteADObject(path,true); + ActiveDirectoryUtils.DeleteADObject(path, true); HostedSolutionLog.LogEnd("DeleteUserInternal"); } - + public OrganizationUser GetUserGeneralSettings(string loginName, string organizationId) { return GetUserGeneralSettingsInternal(loginName, organizationId); } - + internal OrganizationUser GetUserGeneralSettingsInternal(string loginName, string organizationId) { HostedSolutionLog.LogStart("GetUserGeneralSettingsInternal"); HostedSolutionLog.DebugInfo("loginName : {0}", loginName); HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId); - + if (string.IsNullOrEmpty(loginName)) throw new ArgumentNullException("loginName"); string path = GetUserPath(organizationId, loginName); DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); - + OrganizationUser retUser = new OrganizationUser(); retUser.FirstName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.FirstName); @@ -529,24 +529,25 @@ namespace WebsitePanel.Providers.HostedSolution retUser.DomainUserName = GetDomainName(ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName)); retUser.DistinguishedName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DistinguishedName); retUser.Locked = (bool)entry.InvokeGet(ADAttributes.AccountLocked); - + retUser.UserPrincipalName= (string)entry.InvokeGet(ADAttributes.UserPrincipalName); + HostedSolutionLog.LogEnd("GetUserGeneralSettingsInternal"); return retUser; } - private string GetDomainName(string username) - { - string domain = ActiveDirectoryUtils.GetNETBIOSDomainName(RootDomain); - string ret = string.Format(@"{0}\{1}", domain, username); - return ret; - } + private string GetDomainName(string username) + { + string domain = ActiveDirectoryUtils.GetNETBIOSDomainName(RootDomain); + string ret = string.Format(@"{0}\{1}", domain, username); + return ret; + } private OrganizationUser GetManager(DirectoryEntry entry) { OrganizationUser retUser = null; string path = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Manager); if (!string.IsNullOrEmpty(path)) - { + { path = ActiveDirectoryUtils.AddADPrefix(path, PrimaryDomainController); if (ActiveDirectoryUtils.AdObjectExists(path)) { @@ -555,18 +556,18 @@ namespace WebsitePanel.Providers.HostedSolution retUser.DisplayName = ActiveDirectoryUtils.GetADObjectStringProperty(user, ADAttributes.DisplayName); retUser.AccountName = ActiveDirectoryUtils.GetADObjectStringProperty(user, ADAttributes.Name); - } + } } - + return retUser; } - - public void SetUserGeneralSettings(string organizationId, string accountName, string displayName, string password, + + public void SetUserGeneralSettings(string organizationId, string accountName, string displayName, string password, bool hideFromAddressBook, bool disabled, bool locked, 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, string externalEmail) + string webPage, string notes, string externalEmail) { SetUserGeneralSettingsInternal(organizationId, accountName, displayName, password, hideFromAddressBook, disabled, locked, firstName, initials, lastName, address, city, state, zip, country, jobTitle, @@ -582,10 +583,10 @@ namespace WebsitePanel.Providers.HostedSolution string webPage, string notes, string externalEmail) { string path = GetUserPath(organizationId, accountName); - DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); + DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); - ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.FirstName, firstName); + ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.FirstName, firstName); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.LastName, lastName); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.DisplayName, displayName); @@ -608,7 +609,7 @@ namespace WebsitePanel.Providers.HostedSolution ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Notes, notes); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.ExternalEmail, externalEmail); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.CustomAttribute2, (disabled ? "disabled" : null)); - + string manager = string.Empty; if (!string.IsNullOrEmpty(managerAccountName)) @@ -618,7 +619,7 @@ namespace WebsitePanel.Providers.HostedSolution } ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Manager, ActiveDirectoryUtils.RemoveADPrefix(manager)); - + entry.InvokeSet(ADAttributes.AccountDisabled, disabled); if (!string.IsNullOrEmpty(password)) entry.Invoke(ADAttributes.SetPassword, password); @@ -628,13 +629,44 @@ namespace WebsitePanel.Providers.HostedSolution bool isLoked = (bool)entry.InvokeGet(ADAttributes.AccountLocked); if (isLoked) entry.InvokeSet(ADAttributes.AccountLocked, locked); - + } - - + + entry.CommitChanges(); } + public void SetUserPassword(string organizationId, string accountName, string password) + { + SetUserPasswordInternal(organizationId, accountName, password); + } + + internal void SetUserPasswordInternal(string organizationId, string accountName, string password) + { + string path = GetUserPath(organizationId, accountName); + DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); + + if (!string.IsNullOrEmpty(password)) + entry.Invoke(ADAttributes.SetPassword, password); + + entry.CommitChanges(); + } + + + public void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName) + { + SetUserPrincipalNameInternal(organizationId, accountName, userPrincipalName); + } + + internal void SetUserPrincipalNameInternal(string organizationId, string accountName, string userPrincipalName) + { + string path = GetUserPath(organizationId, accountName); + DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); + + ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.UserPrincipalName, userPrincipalName); + + entry.CommitChanges(); + } public string GetSamAccountNameByUserPrincipalName(string organizationId, string userPrincipalName) { @@ -678,15 +710,15 @@ namespace WebsitePanel.Providers.HostedSolution } - #endregion + #endregion #region Domains - + public void CreateOrganizationDomain(string organizationDistinguishedName, string domain) { CreateOrganizationDomainInternal(organizationDistinguishedName, domain); } - + /// /// Creates organization domain /// @@ -701,7 +733,7 @@ namespace WebsitePanel.Providers.HostedSolution HostedSolutionLog.LogEnd("CreateOrganizationDomainInternal"); } - + public void DeleteOrganizationDomain(string organizationDistinguishedName, string domain) { DeleteOrganizationDomainInternal(organizationDistinguishedName, domain); @@ -729,6 +761,6 @@ namespace WebsitePanel.Providers.HostedSolution return Environment.UserDomainName != Environment.MachineName; } - + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail7/SmarterMail7.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail7/SmarterMail7.cs index 19031afa..5f6df0b4 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail7/SmarterMail7.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail7/SmarterMail7.cs @@ -2107,7 +2107,7 @@ namespace WebsitePanel.Providers.Mail if (!String.IsNullOrEmpty(productVersion)) { string[] split = productVersion.Split(new char[] { '.' }); - return split[0].Equals("7"); + return split[0].Equals("7")||split[0].Equals("8"); } } @@ -2140,7 +2140,7 @@ namespace WebsitePanel.Providers.Mail if (!String.IsNullOrEmpty(productVersion)) { string[] split = productVersion.Split(new[] { '.' }); - return split[0].Equals("7"); + return split[0].Equals("7")||split[0].Equals("8"); } return false; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs index af7a78f6..a51c4dff 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs @@ -1237,7 +1237,7 @@ namespace WebsitePanel.Providers.Web // Create site webObjectsSvc.CreateSite(site); // Update web site bindings - webObjectsSvc.UpdateSiteBindings(site.SiteId, site.Bindings); + webObjectsSvc.UpdateSiteBindings(site.SiteId, site.Bindings, false); // Set web site logging settings webObjectsSvc.SetWebSiteLoggingSettings(site); } @@ -1322,7 +1322,7 @@ namespace WebsitePanel.Providers.Web // Update website webObjectsSvc.UpdateSite(site); // Update website bindings - webObjectsSvc.UpdateSiteBindings(site.SiteId, site.Bindings); + webObjectsSvc.UpdateSiteBindings(site.SiteId, site.Bindings, false); // Set website logging settings webObjectsSvc.SetWebSiteLoggingSettings(site); // @@ -1440,9 +1440,9 @@ namespace WebsitePanel.Providers.Web /// /// Site's id to update bindings for. /// Bindings information. - public override void UpdateSiteBindings(string siteId, ServerBinding[] bindings) + public override void UpdateSiteBindings(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed) { - this.webObjectsSvc.UpdateSiteBindings(siteId, bindings); + this.webObjectsSvc.UpdateSiteBindings(siteId, bindings, emptyBindingsAllowed); } /// @@ -4046,7 +4046,12 @@ namespace WebsitePanel.Providers.Web { using (var srvman = new ServerManager()) { - return srvman.ApplicationPools["WebsitePanel Server"].ProcessModel.LoadUserProfile; + string poolName = Environment.GetEnvironmentVariable("APP_POOL_ID", EnvironmentVariableTarget.Process); + ApplicationPool pool = srvman.ApplicationPools[poolName]; + if (pool == null) + throw new Exception("ApplicationPool pool is null" + poolName); + + return pool.ProcessModel.LoadUserProfile; } } @@ -4055,7 +4060,12 @@ namespace WebsitePanel.Providers.Web { using (var srvman = new ServerManager()) { - srvman.ApplicationPools["WebsitePanel Server"].ProcessModel.LoadUserProfile = true; + string poolName = Environment.GetEnvironmentVariable("APP_POOL_ID", EnvironmentVariableTarget.Process); + ApplicationPool pool = srvman.ApplicationPools[poolName]; + if (pool == null) + throw new Exception("ApplicationPool pool is null" + poolName); + + pool.ProcessModel.LoadUserProfile = true; // save changes srvman.CommitChanges(); } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/Properties/AssemblyInfo.cs index ed50c061..23c091a1 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/Properties/AssemblyInfo.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/Properties/AssemblyInfo.cs @@ -1,4 +1,32 @@ -using System.Reflection; +// 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.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebObjects/WebObjectsModuleService.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebObjects/WebObjectsModuleService.cs index 3a8cae98..6bd53596 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebObjects/WebObjectsModuleService.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebObjects/WebObjectsModuleService.cs @@ -422,11 +422,14 @@ namespace WebsitePanel.Providers.Web.Iis.WebObjects return bindings.ToArray(); } - private void SyncWebSiteBindingsChanges(string siteId, ServerBinding[] bindings) + private void SyncWebSiteBindingsChanges(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed) { // ensure site bindings - if (bindings == null || bindings.Length == 0) - throw new Exception("SiteServerBindingsEmpty"); + if (!emptyBindingsAllowed) + { + if (bindings == null || bindings.Length == 0) + throw new Exception("SiteServerBindingsEmpty"); + } using (var srvman = GetServerManager()) { @@ -438,7 +441,8 @@ namespace WebsitePanel.Providers.Web.Iis.WebObjects int i = 0; while (i < iisObject.Bindings.Count) { - if (String.Equals(iisObject.Bindings[i].Protocol, Uri.UriSchemeHttp, StringComparison.InvariantCultureIgnoreCase)) + if ((String.Equals(iisObject.Bindings[i].Protocol, Uri.UriSchemeHttp, StringComparison.InvariantCultureIgnoreCase)) | + (bindings.Length == 0)) { iisObject.Bindings.RemoveAt(i); continue; @@ -451,17 +455,17 @@ namespace WebsitePanel.Providers.Web.Iis.WebObjects // Create HTTP bindings received foreach (var serverBinding in bindings) - { - var bindingInformation = String.Format("{0}:{1}:{2}", serverBinding.IP, serverBinding.Port, serverBinding.Host); - iisObject.Bindings.Add(bindingInformation, Uri.UriSchemeHttp); - } + { + var bindingInformation = String.Format("{0}:{1}:{2}", serverBinding.IP, serverBinding.Port, serverBinding.Host); + iisObject.Bindings.Add(bindingInformation, Uri.UriSchemeHttp); + } } // srvman.CommitChanges(); } } - public void UpdateSiteBindings(string siteId, ServerBinding[] bindings) + public void UpdateSiteBindings(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed) { using (ServerManager srvman = GetServerManager()) { @@ -470,7 +474,7 @@ namespace WebsitePanel.Providers.Web.Iis.WebObjects return; } // - SyncWebSiteBindingsChanges(siteId, bindings); + SyncWebSiteBindingsChanges(siteId, bindings, emptyBindingsAllowed); } public string GetPhysicalPath(ServerManager srvman, WebVirtualDirectory virtualDir) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs index 01e21fb6..4aa4e55b 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs @@ -847,7 +847,7 @@ namespace WebsitePanel.Providers.Web } } - public virtual void UpdateSiteBindings(string siteId, ServerBinding[] bindings) + public virtual void UpdateSiteBindings(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed) { ManagementObject objSite = wmi.GetObject(String.Format("IIsWebServerSetting='{0}'", siteId)); @@ -3396,7 +3396,8 @@ namespace WebsitePanel.Providers.Web virtual public bool CheckLoadUserProfile() { - throw new NotImplementedException("LoadUserProfile option valid only on IIS7 or higer"); + //throw new NotImplementedException("LoadUserProfile option valid only on IIS7 or higer"); + return false; } virtual public void EnableLoadUserProfile() @@ -3421,20 +3422,28 @@ namespace WebsitePanel.Providers.Web public bool IsMsDeployInstalled() { - // project has reference to Microsoft.Web.Deployment, so - return true; - /* + // TO-DO: Implement Web Deploy detection (x64/x86) + var isInstalled = false; + // try { - Assembly.Load(MS_DEPLOY_ASSEMBLY_NAME); - return true; + var msdeployRegKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\IIS Extensions\MSDeploy\3"); + // + var keyValue = msdeployRegKey.GetValue("Install"); + // We have found the required key in the registry hive + if (keyValue != null && keyValue.Equals(1)) + { + isInstalled = true; + } } - catch + catch (Exception ex) { - // type could not be instantiated - return false; + Log.WriteError("Could not retrieve Web Deploy key from the registry", ex); } - */ + // + return isInstalled; + + } public GalleryLanguagesResult GetGalleryLanguages(int UserId) @@ -3551,6 +3560,11 @@ namespace WebsitePanel.Providers.Web return module.DownloadAppAndGetStatus(UserId, id); } + catch (UnauthorizedAccessException ex) + { + Log.WriteError(ex); + return GalleryWebAppStatus.UnauthorizedAccessException; + } catch (Exception ex) { Log.WriteError(ex); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/IIs80.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/IIs80.cs index 960487b0..db31084d 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/IIs80.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/IIs80.cs @@ -1,4 +1,32 @@ -using Microsoft.Win32; +// 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 Microsoft.Win32; using System; using System.Collections.Generic; using System.Linq; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/Properties/AssemblyInfo.cs index 3e0804f1..f6b854c5 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/Properties/AssemblyInfo.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/Properties/AssemblyInfo.cs @@ -1,4 +1,32 @@ -using System.Reflection; +// 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.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/ExchangeServerProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/ExchangeServerProxy.cs index 31142263..64a9509c 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/ExchangeServerProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/ExchangeServerProxy.cs @@ -1032,7 +1032,17 @@ namespace WebsitePanel.Providers.Exchange this.Invoke("AddAuthoritativeDomain", new object[] { domain}); } - + + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ChangeAcceptedDomainType", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void ChangeAcceptedDomainType(string domain, ExchangeAcceptedDomainType domainType) + { + this.Invoke("ChangeAcceptedDomainType", new object[] { + domain, + domainType}); + } + /// public System.IAsyncResult BeginAddAuthoritativeDomain(string domain, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddAuthoritativeDomain", new object[] { diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/LyncServerProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/LyncServerProxy.cs index 846a78f8..299ccff6 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/LyncServerProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/LyncServerProxy.cs @@ -26,11 +26,10 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.5456 +// Runtime Version:2.0.50727.6400 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -38,91 +37,93 @@ //------------------------------------------------------------------------------ // -// This source code was auto-generated by wsdl, Version=2.0.50727.42. +// This source code was auto-generated by wsdl, Version=2.0.50727.3038. // + using WebsitePanel.Providers.HostedSolution; -namespace WebsitePanel.Providers.Lync -{ +namespace WebsitePanel.Providers.Lync { using System.Xml.Serialization; using System.Web.Services; using System.ComponentModel; using System.Web.Services.Protocols; using System; using System.Diagnostics; - - + + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "LyncServerSoap", Namespace = "http://smbsaas/websitepanel/server/")] - public partial class LyncServer : Microsoft.Web.Services3.WebServicesClientProtocol - { - + [System.Web.Services.WebServiceBindingAttribute(Name="LyncServerSoap", Namespace="http://smbsaas/websitepanel/server/")] + public partial class LyncServer : Microsoft.Web.Services3.WebServicesClientProtocol { + public ServiceProviderSettingsSoapHeader ServiceProviderSettingsSoapHeaderValue; - + private System.Threading.SendOrPostCallback CreateOrganizationOperationCompleted; - + private System.Threading.SendOrPostCallback DeleteOrganizationOperationCompleted; - + private System.Threading.SendOrPostCallback CreateUserOperationCompleted; - + private System.Threading.SendOrPostCallback GetLyncUserGeneralSettingsOperationCompleted; - + + private System.Threading.SendOrPostCallback SetLyncUserGeneralSettingsOperationCompleted; + private System.Threading.SendOrPostCallback SetLyncUserPlanOperationCompleted; - + private System.Threading.SendOrPostCallback DeleteUserOperationCompleted; - + private System.Threading.SendOrPostCallback GetFederationDomainsOperationCompleted; - + private System.Threading.SendOrPostCallback AddFederationDomainOperationCompleted; - + private System.Threading.SendOrPostCallback RemoveFederationDomainOperationCompleted; - + private System.Threading.SendOrPostCallback ReloadConfigurationOperationCompleted; - + /// - public LyncServer() - { + public LyncServer() { this.Url = "http://localhost:9003/LyncServer.asmx"; } - + /// public event CreateOrganizationCompletedEventHandler CreateOrganizationCompleted; - + /// public event DeleteOrganizationCompletedEventHandler DeleteOrganizationCompleted; - + /// public event CreateUserCompletedEventHandler CreateUserCompleted; - + /// public event GetLyncUserGeneralSettingsCompletedEventHandler GetLyncUserGeneralSettingsCompleted; - + + /// + public event SetLyncUserGeneralSettingsCompletedEventHandler SetLyncUserGeneralSettingsCompleted; + /// public event SetLyncUserPlanCompletedEventHandler SetLyncUserPlanCompleted; - + /// public event DeleteUserCompletedEventHandler DeleteUserCompleted; - + /// public event GetFederationDomainsCompletedEventHandler GetFederationDomainsCompleted; - + /// public event AddFederationDomainCompletedEventHandler AddFederationDomainCompleted; - + /// public event RemoveFederationDomainCompletedEventHandler RemoveFederationDomainCompleted; - + /// public event ReloadConfigurationCompletedEventHandler ReloadConfigurationCompleted; - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateOrganization", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public string CreateOrganization(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateOrganization", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public string CreateOrganization(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice) { object[] results = this.Invoke("CreateOrganization", new object[] { organizationId, sipDomain, @@ -133,10 +134,9 @@ namespace WebsitePanel.Providers.Lync enabledEnterpriseVoice}); return ((string)(results[0])); } - + /// - public System.IAsyncResult BeginCreateOrganization(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCreateOrganization(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateOrganization", new object[] { organizationId, sipDomain, @@ -146,25 +146,21 @@ namespace WebsitePanel.Providers.Lync enabledFederation, enabledEnterpriseVoice}, callback, asyncState); } - + /// - public string EndCreateOrganization(System.IAsyncResult asyncResult) - { + public string EndCreateOrganization(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string)(results[0])); } - + /// - public void CreateOrganizationAsync(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice) - { + public void CreateOrganizationAsync(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice) { this.CreateOrganizationAsync(organizationId, sipDomain, enableConferencing, enableConferencingVideo, maxConferenceSize, enabledFederation, enabledEnterpriseVoice, null); } - + /// - public void CreateOrganizationAsync(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice, object userState) - { - if ((this.CreateOrganizationOperationCompleted == null)) - { + public void CreateOrganizationAsync(string organizationId, string sipDomain, bool enableConferencing, bool enableConferencingVideo, int maxConferenceSize, bool enabledFederation, bool enabledEnterpriseVoice, object userState) { + if ((this.CreateOrganizationOperationCompleted == null)) { this.CreateOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateOrganizationOperationCompleted); } this.InvokeAsync("CreateOrganization", new object[] { @@ -176,108 +172,92 @@ namespace WebsitePanel.Providers.Lync enabledFederation, enabledEnterpriseVoice}, this.CreateOrganizationOperationCompleted, userState); } - - private void OnCreateOrganizationOperationCompleted(object arg) - { - if ((this.CreateOrganizationCompleted != null)) - { + + private void OnCreateOrganizationOperationCompleted(object arg) { + if ((this.CreateOrganizationCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CreateOrganizationCompleted(this, new CreateOrganizationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteOrganization", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool DeleteOrganization(string organizationId, string sipDomain) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteOrganization", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool DeleteOrganization(string organizationId, string sipDomain) { object[] results = this.Invoke("DeleteOrganization", new object[] { organizationId, sipDomain}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginDeleteOrganization(string organizationId, string sipDomain, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDeleteOrganization(string organizationId, string sipDomain, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteOrganization", new object[] { organizationId, sipDomain}, callback, asyncState); } - + /// - public bool EndDeleteOrganization(System.IAsyncResult asyncResult) - { + public bool EndDeleteOrganization(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void DeleteOrganizationAsync(string organizationId, string sipDomain) - { + public void DeleteOrganizationAsync(string organizationId, string sipDomain) { this.DeleteOrganizationAsync(organizationId, sipDomain, null); } - + /// - public void DeleteOrganizationAsync(string organizationId, string sipDomain, object userState) - { - if ((this.DeleteOrganizationOperationCompleted == null)) - { + public void DeleteOrganizationAsync(string organizationId, string sipDomain, object userState) { + if ((this.DeleteOrganizationOperationCompleted == null)) { this.DeleteOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteOrganizationOperationCompleted); } this.InvokeAsync("DeleteOrganization", new object[] { organizationId, sipDomain}, this.DeleteOrganizationOperationCompleted, userState); } - - private void OnDeleteOrganizationOperationCompleted(object arg) - { - if ((this.DeleteOrganizationCompleted != null)) - { + + private void OnDeleteOrganizationOperationCompleted(object arg) { + if ((this.DeleteOrganizationCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DeleteOrganizationCompleted(this, new DeleteOrganizationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateUser", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool CreateUser(string organizationId, string userUpn, LyncUserPlan plan) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateUser", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool CreateUser(string organizationId, string userUpn, LyncUserPlan plan) { object[] results = this.Invoke("CreateUser", new object[] { organizationId, userUpn, plan}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginCreateUser(string organizationId, string userUpn, LyncUserPlan plan, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCreateUser(string organizationId, string userUpn, LyncUserPlan plan, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateUser", new object[] { organizationId, userUpn, plan}, callback, asyncState); } - + /// - public bool EndCreateUser(System.IAsyncResult asyncResult) - { + public bool EndCreateUser(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void CreateUserAsync(string organizationId, string userUpn, LyncUserPlan plan) - { + public void CreateUserAsync(string organizationId, string userUpn, LyncUserPlan plan) { this.CreateUserAsync(organizationId, userUpn, plan, null); } - + /// - public void CreateUserAsync(string organizationId, string userUpn, LyncUserPlan plan, object userState) - { - if ((this.CreateUserOperationCompleted == null)) - { + public void CreateUserAsync(string organizationId, string userUpn, LyncUserPlan plan, object userState) { + if ((this.CreateUserOperationCompleted == null)) { this.CreateUserOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateUserOperationCompleted); } this.InvokeAsync("CreateUser", new object[] { @@ -285,108 +265,140 @@ namespace WebsitePanel.Providers.Lync userUpn, plan}, this.CreateUserOperationCompleted, userState); } - - private void OnCreateUserOperationCompleted(object arg) - { - if ((this.CreateUserCompleted != null)) - { + + 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 CreateUserCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetLyncUserGeneralSettings", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public LyncUser GetLyncUserGeneralSettings(string organizationId, string userUpn) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetLyncUserGeneralSettings", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public LyncUser GetLyncUserGeneralSettings(string organizationId, string userUpn) { object[] results = this.Invoke("GetLyncUserGeneralSettings", new object[] { organizationId, userUpn}); return ((LyncUser)(results[0])); } - + /// - public System.IAsyncResult BeginGetLyncUserGeneralSettings(string organizationId, string userUpn, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetLyncUserGeneralSettings(string organizationId, string userUpn, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetLyncUserGeneralSettings", new object[] { organizationId, userUpn}, callback, asyncState); } - + /// - public LyncUser EndGetLyncUserGeneralSettings(System.IAsyncResult asyncResult) - { + public LyncUser EndGetLyncUserGeneralSettings(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((LyncUser)(results[0])); } - + /// - public void GetLyncUserGeneralSettingsAsync(string organizationId, string userUpn) - { + public void GetLyncUserGeneralSettingsAsync(string organizationId, string userUpn) { this.GetLyncUserGeneralSettingsAsync(organizationId, userUpn, null); } - + /// - public void GetLyncUserGeneralSettingsAsync(string organizationId, string userUpn, object userState) - { - if ((this.GetLyncUserGeneralSettingsOperationCompleted == null)) - { + public void GetLyncUserGeneralSettingsAsync(string organizationId, string userUpn, object userState) { + if ((this.GetLyncUserGeneralSettingsOperationCompleted == null)) { this.GetLyncUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLyncUserGeneralSettingsOperationCompleted); } this.InvokeAsync("GetLyncUserGeneralSettings", new object[] { organizationId, userUpn}, this.GetLyncUserGeneralSettingsOperationCompleted, userState); } - - private void OnGetLyncUserGeneralSettingsOperationCompleted(object arg) - { - if ((this.GetLyncUserGeneralSettingsCompleted != null)) - { + + private void OnGetLyncUserGeneralSettingsOperationCompleted(object arg) { + if ((this.GetLyncUserGeneralSettingsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetLyncUserGeneralSettingsCompleted(this, new GetLyncUserGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetLyncUserPlan", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetLyncUserGeneralSettings", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool SetLyncUserGeneralSettings(string organizationId, string userUpn, LyncUser lyncUser) { + object[] results = this.Invoke("SetLyncUserGeneralSettings", new object[] { + organizationId, + userUpn, + lyncUser}); + return ((bool)(results[0])); + } + + /// + public System.IAsyncResult BeginSetLyncUserGeneralSettings(string organizationId, string userUpn, LyncUser lyncUser, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetLyncUserGeneralSettings", new object[] { + organizationId, + userUpn, + lyncUser}, callback, asyncState); + } + + /// + public bool EndSetLyncUserGeneralSettings(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((bool)(results[0])); + } + + /// + public void SetLyncUserGeneralSettingsAsync(string organizationId, string userUpn, LyncUser lyncUser) { + this.SetLyncUserGeneralSettingsAsync(organizationId, userUpn, lyncUser, null); + } + + /// + public void SetLyncUserGeneralSettingsAsync(string organizationId, string userUpn, LyncUser lyncUser, object userState) { + if ((this.SetLyncUserGeneralSettingsOperationCompleted == null)) { + this.SetLyncUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetLyncUserGeneralSettingsOperationCompleted); + } + this.InvokeAsync("SetLyncUserGeneralSettings", new object[] { + organizationId, + userUpn, + lyncUser}, this.SetLyncUserGeneralSettingsOperationCompleted, userState); + } + + private void OnSetLyncUserGeneralSettingsOperationCompleted(object arg) { + if ((this.SetLyncUserGeneralSettingsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetLyncUserGeneralSettingsCompleted(this, new SetLyncUserGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetLyncUserPlan", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan) { object[] results = this.Invoke("SetLyncUserPlan", new object[] { organizationId, userUpn, plan}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginSetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginSetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("SetLyncUserPlan", new object[] { organizationId, userUpn, plan}, callback, asyncState); } - + /// - public bool EndSetLyncUserPlan(System.IAsyncResult asyncResult) - { + public bool EndSetLyncUserPlan(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void SetLyncUserPlanAsync(string organizationId, string userUpn, LyncUserPlan plan) - { + public void SetLyncUserPlanAsync(string organizationId, string userUpn, LyncUserPlan plan) { this.SetLyncUserPlanAsync(organizationId, userUpn, plan, null); } - + /// - public void SetLyncUserPlanAsync(string organizationId, string userUpn, LyncUserPlan plan, object userState) - { - if ((this.SetLyncUserPlanOperationCompleted == null)) - { + public void SetLyncUserPlanAsync(string organizationId, string userUpn, LyncUserPlan plan, object userState) { + if ((this.SetLyncUserPlanOperationCompleted == null)) { this.SetLyncUserPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetLyncUserPlanOperationCompleted); } this.InvokeAsync("SetLyncUserPlan", new object[] { @@ -394,155 +406,131 @@ namespace WebsitePanel.Providers.Lync userUpn, plan}, this.SetLyncUserPlanOperationCompleted, userState); } - - private void OnSetLyncUserPlanOperationCompleted(object arg) - { - if ((this.SetLyncUserPlanCompleted != null)) - { + + private void OnSetLyncUserPlanOperationCompleted(object arg) { + if ((this.SetLyncUserPlanCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.SetLyncUserPlanCompleted(this, new SetLyncUserPlanCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteUser", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool DeleteUser(string userUpn) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteUser", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool DeleteUser(string userUpn) { object[] results = this.Invoke("DeleteUser", new object[] { userUpn}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginDeleteUser(string userUpn, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDeleteUser(string userUpn, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteUser", new object[] { userUpn}, callback, asyncState); } - + /// - public bool EndDeleteUser(System.IAsyncResult asyncResult) - { + public bool EndDeleteUser(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void DeleteUserAsync(string userUpn) - { + public void DeleteUserAsync(string userUpn) { this.DeleteUserAsync(userUpn, null); } - + /// - public void DeleteUserAsync(string userUpn, object userState) - { - if ((this.DeleteUserOperationCompleted == null)) - { + public void DeleteUserAsync(string userUpn, object userState) { + if ((this.DeleteUserOperationCompleted == null)) { this.DeleteUserOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteUserOperationCompleted); } this.InvokeAsync("DeleteUser", new object[] { userUpn}, this.DeleteUserOperationCompleted, userState); } - - private void OnDeleteUserOperationCompleted(object arg) - { - if ((this.DeleteUserCompleted != null)) - { + + private void OnDeleteUserOperationCompleted(object arg) { + if ((this.DeleteUserCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DeleteUserCompleted(this, new DeleteUserCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFederationDomains", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public LyncFederationDomain[] GetFederationDomains(string organizationId) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFederationDomains", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public LyncFederationDomain[] GetFederationDomains(string organizationId) { object[] results = this.Invoke("GetFederationDomains", new object[] { organizationId}); return ((LyncFederationDomain[])(results[0])); } - + /// - public System.IAsyncResult BeginGetFederationDomains(string organizationId, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFederationDomains(string organizationId, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFederationDomains", new object[] { organizationId}, callback, asyncState); } - + /// - public LyncFederationDomain[] EndGetFederationDomains(System.IAsyncResult asyncResult) - { + public LyncFederationDomain[] EndGetFederationDomains(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((LyncFederationDomain[])(results[0])); } - + /// - public void GetFederationDomainsAsync(string organizationId) - { + public void GetFederationDomainsAsync(string organizationId) { this.GetFederationDomainsAsync(organizationId, null); } - + /// - public void GetFederationDomainsAsync(string organizationId, object userState) - { - if ((this.GetFederationDomainsOperationCompleted == null)) - { + public void GetFederationDomainsAsync(string organizationId, object userState) { + if ((this.GetFederationDomainsOperationCompleted == null)) { this.GetFederationDomainsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFederationDomainsOperationCompleted); } this.InvokeAsync("GetFederationDomains", new object[] { organizationId}, this.GetFederationDomainsOperationCompleted, userState); } - - private void OnGetFederationDomainsOperationCompleted(object arg) - { - if ((this.GetFederationDomainsCompleted != null)) - { + + private void OnGetFederationDomainsOperationCompleted(object arg) { + if ((this.GetFederationDomainsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFederationDomainsCompleted(this, new GetFederationDomainsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddFederationDomain", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool AddFederationDomain(string organizationId, string domainName, string proxyFqdn) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddFederationDomain", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool AddFederationDomain(string organizationId, string domainName, string proxyFqdn) { object[] results = this.Invoke("AddFederationDomain", new object[] { organizationId, domainName, proxyFqdn}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginAddFederationDomain(string organizationId, string domainName, string proxyFqdn, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginAddFederationDomain(string organizationId, string domainName, string proxyFqdn, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddFederationDomain", new object[] { organizationId, domainName, proxyFqdn}, callback, asyncState); } - + /// - public bool EndAddFederationDomain(System.IAsyncResult asyncResult) - { + public bool EndAddFederationDomain(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void AddFederationDomainAsync(string organizationId, string domainName, string proxyFqdn) - { + public void AddFederationDomainAsync(string organizationId, string domainName, string proxyFqdn) { this.AddFederationDomainAsync(organizationId, domainName, proxyFqdn, null); } - + /// - public void AddFederationDomainAsync(string organizationId, string domainName, string proxyFqdn, object userState) - { - if ((this.AddFederationDomainOperationCompleted == null)) - { + public void AddFederationDomainAsync(string organizationId, string domainName, string proxyFqdn, object userState) { + if ((this.AddFederationDomainOperationCompleted == null)) { this.AddFederationDomainOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddFederationDomainOperationCompleted); } this.InvokeAsync("AddFederationDomain", new object[] { @@ -550,392 +538,363 @@ namespace WebsitePanel.Providers.Lync domainName, proxyFqdn}, this.AddFederationDomainOperationCompleted, userState); } - - private void OnAddFederationDomainOperationCompleted(object arg) - { - if ((this.AddFederationDomainCompleted != null)) - { + + private void OnAddFederationDomainOperationCompleted(object arg) { + if ((this.AddFederationDomainCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.AddFederationDomainCompleted(this, new AddFederationDomainCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveFederationDomain", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool RemoveFederationDomain(string organizationId, string domainName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveFederationDomain", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool RemoveFederationDomain(string organizationId, string domainName) { object[] results = this.Invoke("RemoveFederationDomain", new object[] { organizationId, domainName}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginRemoveFederationDomain(string organizationId, string domainName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginRemoveFederationDomain(string organizationId, string domainName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("RemoveFederationDomain", new object[] { organizationId, domainName}, callback, asyncState); } - + /// - public bool EndRemoveFederationDomain(System.IAsyncResult asyncResult) - { + public bool EndRemoveFederationDomain(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void RemoveFederationDomainAsync(string organizationId, string domainName) - { + public void RemoveFederationDomainAsync(string organizationId, string domainName) { this.RemoveFederationDomainAsync(organizationId, domainName, null); } - + /// - public void RemoveFederationDomainAsync(string organizationId, string domainName, object userState) - { - if ((this.RemoveFederationDomainOperationCompleted == null)) - { + public void RemoveFederationDomainAsync(string organizationId, string domainName, object userState) { + if ((this.RemoveFederationDomainOperationCompleted == null)) { this.RemoveFederationDomainOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveFederationDomainOperationCompleted); } this.InvokeAsync("RemoveFederationDomain", new object[] { organizationId, domainName}, this.RemoveFederationDomainOperationCompleted, userState); } - - private void OnRemoveFederationDomainOperationCompleted(object arg) - { - if ((this.RemoveFederationDomainCompleted != null)) - { + + private void OnRemoveFederationDomainOperationCompleted(object arg) { + if ((this.RemoveFederationDomainCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.RemoveFederationDomainCompleted(this, new RemoveFederationDomainCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ReloadConfiguration", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void ReloadConfiguration() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ReloadConfiguration", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void ReloadConfiguration() { this.Invoke("ReloadConfiguration", new object[0]); } - + /// - public System.IAsyncResult BeginReloadConfiguration(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginReloadConfiguration(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ReloadConfiguration", new object[0], callback, asyncState); } - + /// - public void EndReloadConfiguration(System.IAsyncResult asyncResult) - { + public void EndReloadConfiguration(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void ReloadConfigurationAsync() - { + public void ReloadConfigurationAsync() { this.ReloadConfigurationAsync(null); } - + /// - public void ReloadConfigurationAsync(object userState) - { - if ((this.ReloadConfigurationOperationCompleted == null)) - { + public void ReloadConfigurationAsync(object userState) { + if ((this.ReloadConfigurationOperationCompleted == null)) { this.ReloadConfigurationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnReloadConfigurationOperationCompleted); } this.InvokeAsync("ReloadConfiguration", new object[0], this.ReloadConfigurationOperationCompleted, userState); } - - private void OnReloadConfigurationOperationCompleted(object arg) - { - if ((this.ReloadConfigurationCompleted != null)) - { + + private void OnReloadConfigurationOperationCompleted(object arg) { + if ((this.ReloadConfigurationCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ReloadConfigurationCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - public new void CancelAsync(object userState) - { + public new void CancelAsync(object userState) { base.CancelAsync(userState); } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateOrganizationCompletedEventHandler(object sender, CreateOrganizationCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class CreateOrganizationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class CreateOrganizationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal CreateOrganizationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal CreateOrganizationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public string Result - { - get - { + public string Result { + get { this.RaiseExceptionIfNecessary(); return ((string)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteOrganizationCompletedEventHandler(object sender, DeleteOrganizationCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class DeleteOrganizationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class DeleteOrganizationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal DeleteOrganizationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal DeleteOrganizationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateUserCompletedEventHandler(object sender, CreateUserCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class CreateUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + 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) - { + + internal CreateUserCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetLyncUserGeneralSettingsCompletedEventHandler(object sender, GetLyncUserGeneralSettingsCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetLyncUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetLyncUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetLyncUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetLyncUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public LyncUser Result - { - get - { + public LyncUser Result { + get { this.RaiseExceptionIfNecessary(); return ((LyncUser)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetLyncUserGeneralSettingsCompletedEventHandler(object sender, SetLyncUserGeneralSettingsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SetLyncUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SetLyncUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public bool Result { + get { + this.RaiseExceptionIfNecessary(); + return ((bool)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SetLyncUserPlanCompletedEventHandler(object sender, SetLyncUserPlanCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class SetLyncUserPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class SetLyncUserPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal SetLyncUserPlanCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal SetLyncUserPlanCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteUserCompletedEventHandler(object sender, DeleteUserCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class DeleteUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class DeleteUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal DeleteUserCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal DeleteUserCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFederationDomainsCompletedEventHandler(object sender, GetFederationDomainsCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFederationDomainsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFederationDomainsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFederationDomainsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFederationDomainsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public LyncFederationDomain[] Result - { - get - { + public LyncFederationDomain[] Result { + get { this.RaiseExceptionIfNecessary(); return ((LyncFederationDomain[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AddFederationDomainCompletedEventHandler(object sender, AddFederationDomainCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class AddFederationDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class AddFederationDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal AddFederationDomainCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal AddFederationDomainCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void RemoveFederationDomainCompletedEventHandler(object sender, RemoveFederationDomainCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class RemoveFederationDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class RemoveFederationDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal RemoveFederationDomainCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal RemoveFederationDomainCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ReloadConfigurationCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); } diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/OrganizationProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/OrganizationProxy.cs index c9d6a0f0..f7ecb33e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/OrganizationProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/OrganizationProxy.cs @@ -26,10 +26,11 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.5456 +// Runtime Version:2.0.50727.6400 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -37,7 +38,7 @@ //------------------------------------------------------------------------------ // -// This source code was auto-generated by wsdl, Version=2.0.50727.42. +// This source code was auto-generated by wsdl, Version=2.0.50727.3038. // namespace WebsitePanel.Providers.HostedSolution { using System.Xml.Serialization; @@ -47,12 +48,13 @@ namespace WebsitePanel.Providers.HostedSolution { using System; using System.Diagnostics; + using WebsitePanel.Providers.Common; using WebsitePanel.Providers.ResultObjects; - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="OrganizationsSoap", Namespace="http://tempuri.org/")] @@ -76,6 +78,10 @@ namespace WebsitePanel.Providers.HostedSolution { private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted; + private System.Threading.SendOrPostCallback SetUserPasswordOperationCompleted; + + private System.Threading.SendOrPostCallback SetUserPrincipalNameOperationCompleted; + private System.Threading.SendOrPostCallback DeleteOrganizationDomainOperationCompleted; private System.Threading.SendOrPostCallback CreateOrganizationDomainOperationCompleted; @@ -86,7 +92,7 @@ namespace WebsitePanel.Providers.HostedSolution { /// public Organizations() { - this.Url = "http://localhost:9006/Organizations.asmx"; + this.Url = "http://localhost:9003/Organizations.asmx"; } /// @@ -110,6 +116,12 @@ namespace WebsitePanel.Providers.HostedSolution { /// public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted; + /// + public event SetUserPasswordCompletedEventHandler SetUserPasswordCompleted; + + /// + public event SetUserPrincipalNameCompletedEventHandler SetUserPrincipalNameCompleted; + /// public event DeleteOrganizationDomainCompletedEventHandler DeleteOrganizationDomainCompleted; @@ -627,6 +639,98 @@ namespace WebsitePanel.Providers.HostedSolution { } } + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserPassword", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void SetUserPassword(string organizationId, string accountName, string password) { + this.Invoke("SetUserPassword", new object[] { + organizationId, + accountName, + password}); + } + + /// + public System.IAsyncResult BeginSetUserPassword(string organizationId, string accountName, string password, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetUserPassword", new object[] { + organizationId, + accountName, + password}, callback, asyncState); + } + + /// + public void EndSetUserPassword(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void SetUserPasswordAsync(string organizationId, string accountName, string password) { + this.SetUserPasswordAsync(organizationId, accountName, password, null); + } + + /// + public void SetUserPasswordAsync(string organizationId, string accountName, string password, object userState) { + if ((this.SetUserPasswordOperationCompleted == null)) { + this.SetUserPasswordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserPasswordOperationCompleted); + } + this.InvokeAsync("SetUserPassword", new object[] { + organizationId, + accountName, + password}, this.SetUserPasswordOperationCompleted, userState); + } + + private void OnSetUserPasswordOperationCompleted(object arg) { + if ((this.SetUserPasswordCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetUserPasswordCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserPrincipalName", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName) { + this.Invoke("SetUserPrincipalName", new object[] { + organizationId, + accountName, + userPrincipalName}); + } + + /// + public System.IAsyncResult BeginSetUserPrincipalName(string organizationId, string accountName, string userPrincipalName, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetUserPrincipalName", new object[] { + organizationId, + accountName, + userPrincipalName}, callback, asyncState); + } + + /// + public void EndSetUserPrincipalName(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void SetUserPrincipalNameAsync(string organizationId, string accountName, string userPrincipalName) { + this.SetUserPrincipalNameAsync(organizationId, accountName, userPrincipalName, null); + } + + /// + public void SetUserPrincipalNameAsync(string organizationId, string accountName, string userPrincipalName, object userState) { + if ((this.SetUserPrincipalNameOperationCompleted == null)) { + this.SetUserPrincipalNameOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserPrincipalNameOperationCompleted); + } + this.InvokeAsync("SetUserPrincipalName", new object[] { + organizationId, + accountName, + userPrincipalName}, this.SetUserPrincipalNameOperationCompleted, userState); + } + + private void OnSetUserPrincipalNameOperationCompleted(object arg) { + if ((this.SetUserPrincipalNameCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetUserPrincipalNameCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DeleteOrganizationDomain", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] @@ -804,11 +908,11 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void OrganizationExistsCompletedEventHandler(object sender, OrganizationExistsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class OrganizationExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -830,11 +934,11 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateOrganizationCompletedEventHandler(object sender, CreateOrganizationCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CreateOrganizationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -856,15 +960,15 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteOrganizationCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateUserCompletedEventHandler(object sender, CreateUserCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CreateUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -886,15 +990,15 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetUserGeneralSettingsCompletedEventHandler(object sender, GetUserGeneralSettingsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -916,23 +1020,31 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SetUserGeneralSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetUserPasswordCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetUserPrincipalNameCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteOrganizationDomainCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateOrganizationDomainCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetPasswordPolicyCompletedEventHandler(object sender, GetPasswordPolicyCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPasswordPolicyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -954,11 +1066,11 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetSamAccountNameByUserPrincipalNameCompletedEventHandler(object sender, GetSamAccountNameByUserPrincipalNameCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSamAccountNameByUserPrincipalNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs index 74aa52ff..efa08598 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs @@ -1,3 +1,8 @@ +// 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. @@ -24,7 +29,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.3053 +// Runtime Version:2.0.50727.6387 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -34,14 +39,14 @@ // // This source code was auto-generated by wsdl, Version=2.0.50727.3038. // -namespace WebsitePanel.Providers.Web -{ - using System.Diagnostics; +namespace WebsitePanel.Providers.Web { + 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.ResultObjects; using WebsitePanel.Providers.WebAppGallery; using WebsitePanel.Providers.Common; @@ -49,7 +54,7 @@ namespace WebsitePanel.Providers.Web /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="WebServerSoap", Namespace="http://smbsaas/websitepanel/server/")] @@ -922,17 +927,19 @@ namespace WebsitePanel.Providers.Web /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateSiteBindings", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void UpdateSiteBindings(string siteId, ServerBinding[] bindings) { + public void UpdateSiteBindings(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed) { this.Invoke("UpdateSiteBindings", new object[] { siteId, - bindings}); + bindings, + emptyBindingsAllowed}); } /// - public System.IAsyncResult BeginUpdateSiteBindings(string siteId, ServerBinding[] bindings, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginUpdateSiteBindings(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("UpdateSiteBindings", new object[] { siteId, - bindings}, callback, asyncState); + bindings, + emptyBindingsAllowed}, callback, asyncState); } /// @@ -941,18 +948,19 @@ namespace WebsitePanel.Providers.Web } /// - public void UpdateSiteBindingsAsync(string siteId, ServerBinding[] bindings) { - this.UpdateSiteBindingsAsync(siteId, bindings, null); + public void UpdateSiteBindingsAsync(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed) { + this.UpdateSiteBindingsAsync(siteId, bindings, emptyBindingsAllowed, null); } /// - public void UpdateSiteBindingsAsync(string siteId, ServerBinding[] bindings, object userState) { + public void UpdateSiteBindingsAsync(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed, object userState) { if ((this.UpdateSiteBindingsOperationCompleted == null)) { this.UpdateSiteBindingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateSiteBindingsOperationCompleted); } this.InvokeAsync("UpdateSiteBindings", new object[] { siteId, - bindings}, this.UpdateSiteBindingsOperationCompleted, userState); + bindings, + emptyBindingsAllowed}, this.UpdateSiteBindingsOperationCompleted, userState); } private void OnUpdateSiteBindingsOperationCompleted(object arg) { @@ -4273,15 +4281,15 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ChangeSiteStateCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetSiteStateCompletedEventHandler(object sender, GetSiteStateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSiteStateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4303,11 +4311,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetSiteIdCompletedEventHandler(object sender, GetSiteIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSiteIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4329,11 +4337,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetSitesAccountsCompletedEventHandler(object sender, GetSitesAccountsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSitesAccountsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4355,11 +4363,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SiteExistsCompletedEventHandler(object sender, SiteExistsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class SiteExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4381,11 +4389,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetSitesCompletedEventHandler(object sender, GetSitesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSitesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4407,11 +4415,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetSiteCompletedEventHandler(object sender, GetSiteCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSiteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4433,11 +4441,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetSiteBindingsCompletedEventHandler(object sender, GetSiteBindingsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSiteBindingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4459,11 +4467,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateSiteCompletedEventHandler(object sender, CreateSiteCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CreateSiteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4485,23 +4493,23 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateSiteCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateSiteBindingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteSiteCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void VirtualDirectoryExistsCompletedEventHandler(object sender, VirtualDirectoryExistsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class VirtualDirectoryExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4523,11 +4531,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetVirtualDirectoriesCompletedEventHandler(object sender, GetVirtualDirectoriesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetVirtualDirectoriesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4549,11 +4557,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetVirtualDirectoryCompletedEventHandler(object sender, GetVirtualDirectoryCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetVirtualDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4575,23 +4583,23 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void IsFrontPageSystemInstalledCompletedEventHandler(object sender, IsFrontPageSystemInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsFrontPageSystemInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4613,11 +4621,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void IsFrontPageInstalledCompletedEventHandler(object sender, IsFrontPageInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsFrontPageInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4639,11 +4647,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void InstallFrontPageCompletedEventHandler(object sender, InstallFrontPageCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class InstallFrontPageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4665,19 +4673,19 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UninstallFrontPageCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ChangeFrontPagePasswordCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void IsColdFusionSystemInstalledCompletedEventHandler(object sender, IsColdFusionSystemInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsColdFusionSystemInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4699,23 +4707,23 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GrantWebSiteAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void InstallSecuredFoldersCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UninstallSecuredFoldersCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFoldersCompletedEventHandler(object sender, GetFoldersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetFoldersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4737,11 +4745,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFolderCompletedEventHandler(object sender, GetFolderCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4763,19 +4771,19 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetUsersCompletedEventHandler(object sender, GetUsersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUsersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4797,11 +4805,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetUserCompletedEventHandler(object sender, GetUserCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4823,19 +4831,19 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGroupsCompletedEventHandler(object sender, GetGroupsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGroupsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4857,11 +4865,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGroupCompletedEventHandler(object sender, GetGroupCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGroupCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4883,19 +4891,19 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetHeliconApeStatusCompletedEventHandler(object sender, GetHeliconApeStatusCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4917,23 +4925,23 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void InstallHeliconApeCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void EnableHeliconApeCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DisableHeliconApeCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetHeliconApeFoldersCompletedEventHandler(object sender, GetHeliconApeFoldersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeFoldersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4955,11 +4963,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetHeliconApeHttpdFolderCompletedEventHandler(object sender, GetHeliconApeHttpdFolderCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeHttpdFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4981,11 +4989,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetHeliconApeFolderCompletedEventHandler(object sender, GetHeliconApeFolderCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5007,23 +5015,23 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateHeliconApeFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateHeliconApeHttpdFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteHeliconApeFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetHeliconApeUsersCompletedEventHandler(object sender, GetHeliconApeUsersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeUsersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5045,11 +5053,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetHeliconApeUserCompletedEventHandler(object sender, GetHeliconApeUserCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5071,19 +5079,19 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateHeliconApeUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteHeliconApeUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetHeliconApeGroupsCompletedEventHandler(object sender, GetHeliconApeGroupsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeGroupsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5105,11 +5113,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetHeliconApeGroupCompletedEventHandler(object sender, GetHeliconApeGroupCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeGroupCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5131,27 +5139,27 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateHeliconApeGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GrantWebDeployPublishingAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void RevokeWebDeployPublishingAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteHeliconApeGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckLoadUserProfileCompletedEventHandler(object sender, CheckLoadUserProfileCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CheckLoadUserProfileCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5173,23 +5181,23 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void EnableLoadUserProfileCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void InitFeedsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SetResourceLanguageCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGalleryLanguagesCompletedEventHandler(object sender, GetGalleryLanguagesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryLanguagesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5211,11 +5219,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGalleryCategoriesCompletedEventHandler(object sender, GetGalleryCategoriesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryCategoriesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5237,11 +5245,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGalleryApplicationsCompletedEventHandler(object sender, GetGalleryApplicationsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5263,11 +5271,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGalleryApplicationsFilteredCompletedEventHandler(object sender, GetGalleryApplicationsFilteredCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationsFilteredCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5289,11 +5297,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void IsMsDeployInstalledCompletedEventHandler(object sender, IsMsDeployInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsMsDeployInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5315,11 +5323,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGalleryApplicationCompletedEventHandler(object sender, GetGalleryApplicationCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5341,11 +5349,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGalleryApplicationStatusCompletedEventHandler(object sender, GetGalleryApplicationStatusCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5367,11 +5375,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DownloadGalleryApplicationCompletedEventHandler(object sender, DownloadGalleryApplicationCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DownloadGalleryApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5393,11 +5401,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGalleryApplicationParametersCompletedEventHandler(object sender, GetGalleryApplicationParametersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationParametersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5419,11 +5427,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void InstallGalleryApplicationCompletedEventHandler(object sender, InstallGalleryApplicationCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class InstallGalleryApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5445,11 +5453,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckWebManagementAccountExistsCompletedEventHandler(object sender, CheckWebManagementAccountExistsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CheckWebManagementAccountExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5471,11 +5479,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckWebManagementPasswordComplexityCompletedEventHandler(object sender, CheckWebManagementPasswordComplexityCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CheckWebManagementPasswordComplexityCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5497,23 +5505,23 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GrantWebManagementAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void RevokeWebManagementAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ChangeWebManagementAccessPasswordCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void generateCSRCompletedEventHandler(object sender, generateCSRCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class generateCSRCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5535,11 +5543,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void generateRenewalCSRCompletedEventHandler(object sender, generateRenewalCSRCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class generateRenewalCSRCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5561,11 +5569,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void getCertificateCompletedEventHandler(object sender, getCertificateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class getCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5587,11 +5595,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void installCertificateCompletedEventHandler(object sender, installCertificateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class installCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5613,11 +5621,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void installPFXCompletedEventHandler(object sender, installPFXCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class installPFXCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5639,11 +5647,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void exportCertificateCompletedEventHandler(object sender, exportCertificateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class exportCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5665,11 +5673,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void getServerCertificatesCompletedEventHandler(object sender, getServerCertificatesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class getServerCertificatesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5691,11 +5699,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteCertificateCompletedEventHandler(object sender, DeleteCertificateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DeleteCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5717,11 +5725,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ImportCertificateCompletedEventHandler(object sender, ImportCertificateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class ImportCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5743,11 +5751,11 @@ namespace WebsitePanel.Providers.Web } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckCertificateCompletedEventHandler(object sender, CheckCertificateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CheckCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Code/AutoDiscoveryHelper.cs b/WebsitePanel/Sources/WebsitePanel.Server/Code/AutoDiscoveryHelper.cs index 0e804b46..57466138 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Code/AutoDiscoveryHelper.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/Code/AutoDiscoveryHelper.cs @@ -86,9 +86,9 @@ namespace WebsitePanel.Server.Code public static string GetServerVersion() { - object[] attrs = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), true); + object[] attrs = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true); if (attrs.Length > 0) - return ((AssemblyInformationalVersionAttribute)attrs[0]).InformationalVersion; + return ((AssemblyFileVersionAttribute)attrs[0]).Version; else return typeof(AutoDiscoveryHelper).Assembly.GetName().Version.ToString(3); } diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Code/WPIHelper.cs b/WebsitePanel/Sources/WebsitePanel.Server/Code/WPIHelper.cs index 9dfd94f5..a1d56b26 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Code/WPIHelper.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/Code/WPIHelper.cs @@ -245,21 +245,21 @@ namespace WebsitePanel.Server.Code foreach (string productId in productIdsToInstall) { - Log(string.Format("Product {0} to be installed", productId)); + WriteLog(string.Format("Product {0} to be installed", productId)); Product product = _productManager.GetProduct(productId); if (null == product) { - Log(string.Format("Product {0} not found", productId)); + WriteLog(string.Format("Product {0} not found", productId)); continue; } if (product.IsInstalled(true)) { - Log(string.Format("Product {0} is installed", product.Title)); + WriteLog(string.Format("Product {0} is installed", product.Title)); } else { - Log(string.Format("Adding product {0}", product.Title)); + WriteLog(string.Format("Adding product {0}", product.Title)); productsToInstall.Add(product); } @@ -279,21 +279,21 @@ namespace WebsitePanel.Server.Code foreach (string productId in updatedProductIdsToInstall) { - Log(string.Format("Product {0} to be installed", productId)); + WriteLog(string.Format("Product {0} to be installed", productId)); Product product = _productManager.GetProduct(productId); if (null == product) { - Log(string.Format("Product {0} not found", productId)); + WriteLog(string.Format("Product {0} not found", productId)); continue; } if (product.IsInstalled(true)) { - Log(string.Format("Product {0} is installed", product.Title)); + WriteLog(string.Format("Product {0} is installed", product.Title)); } else { - Log(string.Format("Adding product {0} with dependencies", product.Title)); + WriteLog(string.Format("Adding product {0} with dependencies", product.Title)); // search and add dependencies but skip webmatrix/iisexpress branches AddProductWithDependencies(product, productsToInstall, WebMatrixChoiceProduct); } @@ -358,8 +358,15 @@ namespace WebsitePanel.Server.Code string failureReason; if (!_installManager.DownloadInstallerFile(installerContext, out failureReason)) { - Log(string.Format("DownloadInstallerFile '{0}' failed: {1}", + WriteLog(string.Format("DownloadInstallerFile '{0}' failed: {1}", installerContext.Installer.InstallerFile.InstallerUrl, failureReason)); + + throw new Exception( + string.Format("Can't install {0} DownloadInstallerFile '{1}' failed: {2}", + installerContext.ProductName, + installerContext.Installer.InstallerFile.InstallerUrl, + failureReason) + ); } } } @@ -368,10 +375,8 @@ namespace WebsitePanel.Server.Code { // Start installation _installCompleted = false; - Log("_installManager.StartInstallation()"); _installManager.StartInstallation(); - Log("_installManager.StartInstallation() done"); while (!_installCompleted) { Thread.Sleep(100); @@ -385,7 +390,7 @@ namespace WebsitePanel.Server.Code } else { - Log("Nothing to install"); + //Log("Nothing to install"); } } @@ -514,13 +519,14 @@ namespace WebsitePanel.Server.Code RemoveUnusedProviders(appInstaller.MSDeployPackage, dbTag); _installCompleted = false; - Log("_installManager.StartApplicationInstallation()"); + _installManager.StartApplicationInstallation(); while (!_installCompleted) { Thread.Sleep(1000); } - Log("_installManager.StartApplicationInstallation() _installCompleted"); + + WriteLog("InstallApplication complete"); //save logs SaveLogDirectory(); @@ -564,7 +570,7 @@ namespace WebsitePanel.Server.Code foreach (string feed in _feeds) { - Log(string.Format("Loading {0}", feed)); + WriteLog(string.Format("Loading feed {0}", feed)); if (feed.StartsWith("https://www.microsoft.com", StringComparison.OrdinalIgnoreCase)) { _productManager.Load(new Uri(feed), true, true, true, _webPIinstallersFolder); @@ -575,9 +581,9 @@ namespace WebsitePanel.Server.Code } } - Log(string.Format("{0} products loaded", _productManager.Products.Count)); + WriteLog(string.Format("{0} products loaded", _productManager.Products.Count)); - LogDebugInfo(); + //LogDebugInfo(); } private Language GetLanguage(string languageId) @@ -606,52 +612,49 @@ namespace WebsitePanel.Server.Code return installersToUse; } - private void LogDebugInfo() + + //private void LogDebugInfo() + //{ + // StringBuilder sb = new StringBuilder(); + + // sb.Append("Products: "); + + // sb.Append("Tabs: ").AppendLine(); + // foreach (Tab tab in _productManager.Tabs) + // { + // sb.AppendFormat("\t{0}, FromCustomFeed = {1}", tab.Name, tab.FromCustomFeed).AppendLine(); + // foreach (string f in tab.FeedList) + // { + // sb.AppendFormat("\t\t{0}", f).AppendLine(); + // } + // sb.AppendLine(); + // } + // sb.AppendLine(); + + // sb.Append("Keywords: ").AppendLine().Append("\t"); + // foreach (Keyword keyword in _productManager.Keywords) + // { + // sb.Append(keyword.Id).Append(","); + // } + // sb.AppendLine(); + + // sb.Append("Languages: ").AppendLine().Append("\t"); + // foreach (Language language in _productManager.Languages) + // { + // sb.Append(language.Name).Append(","); + // } + // sb.AppendLine(); + + // Log(sb.ToString()); + //} + + private static void WriteLog(string message) { - StringBuilder sb = new StringBuilder(); - - sb.Append("Products: "); - - sb.Append("Tabs: ").AppendLine(); - foreach (Tab tab in _productManager.Tabs) - { - sb.AppendFormat("\t{0}, FromCustomFeed = {1}", tab.Name, tab.FromCustomFeed).AppendLine(); - foreach (string f in tab.FeedList) - { - sb.AppendFormat("\t\t{0}", f).AppendLine(); - } - sb.AppendLine(); - } - sb.AppendLine(); - - sb.Append("Keywords: ").AppendLine().Append("\t"); - foreach (Keyword keyword in _productManager.Keywords) - { - sb.Append(keyword.Id).Append(","); - } - sb.AppendLine(); - - sb.Append("Languages: ").AppendLine().Append("\t"); - foreach (Language language in _productManager.Languages) - { - sb.Append(language.Name).Append(","); - } - sb.AppendLine(); - - Log(sb.ToString()); - } - - private static void Log(string message) - { -//#if DEBUG Debug.WriteLine(string.Format("[{0}] WpiHelper: {1}", Process.GetCurrentProcess().Id, message)); - Console.WriteLine(message); -//#endif } private void InstallManager_InstallCompleted(object sender, EventArgs e) { - Log("Installation completed"); if (null != _installManager) { /* @@ -670,11 +673,11 @@ namespace WebsitePanel.Server.Code private void InstallManager_InstallerStatusUpdated(object sender, InstallStatusEventArgs e) { - Log(string.Format("{0}: {1}. {2} Progress: {3}", - e.InstallerContext.ProductName, - e.InstallerContext.InstallationState, - e.InstallerContext.ReturnCode.DetailedInformation, - e.ProgressValue)); + //Log(string.Format("{0}: {1}. {2} Progress: {3}", + // e.InstallerContext.ProductName, + // e.InstallerContext.InstallationState, + // e.InstallerContext.ReturnCode.DetailedInformation, + // e.ProgressValue)); } private static void AddProductWithDependencies(Product product, List productsToInstall, string skipProduct) @@ -691,7 +694,7 @@ namespace WebsitePanel.Server.Code { if (string.Equals(dependency.ProductId, skipProduct, StringComparison.OrdinalIgnoreCase)) { - Log(string.Format("Product {0} is iis express dependency, skip it", dependency.Title)); + //Log(string.Format("Product {0} is iis express dependency, skip it", dependency.Title)); continue; } @@ -702,13 +705,10 @@ namespace WebsitePanel.Server.Code private void SaveLogDirectory() { - Log("SaveLogDirectory"); foreach (InstallerContext ctx in _installManager.InstallerContexts) { - Log(ctx.LogFileDirectory); _LogFileDirectory = ctx.LogFileDirectory; break; - } } diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Default.aspx.cs b/WebsitePanel/Sources/WebsitePanel.Server/Default.aspx.cs index 5267c682..efb71b4e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Default.aspx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/Default.aspx.cs @@ -49,9 +49,9 @@ namespace WebsitePanel.Server litUrl.Text = url.Substring(0, url.LastIndexOf("/")); // set version - object[] attrs = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), true); + object[] attrs = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true); if(attrs.Length > 0) - litVersion.Text = ((AssemblyInformationalVersionAttribute)attrs[0]).InformationalVersion; + litVersion.Text = ((AssemblyFileVersionAttribute)attrs[0]).Version; // asp.net mode litAspNetMode.Text = (IntPtr.Size == 8) ? "64-bit" : "32-bit"; diff --git a/WebsitePanel/Sources/WebsitePanel.Server/ExchangeServer.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/ExchangeServer.asmx.cs index 3c5c5a1f..8553b61f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/ExchangeServer.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/ExchangeServer.asmx.cs @@ -265,6 +265,21 @@ namespace WebsitePanel.Server } } + [WebMethod, SoapHeader("settings")] + public void ChangeAcceptedDomainType(string domain, ExchangeAcceptedDomainType domainType) + { + try + { + LogStart("ChangeAcceptedDomainType"); + ES.ChangeAcceptedDomainType(domain, domainType); + LogEnd("ChangeAcceptedDomainType"); + } + catch (Exception ex) + { + LogError("ChangeAcceptedDomainType", ex); + throw; + } + } [WebMethod, SoapHeader("settings")] public string[] GetAuthoritativeDomains() diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png b/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png index 45f7ad78..003b659c 100644 Binary files a/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png and b/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.Server/LyncServer.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/LyncServer.asmx.cs index 8f04045d..b55428ec 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/LyncServer.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/LyncServer.asmx.cs @@ -124,6 +124,24 @@ namespace WebsitePanel.Server } } + [WebMethod, SoapHeader("settings")] + public bool SetLyncUserGeneralSettings(string organizationId, string userUpn, LyncUser lyncUser) + { + try + { + Log.WriteStart("{0}.SetLyncUserGeneralSettings", ProviderSettings.ProviderName); + bool ret = Lync.SetLyncUserGeneralSettings(organizationId, userUpn, lyncUser); + Log.WriteEnd("{0}.SetLyncUserGeneralSettings", ProviderSettings.ProviderName); + return ret; + } + catch (Exception ex) + { + Log.WriteError(String.Format("Error: {0}.SetLyncUserGeneralSettings", ProviderSettings.ProviderName), ex); + throw; + } + } + + [WebMethod, SoapHeader("settings")] public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan) { diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Organizations.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/Organizations.asmx.cs index 775058d8..4b70e354 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Organizations.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/Organizations.asmx.cs @@ -125,6 +125,20 @@ namespace WebsitePanel.Server } + [WebMethod, SoapHeader("settings")] + public void SetUserPassword(string organizationId, string accountName, string password) + { + Organization.SetUserPassword(organizationId, accountName, password); + } + + + [WebMethod, SoapHeader("settings")] + public void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName) + { + Organization.SetUserPrincipalName(organizationId, accountName, userPrincipalName); + } + + [WebMethod, SoapHeader("settings")] public void DeleteOrganizationDomain(string organizationDistinguishedName, string domain) { diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs index d01940f1..24f75688 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs @@ -229,12 +229,12 @@ namespace WebsitePanel.Server } [WebMethod, SoapHeader("settings")] - public void UpdateSiteBindings(string siteId, ServerBinding[] bindings) + public void UpdateSiteBindings(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed) { try { Log.WriteStart("'{0}' UpdateSiteBindings", ProviderSettings.ProviderName); - WebProvider.UpdateSiteBindings(siteId, bindings); + WebProvider.UpdateSiteBindings(siteId, bindings, emptyBindingsAllowed); Log.WriteEnd("'{0}' UpdateSiteBindings", ProviderSettings.ProviderName); } catch (Exception ex) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config index e8d06e78..73475696 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config @@ -481,7 +481,9 @@ - + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index 3fbca4e7..f90f4aca 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -639,6 +639,9 @@ OCS User has been successfully created but the following errors have been occured: + + Error reading organization OCS Users + User account password has been changed @@ -1053,6 +1056,12 @@ Web Site meta-item IP address is not specified + + Invalid Global DNS entries in platform server configuration for dedicated IP address usage. Contact you platform administrator + + + Invalid public shared ip address in platform server configuration for shared IP address usage. Contact you platform administrator + Specified mail domain already exists on the service @@ -1594,7 +1603,7 @@ File Manager - Tenant Top-Level Domain creation Allowed + Disable Tenant To Create Top-Level Domain SharePoint Groups @@ -2112,6 +2121,10 @@ Web Site + + Web Site Host Header + + Applications Installer @@ -2883,6 +2896,9 @@ Hosted Organization + + Unable to delete domain, verify if domain is in use by hosted organization objects. + Error creating mailbox. See audit log for more details. @@ -3067,6 +3083,19 @@ User general settings have been successfully updated. + + User password has been successfully updated. + + + Failed to update user password. + + + User login name has been successfully updated. + + + Failed to update user login name. + + Mailbox primary e-mail address has been changed. @@ -3163,6 +3192,9 @@ Cannot delete user account as it is used in OCS. + + Cannot delete user account as it is used in Lync. + B2B Primary Zones Allowed @@ -3244,6 +3276,9 @@ Users per Organization + + Allow to Change UserPrincipalName + Domains per Organization @@ -3301,6 +3336,10 @@ Please select E-mail address you want to delete from Distribution List + + Please note not all email address are deleted + + There are no public folders to delete @@ -4621,6 +4660,9 @@ We apologize for the inconvenience but the application download has been failed. Please contact your service provider to correct the issue. + + We apologize for the inconvenience but the application download has been failed. Access is denied. Check WebSitePanel event log. + Web Application Gallery module is unavailable: @@ -4852,6 +4894,12 @@ SSL + + Allow IP Address Mode Switch + + + Enable Hostname Support + Exchange Organization @@ -5047,6 +5095,9 @@ Cannot delete Lync User, the following errors have been occured: + + Unabled to add plan + General Lync User settings have been successfully updated. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/logo.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/logo.png index 45f7ad78..003b659c 100644 Binary files a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/logo.png and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/logo.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Containers.css b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Containers.css index bd863cfd..0b8ab5e7 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Containers.css +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Styles/Containers.css @@ -396,7 +396,7 @@ .VpsBody { float: left; - background: transparent url(../images/VPS/module_header.gif) left top no-repeat; + background: transparent url(../images/Exchange/module_header.gif) left top no-repeat; clear: both; } .VpsBottom @@ -456,7 +456,7 @@ { float: left; background: transparent; - width: 600px; + width: 100%; } #VpsContainer .Right diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsAddDomain.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsAddDomain.ascx.resx index 1562d814..49b87726 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsAddDomain.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsAddDomain.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Allow customer sub-domains @@ -139,7 +139,7 @@ Tick this checkbox if you need to access your web site or mailboxes before DNS propagation takes places. DNS propagation is the time required to spread the information about DNS zone all over the Internet. It could take up to 72 hours. - Create a new web site and park this domain to the created web site. + Create a new web site. Tick this checkbox if DNS zone for this domain will be located on name servers of your hosting provider. Make sure you changed name servers in the domain registrar control panel. @@ -180,4 +180,7 @@ * + + Hostname: + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsAddDomainSelectType.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsAddDomainSelectType.ascx.resx index cc6b133e..0a0fbe79 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsAddDomainSelectType.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/DomainsAddDomainSelectType.ascx.resx @@ -112,16 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Cancel - Create a Top-Level Domain (TLD). This domain could be parked to a new web site. + Create a Top-Level Domain (TLD). Domain diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsWebPolicy.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsWebPolicy.ascx.resx index 29c96bcf..2085f6f3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsWebPolicy.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsWebPolicy.ascx.resx @@ -219,6 +219,9 @@ Group Name: + + Default Hostname: (Only when hostnames are enabled) + Page Content: @@ -273,6 +276,9 @@ General Settings + + Default Hostname + Parking Page diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SpaceQuotas.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SpaceQuotas.ascx.resx index 36060e76..54dee688 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SpaceQuotas.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SpaceQuotas.ascx.resx @@ -195,4 +195,7 @@ Exchange Storage, MB: + + Organizations: + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserCustomersSummary.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserCustomersSummary.ascx.resx index d9bd48e3..2aeeeac4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserCustomersSummary.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserCustomersSummary.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 All Customers ({0}) @@ -141,4 +141,7 @@ Username + + Company Name + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesAddPointer.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesAddPointer.ascx.resx index f4978101..58a71d90 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesAddPointer.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesAddPointer.ascx.resx @@ -126,4 +126,7 @@ Web Site Pointer: + + . + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesAddSite.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesAddSite.ascx.resx index 000c366a..680b7606 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesAddSite.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesAddSite.ascx.resx @@ -127,7 +127,7 @@ Cancel - Ignore Zone Template + Include Zone Template ASP.NET Version: @@ -142,7 +142,10 @@ If you need your web site to be accessible via dedicated IP address or you are planning to enable SSL for your site you should choose "Dedicated IP" option; otherwise leave this settings by default. In order to create IP-based site you need to purchase IP address from your host. - Note: A Zone Template is often defined by your host and contains additional Web Site Pointers to create when creating a new Web Site. Static record definitions such as 'www' conflicts when creating an additional Web Site in the same Domain. </p>Check this option to ignore the Zone Template and create the new Web Site with this Web Site Pointer only. + Note: A Zone Template is often defined by your host and contains additional Web Site Pointers to create when creating a new Web Site. Static record definitions such as 'www' conflicts when creating an additional Web Site in the same Domain. + + + . Dedicated diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebsitesSSL.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebsitesSSL.ascx.resx index d533240d..d2bb349a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebsitesSSL.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebsitesSSL.ascx.resx @@ -265,4 +265,7 @@ Passwords do not match + + Select Certificate Type: + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/BlackBerryUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/BlackBerryUsers.ascx.resx index 6afe7e29..c1665e22 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/BlackBerryUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/BlackBerryUsers.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Add BlackBerry User @@ -139,6 +139,6 @@ BlackBerry users - The BlackBerry solution allows mobile users to access communications and information wirelessly, including Microsoft Exchange email, calendar, contacts and scheduling, mobile phone, text messaging, instant messaging, internet and intranet access. + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/CreateNewBlackBerryUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/CreateNewBlackBerryUser.ascx.resx index 1fade90a..928b8630 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/CreateNewBlackBerryUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/CreateNewBlackBerryUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Creating BlackBerry user...'); @@ -130,6 +130,6 @@ BlackBarry Users - Please specify an existing Microsoft Exchange mailbox for a new BlackBerry user. + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/EditBlackBerryUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/EditBlackBerryUser.ascx.resx index 5162e334..0ee36b50 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/EditBlackBerryUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/EditBlackBerryUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 if (confirm('Are you sure you want to delete the user?')){ShowProgressDialog('Deleting BlackBerry user...');return true;} else {return false}; @@ -157,6 +157,6 @@ BlackBerry User - Specify here a short term password which will be used to active the account(s) wirelessly. The password will be created when the account is activated or if the activation does not succeed before the expiration time. + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMOrganizationDetails.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMOrganizationDetails.ascx.resx index 53052dcc..38651d02 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMOrganizationDetails.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMOrganizationDetails.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Creating CRM Organization...'); @@ -133,8 +133,7 @@ Failed - <p>CRM organization represents the top level of the Microsoft Dynamics CRM business hierarchy. The organization can be a specific business, holding company, or corporation. The organization is divided into business units.</p><p>The base currency is used for financial data, such as reporting, profit and loss statements, and balance sheets. After the base currency is set, it cannot be changed.</p><br/> -<p>The collation defines comparison and sort-ordering for items. After the collation is set, it cannot be changed.</p> + Administrator: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUserRoles.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUserRoles.ascx.resx index 86757b9e..d97317a6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUserRoles.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUserRoles.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Display Name: @@ -139,9 +139,7 @@ CRM User roles - <p>How a user accesses data is determined by a combination of the user license, security role, business unit and one or more teams.</p> - -<p>Security roles are predefined groups of common privileges based on the types of tasks users perform. The security roles listed are those that have been created for the business unit associated with the user. Note that this means users can be assigned only the security roles for the business unit with which they have been associated.</p> + Enable diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUsers.ascx.resx index b79e21ce..a8bdd7d4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUsers.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create new CRM user @@ -145,6 +145,6 @@ Primary Email Address - <p>CRM user is any person who works for a business unit who uses the Microsoft Dynamics CRM application.</p> <p>Each user has a user account. Included in the user's account is information such as the user's telephone numbers, e-mail address, and a link to the user's manager. </p> <p>Each user corresponds to a user in the Active Directory for that organization.</p><p>You can disable a user's record to prevent the user from being able to access Microsoft Dynamics CRM. You can only disable a user record, not delete it.</p> + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CreateCRMUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CreateCRMUser.ascx.resx index 4b6ab3b2..361c1c53 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CreateCRMUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CreateCRMUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create CRM User @@ -130,6 +130,6 @@ Create New CRM User - CRM user is any person who works for a business unit who uses the Microsoft Dynamics CRM application. Each user corresponds to a user in the Active Directory for that organization. All users must be associated with only one business unit. This association controls which customer data the user will have access to. + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Framework/Utils.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Framework/Utils.cs index d5e2f0ce..5fd549f7 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Framework/Utils.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Framework/Utils.cs @@ -295,5 +295,13 @@ namespace WebsitePanel.Portal (cntx.Quotas[key].QuotaTypeId != 1 && (cntx.Quotas[key].QuotaAllocatedValue > 0 || cntx.Quotas[key].QuotaAllocatedValue == -1))); } + + public static bool CheckQouta(string key, HostingPlanContext cntx) + { + return cntx.Quotas.ContainsKey(key) && + ((cntx.Quotas[key].QuotaAllocatedValue == 1 && cntx.Quotas[key].QuotaTypeId == 1) || + (cntx.Quotas[key].QuotaTypeId != 1 && (cntx.Quotas[key].QuotaAllocatedValue > 0 || cntx.Quotas[key].QuotaAllocatedValue == -1))); + } + } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/OCSHelper.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/OCSHelper.cs index ec8258c3..695e26cc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/OCSHelper.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/OCSHelper.cs @@ -60,7 +60,8 @@ namespace WebsitePanel.Portal OCSUsersPagedResult res = ES.Services.OCS.GetOCSUsersPaged(itemId, data[0], direction, name, email, startRowIndex, maximumRows); - return res.Value.PageUsers; + + return (res.Value == null) ? null : res.Value.PageUsers; } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx index 9fc7ade2..b84c69b0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx @@ -1,5 +1,6 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainsAddDomain.ascx.cs" Inherits="WebsitePanel.Portal.DomainsAddDomain" %> <%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> +<%@ Register Src="DomainsSelectDomainControl.ascx" TagName="DomainsSelectDomainControl" TagPrefix="uc1" %> <%@ Register Src="UserControls/CollapsiblePanel.ascx" TagPrefix="wsp" TagName="CollapsiblePanel" %> @@ -18,7 +19,7 @@

- + . Description... +

+ + +
+ + + +
+
+ +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs index 43544f38..9fe39c8f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs @@ -41,6 +41,23 @@ namespace WebsitePanel.Portal { // bind controls BindControls(); + + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + + if (Utils.CheckQouta(Quotas.WEB_ENABLEHOSTNAMESUPPORT, cntx)) + { + lblHostName.Visible = txtHostName.Visible = true; + UserSettings settings = ES.Services.Users.GetUserSettings(PanelSecurity.LoggedUserId, UserSettings.WEB_POLICY); + txtHostName.Text = String.IsNullOrEmpty(settings["HostName"]) ? "" : settings["HostName"]; + } + else + { + lblHostName.Visible = txtHostName.Visible = false; + txtHostName.Text = ""; + } + + + } catch (Exception ex) { @@ -82,22 +99,43 @@ namespace WebsitePanel.Portal // load package context PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); - if ((type == DomainType.DomainPointer || (type == DomainType.Domain && cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaAllocatedValue == 0)) && !IsPostBack) + if ((type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) && !IsPostBack) { - // bind mail domains - MailDomainsList.DataSource = ES.Services.MailServers.GetMailDomains(PanelSecurity.PackageId, false); - MailDomainsList.DataBind(); + // bind web sites + WebSitesList.DataSource = ES.Services.WebServers.GetWebSites(PanelSecurity.PackageId, false); + WebSitesList.DataBind(); } + if ((type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) && !IsPostBack) + { + // bind mail domains + MailDomainsList.DataSource = ES.Services.MailServers.GetMailDomains(PanelSecurity.PackageId, false); + MailDomainsList.DataBind(); + } + + // create web site option CreateWebSitePanel.Visible = (type == DomainType.Domain || type == DomainType.SubDomain) && cntx.Groups.ContainsKey(ResourceGroups.Web); - CreateWebSite.Enabled = true; - CreateWebSite.Checked &= CreateWebSitePanel.Visible; + if (PointWebSite.Checked) + { + CreateWebSite.Checked = false; + CreateWebSite.Enabled = false; + } + else + { + CreateWebSite.Enabled = true; + CreateWebSite.Checked &= CreateWebSitePanel.Visible; + } + + // point Web site + PointWebSitePanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) + && cntx.Groups.ContainsKey(ResourceGroups.Web) && WebSitesList.Items.Count > 0; + WebSitesList.Enabled = PointWebSite.Checked; // point mail domain - PointMailDomainPanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain && cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaAllocatedValue == 0)) + PointMailDomainPanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) && cntx.Groups.ContainsKey(ResourceGroups.Mail) && MailDomainsList.Items.Count > 0; MailDomainsList.Enabled = PointMailDomain.Checked; @@ -167,19 +205,27 @@ namespace WebsitePanel.Portal // load package context PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); - if (type == DomainType.DomainPointer || (type == DomainType.Domain && cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaAllocatedValue == 0)) + if (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) { - if (PointMailDomain.Checked && MailDomainsList.Items.Count > 0) - pointMailDomainId = Utils.ParseInt(MailDomainsList.SelectedValue, 0); + + if (PointWebSite.Checked && WebSitesList.Items.Count > 0) + pointWebSiteId = Utils.ParseInt(WebSitesList.SelectedValue, 0); } + if (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) + { + if (PointMailDomain.Checked && MailDomainsList.Items.Count > 0) + pointMailDomainId = Utils.ParseInt(MailDomainsList.SelectedValue, 0); + } + + // add domain int domainId = 0; try { domainId = ES.Services.Servers.AddDomainWithProvisioning(PanelSecurity.PackageId, - domainName, type, CreateWebSite.Checked, pointWebSiteId, pointMailDomainId, - EnableDns.Checked, CreateInstantAlias.Checked, AllowSubDomains.Checked, ""); + domainName.ToLower(), type, CreateWebSite.Checked, pointWebSiteId, pointMailDomainId, + EnableDns.Checked, CreateInstantAlias.Checked, AllowSubDomains.Checked, (PointWebSite.Checked && WebSitesList.Items.Count > 0) ? string.Empty : txtHostName.Text.ToLower()); if (domainId < 0) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs index 12fa4ca9..da29aa39 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs @@ -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, @@ -184,6 +184,51 @@ namespace WebsitePanel.Portal { ///
protected global::System.Web.UI.WebControls.Localize DescribeCreateWebSite; + /// + /// lblHostName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblHostName; + + /// + /// txtHostName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtHostName; + + /// + /// PointWebSitePanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel PointWebSitePanel; + + /// + /// PointWebSite control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox PointWebSite; + + /// + /// WebSitesList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList WebSitesList; + /// /// PointMailDomainPanel control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomainSelectType.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomainSelectType.ascx.cs index 91a8bd2f..d18afc95 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomainSelectType.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomainSelectType.ascx.cs @@ -63,7 +63,7 @@ namespace WebsitePanel.Portal { if (user.Role == UserRole.User) { - DomainLink.Enabled = Utils.CheckQouta(Quotas.OS_ALLOWTENANTCREATEDOMAINS, cntx); + DomainLink.Enabled = !Utils.CheckQouta(Quotas.OS_NOTALLOWTENANTCREATEDOMAINS, cntx); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs index 4fc70883..c9a1f443 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs @@ -108,8 +108,10 @@ namespace WebsitePanel.Portal } // instant alias + PackageSettings settings = ES.Services.Packages.GetPackageSettings(PanelSecurity.PackageId, PackageSettings.INSTANT_ALIAS); + bool instantAliasAllowed = !String.IsNullOrEmpty(domain.InstantAliasName); - bool instantAliasExists = (domain.InstantAliasId > 0); + bool instantAliasExists = (domain.InstantAliasId > 0) && (settings != null && !String.IsNullOrEmpty(settings["InstantAlias"])); if (instantAliasAllowed && !domain.IsDomainPointer && !domain.IsInstantAlias) { @@ -119,9 +121,18 @@ namespace WebsitePanel.Portal // load instant alias DomainInfo instantAlias = ES.Services.Servers.GetDomain(domain.InstantAliasId); + WebSiteAliasPanel.Visible = false; if (instantAlias != null) { - WebSiteAliasPanel.Visible = (instantAlias.WebSiteId > 0); + DomainInfo[] Domains = ES.Services.Servers.GetDomainsByDomainId(domain.InstantAliasId); + foreach (DomainInfo d in Domains) + { + if (d.WebSiteId > 0) + { + WebSiteAliasPanel.Visible = true; + } + } + MailDomainAliasPanel.Visible = (instantAlias.MailDomainId > 0); } @@ -151,7 +162,7 @@ namespace WebsitePanel.Portal { if (user.Role == UserRole.User) { - btnDelete.Enabled = Utils.CheckQouta(Quotas.OS_ALLOWTENANTCREATEDOMAINS, cntx); + btnDelete.Enabled = !Utils.CheckQouta(Quotas.OS_NOTALLOWTENANTCREATEDOMAINS, cntx); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs index 866c24b9..7c52e8f0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs @@ -38,6 +38,7 @@ using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using WebsitePanel.EnterpriseServer; +using WebsitePanel.Providers.Web; namespace WebsitePanel.Portal { @@ -49,12 +50,25 @@ namespace WebsitePanel.Portal set { ViewState["HideWebSites"] = value; } } + public bool HideInstantAlias + { + get { return (ViewState["HideInstantAlias"] != null) ? (bool)ViewState["HideInstantAlias"] : false; } + set { ViewState["HideInstantAlias"] = value; } + } + public bool HideMailDomains { get { return (ViewState["HideMailDomains"] != null) ? (bool)ViewState["HideMailDomains"] : false; } set { ViewState["HideMailDomains"] = value; } } + public bool HideMailDomainPointers + { + get { return (ViewState["HideMailDomainPointers"] != null) ? (bool)ViewState["HideMailDomainPointers"] : false; } + set { ViewState["HideMailDomainPointers"] = value; } + } + + public bool HideDomainPointers { get { return (ViewState["HideDomainPointers"] != null) ? (bool)ViewState["HideDomainPointers"] : false; } @@ -102,6 +116,44 @@ namespace WebsitePanel.Portal { DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PackageId); + WebSite[] sites = null; + Hashtable htSites = new Hashtable(); + Hashtable htMailDomainPointers = new Hashtable(); + if (HideWebSites) + { + sites = ES.Services.WebServers.GetWebSites(PackageId, false); + + foreach (WebSite w in sites) + { + if (htSites[w.Name.ToLower()] == null) htSites.Add(w.Name.ToLower(), 1); + + DomainInfo[] pointers = ES.Services.WebServers.GetWebSitePointers(w.Id); + foreach (DomainInfo p in pointers) + { + if (htSites[p.DomainName.ToLower()] == null) htSites.Add(p.DomainName.ToLower(), 1); + } + } + } + + if (HideMailDomainPointers) + { + Providers.Mail.MailDomain[] mailDomains = ES.Services.MailServers.GetMailDomains(PackageId, false); + + foreach (Providers.Mail.MailDomain mailDomain in mailDomains) + { + DomainInfo[] pointers = ES.Services.MailServers.GetMailDomainPointers(mailDomain.Id); + if (pointers != null) + { + foreach (DomainInfo p in pointers) + { + if (htMailDomainPointers[p.DomainName.ToLower()] == null) htMailDomainPointers.Add(p.DomainName.ToLower(), 1); + + } + } + } + } + + ddlDomains.Items.Clear(); // add "select" item @@ -109,15 +161,35 @@ namespace WebsitePanel.Portal foreach (DomainInfo domain in domains) { - if (HideWebSites && domain.WebSiteId > 0) + if (HideWebSites) + { + if (domain.WebSiteId > 0) + { + continue; + } + else + { + if (htSites != null) + { + if (htSites[domain.DomainName.ToLower()] != null) continue; + } + } + } + + + if (HideMailDomainPointers) + { + if (htMailDomainPointers[domain.DomainName.ToLower()] != null) continue; + } + + + if (HideInstantAlias && domain.IsInstantAlias) continue; - else if (domain.IsInstantAlias) - continue; // remove instant aliases at all else if (HideMailDomains && domain.MailDomainId > 0) continue; - else if (HideDomainPointers && (domain.IsDomainPointer || domain.IsInstantAlias)) + else if (HideDomainPointers && (domain.IsDomainPointer)) continue; - else if (HideDomainsSubDomains && !(domain.IsDomainPointer || domain.IsInstantAlias)) + else if (HideDomainsSubDomains && !(domain.IsDomainPointer)) continue; ddlDomains.Items.Add(new ListItem(domain.DomainName, domain.DomainId.ToString())); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeActiveSyncSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeActiveSyncSettings.ascx.resx index 7a93b328..23412adb 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeActiveSyncSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeActiveSyncSettings.ascx.resx @@ -151,9 +151,7 @@ Windows SharePoint Services - <p>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. </p><p> -ActiveSync mailbox policy allows you to apply a common set of security settings to all users in organization. -</p> + Refresh interval: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddDomainName.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddDomainName.ascx.resx index 1b687b23..5068ac02 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddDomainName.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddDomainName.ascx.resx @@ -121,7 +121,7 @@ Cancel - Select a domain name, e.g. "mydomain.com" or "sub.mydomain.com" + Add Domain Name diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddMailboxPlan.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddMailboxPlan.ascx.resx index 0b7d21df..5de71b1e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddMailboxPlan.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddMailboxPlan.ascx.resx @@ -136,7 +136,7 @@ POP3 - <p> A Mailbox plan is a template that defines the characteristics of a mailbox </p> <p>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. </p><p> Empty value indicates <b>'Unlimited'</b>, percentages have to be a value between 0 and 100 (a value of 0 can block the mailbox from sending and receiving email) </p> <p> Unllimited values can only be used when the hosting plan allows to do so</p> + days diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactGeneralSettings.ascx.resx index 68b60ab8..ac4b01a6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactGeneralSettings.ascx.resx @@ -127,7 +127,7 @@ Hide from Address Book - <p><b>Display Name</b> will be shown in the GAL in Outlook and OWA.</p><p>You can specify both internal and external e-mail addresses in "E-Mail Address" field.</p><p>You can specify contact's manager to build organizational structure of your company.</p> + Address: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactMailFlowSettings.ascx.resx index 9ea225b7..4ca5a9ec 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactMailFlowSettings.ascx.resx @@ -127,7 +127,7 @@ Require that all senders are authenticated - <p>When editing Accepted and Rejected lists of accounts, please make sure that the same account (mailbox, contact or distribution list) is not included in both lists.</p> + Edit Contact diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContacts.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContacts.ascx.resx index 20eeb913..af19fe41 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContacts.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContacts.ascx.resx @@ -139,7 +139,7 @@ E-mail Address - <p><b>Company Contacts</b> will be visible in GAL to all members of Exchange organization.</p><p>You can also create contacts to use them as forwarding accounts in mailbox properties.</p> + No contacts have been created. To create a new contact click "Create New Contact" button. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateContact.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateContact.ascx.resx index 2048b51e..088a6ac4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateContact.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateContact.ascx.resx @@ -124,7 +124,7 @@ Create Contact - <p><b>Display Name</b> will be shown in the GAL in Outlook and OWA.</p><p>You can specify both internal and external e-mail addresses in "E-Mail Address" field.</p> + Display Name: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateDistributionList.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateDistributionList.ascx.resx index c089926b..b2b55482 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateDistributionList.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateDistributionList.ascx.resx @@ -124,7 +124,7 @@ Create Distribution List - <p><b>Display Name</b> will be shown in the GAL in Outlook and OWA.</p><p>You can add new Domain Names on "Domain Names" page. </p><p><b>Primary E-Mail Address</b> is shown in the GAL and in "From" field of all messages sent from this DL.</p> + E-mail Address: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx index 4c537ca9..a00e1a83 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx @@ -130,13 +130,7 @@ Equipment Mailbox - <p><b>Display Name</b> is a “friendly” name used by other programs, such as Microsoft Exchange or SharePoint.</p> - -<p><b>E-Mail Address</b> is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.</p> - -<p>New organization domains can be added on "Domain Names" page.</p> - -<p>Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols. + Create mailbox for new user diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreatePublicFolder.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreatePublicFolder.ascx.resx index cedaa302..5fe4ccdc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreatePublicFolder.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreatePublicFolder.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Creating public folder...'); @@ -127,7 +127,7 @@ Mail Enabled Public Folder - <p>You can create both "General Purpose" and "Mail Enabled" public folders. You can post and send messages to mail enabled public folder, but only post new messages to general purpose folder.</p> + E-mail Address: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListEmailAddresses.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListEmailAddresses.ascx.resx index 56dab2cf..8d02675c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListEmailAddresses.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListEmailAddresses.ascx.resx @@ -127,7 +127,7 @@ Set As Primary - <b>Primary E-Mail Address</b> 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.</p><p>You can add new Domain Names on "Domain Names" page.</p><p>E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.</p> + E-mail Address diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListGeneralSettings.ascx.resx index 56de9930..8b353baf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListGeneralSettings.ascx.resx @@ -127,7 +127,7 @@ Hide from Address Book - <p><b>Display Name</b> will be shown in the GAL in Outlook and OWA.</p><p>You can specify distribution list's manager to build organizational structure of your company.</p> + Managed By: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListMailFlowSettings.ascx.resx index 3df43c86..b8d8140e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListMailFlowSettings.ascx.resx @@ -127,7 +127,7 @@ Require that all senders are authenticated - <p>When editing Accepted and Rejected lists of accounts, please make sure that the same account (mailbox, contact or distribution list) is not included in both lists.</p> + Edit Distribution List diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx index 9475179a..5814bfdf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx @@ -112,13 +112,13 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - <p>When you grant <b>Full Access</b> permission to a user, that user can open this mailbox and access all of its content.</p> <br><p>When you grant <b>Send As</b> permission to a user, that user can send messages as this mailbox. </p><br><p>We do not recommend to use this setting together “Send on behalf” (“Send as”) – it may work unpredictable.</p> + Grant this permission to: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionLists.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionLists.ascx.resx index b5f5a8ad..44821628 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionLists.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionLists.ascx.resx @@ -139,7 +139,7 @@ E-mail Address - <p><b>Distribution List</b> is a group of mailboxes, contacts and other distribution lists. Distribution lists are ideal for creating "Sales", "Support" and other "virtual" organization-wide mailboxes.</p><p>Each distribution list can have any number of e-mail Addresses. These e-mail addresses will be used for receiving incoming messages and distributing them to all DL members.</p><p><b>Primary E-Mail Address</b> is shown in the GAL and in "From" field of all messages sent from this DL.</p> + No distribution lists have been created. To create a new distribution list click "Create New Distribution List" button. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainNames.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainNames.ascx.resx index d8f453a2..cb83dba8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainNames.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainNames.ascx.resx @@ -142,9 +142,7 @@ Domain Name - <p>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.</p> -<p>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.</p> -<p>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.</p> + Total Domain Names Used: @@ -155,4 +153,13 @@ Domain Names + + Domain Type + + + Change Type + + + Change + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainRecords.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainRecords.ascx.resx index 3096f457..bf3710dc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainRecords.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainRecords.ascx.resx @@ -130,7 +130,7 @@ Save - <p>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.</p> + No DNS records defined. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxEmailAddresses.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxEmailAddresses.ascx.resx index 31627731..51e678d5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxEmailAddresses.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxEmailAddresses.ascx.resx @@ -130,7 +130,7 @@ Allow these settings to be managed from <b>Personal Mailbox Manager</b> - <b>Primary E-Mail Address</b> 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.</p><p>You can add new Domain Names on "Domain Names" page. </p><p>E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.</p> + E-mail Address @@ -139,7 +139,7 @@ The list of e-mails is empty. Add at least one e-mail address. - Primary E-mail Address (UPN) + Primary E-mail Address Add New E-mail Address diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx index 952e1037..cb0a8c7b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx @@ -133,7 +133,7 @@ Allow these settings to be managed from <b>Personal Mailbox Manager</b> - <p>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.</p> + Mailbox plan: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx index 3dfe91c1..9ed871cb 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx @@ -136,7 +136,7 @@ Require that all senders are authenticated - <p>When "Deliver messages to both forwarding address and mailbox" checkbox is unchecked all incoming mail will be delivered to forwarding e-mail and deleted from local mailbox.</p><p>When editing Accepted and Rejected lists of accounts, please make sure that the same account (mailbox, contact or distribution list) is not included in both lists.</p> + Forward To: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobile.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobile.ascx.resx index 7b809afa..28ea3657 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobile.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobile.ascx.resx @@ -133,7 +133,7 @@ There are no mobile devices. - <p>Manage mobile devices here.</p><p>To add a new device, begin a partnership with Microsoft Exchange from the device and it will appear in the device list.</p><p>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.</p> + Last Sync Time diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobileDetails.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobileDetails.ascx.resx index 56efeeba..13302e20 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobileDetails.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobileDetails.ascx.resx @@ -130,7 +130,7 @@ Wipe All Data from Device - <p>Manage the mobile device here.</p><p>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.</p> + Device wipe acnowledge time: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx index 5e891cc2..9c1cac80 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx @@ -124,7 +124,7 @@ Save Changes - <p>When you grant <b>Full Access</b> permission to a user, that user can open this mailbox and access all of its content.</p> <br><p>When you grant <b>Send As</b> permission to a user, that user can send messages as this mailbox. </p> <br><p>We do not recommend to use this setting together “Send on behalf” (“Send as”) – it may work unpredictable</p> + Grant this permission to: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPlans.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPlans.ascx.resx index 714cad30..f2b0cc1d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPlans.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPlans.ascx.resx @@ -145,7 +145,7 @@ No mailbox plans have been added yet. To add a new mailbox plan click "Add New Mailbox plan" button. - <p> A Mailbox plan is a template that defines the characteristics of a mailbox </p> <p>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. </p> + Source plan: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxSetupInstructions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxSetupInstructions.ascx.resx index de0dd29b..cb156567 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxSetupInstructions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxSetupInstructions.ascx.resx @@ -121,7 +121,7 @@ Send - <p>You can send setup instructions to the newly created mailbox user.</p> + CC: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxes.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxes.ascx.resx index 1aaeac3a..ef18271b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxes.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxes.ascx.resx @@ -157,13 +157,7 @@ Subscriber - <p><b>Mailboxes</b> are used to receive and send electronic messages. Each mailbox is a separate Exchange account which may be a person, room or inventory unit.</p> - -<p><b>Primary E-Mail Address</b> is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint. Also, Primary E-Mail Address is shown in "From" field of messages sent from this mailbox.</p> - -<p>You can always change your primary e-mail address on "E-Mail Addresses" tab of mailbox settings.</p> - -<p>Note that deleting mailbox will not delete corresponding Active Directory account. You can delete Active Directory account on “Users” page.</p> + Total Mailboxes Created: @@ -174,4 +168,10 @@ Mailboxes + + Login + + + Login + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderEmailAddresses.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderEmailAddresses.ascx.resx index 0cb25609..090b5944 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderEmailAddresses.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderEmailAddresses.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Add E-mail Address @@ -127,7 +127,7 @@ Set As Primary - <b>Primary E-Mail Address</b> 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.</p><p>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.</p><p>E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.</p> + E-mail Address diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderGeneralSettings.ascx.resx index f8ba156f..e7310e41 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderGeneralSettings.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Updating public folder settings...'); @@ -130,7 +130,7 @@ Mail Enabled Public Folder - <p>To rename public folder just specify its new name in "Folder Name" folder.</p><p><b>Authors</b> list contains Exchange mailboxes that are able to post/send messages to public folder. All other organization members can view folder contents only.</p> + Authors: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailEnable.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailEnable.ascx.resx index 06dbc71b..13bc78db 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailEnable.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailEnable.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Cancel @@ -127,7 +127,7 @@ Enable Mail Public Folder - To create a new public folder ... + E-mail Address: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailFlowSettings.ascx.resx index e0913b81..b10052b3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailFlowSettings.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Updating public folder settings...'); @@ -127,7 +127,7 @@ Require that all senders are authenticated - <p>When editing Accepted and Rejected lists of accounts, please make sure that the same account (mailbox, contact or distribution list) is not included in both lists.</p> + Edit Public Folder diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolders.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolders.ascx.resx index 51a809dc..36e3aecc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolders.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolders.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create New Public Folder @@ -127,7 +127,7 @@ Delete Selected Folders - <p><b>Public Folders</b> can be used to share various information across Exchange organization.</p><p>All public folders of each Exchange organization are nested within a default root organization folder which is not visible to other organizations and which you cannot maintain.</p><p>If you need to delete a whole branch of folders you may check only top ones.</p> + Total Public Folders Created: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsage.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsage.ascx.resx index 4046f8fd..71773c43 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsage.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsage.ascx.resx @@ -127,7 +127,7 @@ ShowProgressDialog('Please wait...'); - <p>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.</p><p>Click on the link with used disk space to see actual usage breakdown by all organization mailboxes.</p> + Allocated Disk Space (MB): diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsageBreakdown.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsageBreakdown.ascx.resx index 6688dce6..c5860ce9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsageBreakdown.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsageBreakdown.ascx.resx @@ -121,7 +121,7 @@ OK - <p> + There are no public folders in the organization. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationAddDomainName.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationAddDomainName.ascx.resx new file mode 100644 index 00000000..5068ac02 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationAddDomainName.ascx.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + + + + Add Domain Name + + + Domain Names + + + Please enter correct domain name, e.g. "mydomain.com" or "sub.mydomain.com" + + + * + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx index 4b45044c..484c8c47 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx @@ -124,7 +124,7 @@ Create Organization - <p><b>Organization name</b> is used just as display name for references purposes. It will not be used somewhere on Exchange Server.</p> <p><b>Organization ID</b> is an unique organization identifier. Organization ID will be used as GAL name.</p> + Organization ID: * @@ -156,4 +156,7 @@ * + + Domain Name: + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx index 7754d53e..2737698d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx @@ -127,13 +127,7 @@ Send Summary Letter - <p><b>Display Name</b> is a “friendly” name used by other programs, such as Microsoft Exchange or SharePoint.</p> - -<p><b>E-Mail Address</b> is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.</p> - -<p>New organization domains can be added on "Domain Names" page.</p> - -<p>Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.</p> + E-mail Address: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx new file mode 100644 index 00000000..cb83dba8 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add New Domain + + + Set Default Domain + + + if(!confirm('Are you sure you want to delete selected domain?')) return false; else ShowProgressDialog('Deleting Domain...'); + + + Delete + + + Delete Domain Name + + + No domains have been added yet. To add a new domain click "Add New Domain" button. + + + Default Domain + + + Domain Name + + + + + + Total Domain Names Used: + + + Domain Names + + + Domain Names + + + Domain Type + + + Change Type + + + Change + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx index 9c8ad7bf..7bd2b8e7 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx @@ -118,9 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - <p>Welcome to the organization home page!</p> -<p>Using the left menu you can manage organization domain names and users.</p> -<p>Organization statistics displays current status of the organization.</p> + Created: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx index 7e4229e9..fb511e76 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx @@ -133,9 +133,7 @@ Set Password - <p><b>Display Name</b> is a “friendly” name used by other programs, such as Microsoft Exchange or SharePoint.</p> -<p>Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.</p> -<p>You can specify manager account to build organizational structure of your company.</p> + Address: @@ -236,4 +234,16 @@ * + + Login Name: + + + Set Password + + + Set Login Name + + + Update Services + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserSetupInstructions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserSetupInstructions.ascx.resx index d59541dc..b6686d03 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserSetupInstructions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserSetupInstructions.ascx.resx @@ -121,7 +121,7 @@ Send - <p>You can send setup instructions to the newly created user.</p> + CC: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUsers.ascx.resx index 581e06b6..69a7581f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUsers.ascx.resx @@ -157,13 +157,7 @@ Primary E-mail Address - <p>Active Directory user accounts are used to:</p> -<p>• Authenticate the identity of a user.<br> -• Authorize or deny access to domain resources.<br> -• Administer other security principals.<br> -• Audit actions performed using the user account.</p> -<p>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.</p> -<p>User account can also represent Exchange mailbox, which may be a person, room or inventory unit.</p> + Total Users Created in this Organization: @@ -180,4 +174,10 @@ Total Users Created for this Tenant: + + Login + + + Login + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/Organizations.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/Organizations.ascx.resx index f87c9b7d..9a44ec38 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/Organizations.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/Organizations.ascx.resx @@ -157,9 +157,7 @@ Owner - <p><b>Organization</b> is a group of Active Directory users, contacts and groups.<br><br> -All accounts within one organization are located in the same Organizational Unit and are not visible to members of other organizations.<br><br> -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</p> + Total Organizations Created: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx.cs index 8d12dfcf..34e433ab 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx.cs @@ -27,6 +27,10 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; +using System.Data; +using System.Text; +using System.Collections.Generic; + using WebsitePanel.EnterpriseServer; using WebsitePanel.Providers.HostedSolution; @@ -38,11 +42,20 @@ namespace WebsitePanel.Portal.ExchangeServer { DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PanelSecurity.PackageId); - OrganizationDomainName[] list = ES.Services.Organizations.GetOrganizationDomains(PanelRequest.ItemID); + Organization[] orgs = ES.Services.Organizations.GetOrganizations(PanelSecurity.PackageId, false); + + List list = new List(); + + foreach (Organization o in orgs) + { + OrganizationDomainName[] tmpList = ES.Services.Organizations.GetOrganizationDomains(o.Id); + + foreach (OrganizationDomainName name in tmpList) list.Add(name); + } foreach (DomainInfo d in domains) { - if (!d.IsDomainPointer & !d.IsInstantAlias) + if (!d.IsDomainPointer) { bool bAdd = true; foreach (OrganizationDomainName acceptedDomain in list) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx index 47c26b55..cd5d026b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx @@ -78,8 +78,17 @@ + + + + + + +
+ +
- @@ -121,7 +130,7 @@ - @@ -165,7 +174,7 @@ - @@ -204,14 +213,6 @@ - - - - - -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx.designer.cs index 6186bb22..60050e3b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx.designer.cs @@ -1,3 +1,31 @@ +// 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. + //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -228,6 +256,24 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::System.Web.UI.WebControls.TextBox txtLastName; + /// + /// locNotes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locNotes; + + /// + /// txtNotes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtNotes; + /// /// secCompanyInfo control. /// @@ -570,24 +616,6 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::WebsitePanel.Portal.ExchangeServer.UserControls.CountrySelector country; - /// - /// locNotes control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize locNotes; - - /// - /// txtNotes control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtNotes; - /// /// btnSave control. /// @@ -605,14 +633,5 @@ namespace WebsitePanel.Portal.ExchangeServer { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx index 62e671f9..b2deb2cf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx @@ -147,7 +147,15 @@ - + + + + + +
+ +
+
// This code was generated by a tool. @@ -327,6 +355,24 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::WebsitePanel.Portal.ExchangeServer.UserControls.MailboxPlanSelector mailboxPlanSelector; + /// + /// chkSendInstructions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkSendInstructions; + + /// + /// sendInstructionEmail control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.EmailControl sendInstructionEmail; + /// /// btnCreate control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx index 54abfc9d..c060f31b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx @@ -33,7 +33,7 @@ Width="100%" EmptyDataText="gvDomains" CssSelectorClass="NormalGridView" OnRowCommand="gvDomains_RowCommand"> - + @@ -41,13 +41,27 @@ + + +
+ +
+
+
+ + +
+ +
+
+
/>
-
+   // This code was generated by a tool. @@ -110,14 +138,5 @@ namespace WebsitePanel.Portal.ExchangeServer { /// To modify move field declaration from designer file to code-behind file. /// protected global::WebsitePanel.Portal.QuotaViewer domainsQuota; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx index ce2359a1..19fd2a07 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx @@ -73,7 +73,7 @@ - + @@ -87,7 +87,7 @@
  - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.cs index eb6eb688..b0d31a98 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.cs @@ -91,7 +91,7 @@ namespace WebsitePanel.Portal.ExchangeServer try { int result = ES.Services.ExchangeServer.AddMailboxEmailAddress( - PanelRequest.ItemID, PanelRequest.AccountID, email.Email); + PanelRequest.ItemID, PanelRequest.AccountID, email.Email.ToLower()); if (result < 0) { @@ -163,13 +163,30 @@ namespace WebsitePanel.Portal.ExchangeServer { // get selected e-mail addresses List emails = new List(); + bool containsUPN = false; + EntServer.ExchangeEmailAddress[] tmpEmails = ES.Services.ExchangeServer.GetMailboxEmailAddresses( PanelRequest.ItemID, PanelRequest.AccountID); + for (int i = 0; i < gvEmails.Rows.Count; i++) { GridViewRow row = gvEmails.Rows[i]; CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect"); if (chkSelect.Checked) + { emails.Add(gvEmails.DataKeys[i].Value.ToString()); + foreach (EntServer.ExchangeEmailAddress tmpEmail in tmpEmails) + { + if (gvEmails.DataKeys[i].Value.ToString() == tmpEmail.EmailAddress) + { + if (tmpEmail.IsUserPrincipalName) + { + containsUPN = true; + break; + } + + } + } + } } if (emails.Count == 0) @@ -187,6 +204,11 @@ namespace WebsitePanel.Portal.ExchangeServer messageBox.ShowResultMessage(result); return; } + else + { + if (containsUPN) + messageBox.ShowWarningMessage("NOT_ALL_EMAIL_ADDRESSES_DELETED"); + } // rebind BindEmails(); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs index 4a04d015..308f4659 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs @@ -1,3 +1,31 @@ +// 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. + //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -182,14 +210,5 @@ namespace WebsitePanel.Portal.ExchangeServer { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CheckBox chkPmmAllowed; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPlans.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPlans.ascx.cs index f06a251c..b384d207 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPlans.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxPlans.ascx.cs @@ -142,6 +142,7 @@ namespace WebsitePanel.Portal.ExchangeServer try { + /* ExchangeMailboxPlan plan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(PanelRequest.ItemID, mailboxPlanId); if (plan.MailboxPlanType > 0) @@ -150,7 +151,7 @@ namespace WebsitePanel.Portal.ExchangeServer BindMailboxPlans(); return; } - + */ ES.Services.ExchangeServer.SetOrganizationDefaultExchangeMailboxPlan(PanelRequest.ItemID, mailboxPlanId); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx index 851a9b78..09dc751d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx @@ -46,6 +46,7 @@ Email AccountName Account Number + Login @@ -67,6 +68,15 @@ + + + + + <%# Eval("UserPrincipalName") %> + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.cs index 6a970dc9..f225eb71 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.cs @@ -47,7 +47,7 @@ namespace WebsitePanel.Portal.ExchangeServer { if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1) { - gvMailboxes.Columns[2].Visible = false; + gvMailboxes.Columns[3].Visible = false; } } } @@ -139,7 +139,15 @@ namespace WebsitePanel.Portal.ExchangeServer // bind stats BindStats(); - } + } + + public string GetOrganizationUserEditUrl(string accountId) + { + return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_user", + "AccountID=" + accountId, + "ItemID=" + PanelRequest.ItemID, + "Context=User"); + } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeStorageUsage.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeStorageUsage.ascx.cs index 6a70ca68..a56abba5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeStorageUsage.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeStorageUsage.ascx.cs @@ -51,7 +51,7 @@ namespace WebsitePanel.Portal.ExchangeServer { OrganizationStatistics stats = ES.Services.ExchangeServer.GetOrganizationStatistics(PanelRequest.ItemID); - btnUsedSize.Text = stats.UsedDiskSpace.ToString(); + btnUsedSize.Text = (stats.UsedDiskSpace < 0) ? GetLocalizedString("Unlimited.Text") : stats.UsedDiskSpace.ToString(); } protected void btnRecalculate_Click(object sender, EventArgs e) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx new file mode 100644 index 00000000..dd55b0ef --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx @@ -0,0 +1,44 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationAddDomainName.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationAddDomainName" %> +<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> +<%@ 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" %> + + + +
+
+
+ +
+
+ +
+
+
+
+ + +
+
+ + + + + + +
+ +
+
+
+ + + +
+
+
+ +
+
+
\ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx.cs new file mode 100644 index 00000000..e5046171 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx.cs @@ -0,0 +1,121 @@ +// 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.Data; +using System.Text; +using System.Collections.Generic; + +using WebsitePanel.EnterpriseServer; +using WebsitePanel.Providers.HostedSolution; + +namespace WebsitePanel.Portal.ExchangeServer +{ + public partial class OrganizationAddDomainName : WebsitePanelModuleBase + { + protected void Page_Load(object sender, EventArgs e) + { + DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PanelSecurity.PackageId); + + Organization[] orgs = ES.Services.Organizations.GetOrganizations(PanelSecurity.PackageId, false); + + List list = new List(); + + foreach (Organization o in orgs) + { + OrganizationDomainName[] tmpList = ES.Services.Organizations.GetOrganizationDomains(o.Id); + + foreach (OrganizationDomainName name in tmpList) list.Add(name); + } + + foreach (DomainInfo d in domains) + { + if (!d.IsDomainPointer) + { + 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) + { + ddlDomains.Visible= 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(), "org_domains", "SpaceID=" + PanelSecurity.PackageId)); + + } + + + private void AddDomain() + { + if (!Page.IsValid) + return; + + try + { + + int result = ES.Services.Organizations.AddOrganizationDomain(PanelRequest.ItemID, + ddlDomains.SelectedValue.Trim()); + + if (result < 0) + { + messageBox.ShowResultMessage(result); + return; + } + + Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "org_domains", + "SpaceID=" + PanelSecurity.PackageId)); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("EXCHANGE_ADD_DOMAIN", ex); + } + } + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx.designer.cs new file mode 100644 index 00000000..8f1f82e4 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx.designer.cs @@ -0,0 +1,142 @@ +// 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. + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebsitePanel.Portal.ExchangeServer { + + + public partial class OrganizationAddDomainName { + + /// + /// asyncTasks control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; + + /// + /// breadcrumb control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb; + + /// + /// menu control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu; + + /// + /// Image1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Image Image1; + + /// + /// locTitle control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locTitle; + + /// + /// messageBox control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; + + /// + /// locDomainName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locDomainName; + + /// + /// ddlDomains control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlDomains; + + /// + /// btnAdd control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnAdd; + + /// + /// ValidationSummary1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; + + /// + /// btnCancel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnCancel; + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx index a0bf4b3c..b44f5a68 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx @@ -43,6 +43,12 @@ ValidationGroup="CreateOrganization">* + + + + + +
list = new List(); + + foreach (Organization o in orgs) + { + OrganizationDomainName[] tmpList = ES.Services.Organizations.GetOrganizationDomains(o.Id); + + foreach (OrganizationDomainName name in tmpList) list.Add(name); + } + + foreach (DomainInfo d in domains) + { + if (!d.IsDomainPointer) + { + 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) + { + ddlDomains.Visible = btnCreate.Enabled = false; + } } protected void btnCreate_Click(object sender, EventArgs e) @@ -52,7 +91,8 @@ namespace WebsitePanel.Portal.ExchangeServer { int itemId = ES.Services.Organizations.CreateOrganization(PanelSecurity.PackageId, - txtOrganizationID.Text.Trim(), txtOrganizationName.Text.Trim()); + txtOrganizationID.Text.Trim().ToLower(), txtOrganizationName.Text.Trim().ToLower(), + ddlDomains.SelectedValue.Trim().ToLower()); if (itemId < 0) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx.designer.cs index 45ffb4d3..d07fbec6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx.designer.cs @@ -1,3 +1,31 @@ +// 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. + //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -120,6 +148,24 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::System.Web.UI.WebControls.RegularExpressionValidator valRequireCorrectOrgID; + /// + /// locDomainName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locDomainName; + + /// + /// ddlDomains control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlDomains; + /// /// btnCreate control. /// @@ -137,14 +183,5 @@ namespace WebsitePanel.Portal.ExchangeServer { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx index 187d5a08..4c8ea62f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx @@ -91,6 +91,15 @@ + + + + + + +
+ +
// This code was generated by a tool. @@ -219,6 +247,24 @@ namespace WebsitePanel.Portal.HostedSolution { /// protected global::WebsitePanel.Portal.PasswordControl password; + /// + /// chkSendInstructions control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkSendInstructions; + + /// + /// sendInstructionEmail control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.EmailControl sendInstructionEmail; + /// /// btnCreate control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx new file mode 100644 index 00000000..388c12be --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx @@ -0,0 +1,76 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationDomainNames.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationDomainNames" %> +<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> +<%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %> +<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %> +<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %> +<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> + + + +
+
+
+ +
+
+ +
+
+
+
+ + +
+
+ + +
+ +
+ + + + + + + + <%# Eval("DomainName") %> + + + + + +
+ /> +
+
+
+ + +   + + +
+
+
+
+ +
+ +
+ +     + + + +
+
+
+
+
\ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs new file mode 100644 index 00000000..bc61fa59 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs @@ -0,0 +1,147 @@ +// 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.Web.UI.WebControls; +using WebsitePanel.EnterpriseServer; +using WebsitePanel.Providers.HostedSolution; + +namespace WebsitePanel.Portal.ExchangeServer +{ + public partial class OrganizationDomainNames : WebsitePanelModuleBase + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + BindStats(); + + // bind domain names + BindDomainNames(); + } + + + } + + private void BindStats() + { + // set quotas + OrganizationStatistics stats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID); + OrganizationStatistics tenantStats = ES.Services.Organizations.GetOrganizationStatistics(PanelRequest.ItemID); + domainsQuota.QuotaUsedValue = stats.CreatedDomains; + domainsQuota.QuotaValue = stats.AllocatedDomains; + if (stats.AllocatedDomains != -1) domainsQuota.QuotaAvailable = tenantStats.AllocatedDomains - tenantStats.CreatedDomains; + } + + public string GetDomainRecordsEditUrl(string domainId) + { + return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "domain_records", + "DomainID=" + domainId, + "ItemID=" + PanelRequest.ItemID); + } + + private void BindDomainNames() + { + OrganizationDomainName[] list = ES.Services.Organizations.GetOrganizationDomains(PanelRequest.ItemID); + + gvDomains.DataSource = list; + gvDomains.DataBind(); + + //check if organization has only one default domain + if (gvDomains.Rows.Count == 1) + { + btnSetDefaultDomain.Enabled = false; + } + } + + public string IsChecked(bool val) + { + return val ? "checked" : ""; + } + + protected void btnAddDomain_Click(object sender, EventArgs e) + { + btnSetDefaultDomain.Enabled = true; + Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "org_add_domain", + "SpaceID=" + PanelSecurity.PackageId)); + } + + protected void gvDomains_RowCommand(object sender, GridViewCommandEventArgs e) + { + if (e.CommandName == "DeleteItem") + { + // delete domain + int domainId = Utils.ParseInt(e.CommandArgument.ToString(), 0); + + try + { + int result = ES.Services.Organizations.DeleteOrganizationDomain(PanelRequest.ItemID, domainId); + if (result < 0) + { + messageBox.ShowErrorMessage("EXCHANGE_UNABLE_TO_DELETE_DOMAIN"); + } + + // rebind domains + BindDomainNames(); + + BindStats(); + } + catch (Exception ex) + { + ShowErrorMessage("EXCHANGE_DELETE_DOMAIN", ex); + } + } + } + + protected void btnSetDefaultDomain_Click(object sender, EventArgs e) + { + // get domain + int domainId = Utils.ParseInt(Request.Form["DefaultDomain"], 0); + + try + { + int result = ES.Services.Organizations.SetOrganizationDefaultDomain(PanelRequest.ItemID, domainId); + if (result < 0) + { + messageBox.ShowResultMessage(result); + if (BusinessErrorCodes.ERROR_USER_ACCOUNT_DEMO == result) + BindDomainNames(); + return; + } + + // rebind domains + BindDomainNames(); + } + catch (Exception ex) + { + ShowErrorMessage("EXCHANGE_SET_DEFAULT_DOMAIN", ex); + } + } + + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.designer.cs new file mode 100644 index 00000000..6e8feaab --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.designer.cs @@ -0,0 +1,142 @@ +// 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. + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebsitePanel.Portal.ExchangeServer { + + + public partial class OrganizationDomainNames { + + /// + /// asyncTasks control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; + + /// + /// breadcrumb control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Breadcrumb breadcrumb; + + /// + /// menu control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ExchangeServer.UserControls.Menu menu; + + /// + /// Image1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Image Image1; + + /// + /// locTitle control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locTitle; + + /// + /// messageBox control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; + + /// + /// btnAddDomain control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnAddDomain; + + /// + /// gvDomains control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvDomains; + + /// + /// btnSetDefaultDomain control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnSetDefaultDomain; + + /// + /// locQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locQuota; + + /// + /// domainsQuota control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.QuotaViewer domainsQuota; + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx index 9350c339..91a931d8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx @@ -1,7 +1,5 @@ -<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationHome.ascx.cs" - Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationHome" %> -<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" - TagPrefix="wsp" %> +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationHome.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.OrganizationHome" %> +<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> <%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %> <%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %> <%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.cs index 321cec28..0af72c4c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationHome.ascx.cs @@ -88,7 +88,10 @@ namespace WebsitePanel.Portal.ExchangeServer { exchangeStorageStats.QuotaUsedValue = exchangeOrgStats.UsedDiskSpace; exchangeStorageStats.QuotaValue = exchangeOrgStats.AllocatedDiskSpace; - if (exchangeOrgStats.AllocatedDiskSpace != -1) exchangeStorageStats.QuotaAvailable = exchangeTenantStats.AllocatedDiskSpace - exchangeTenantStats.UsedDiskSpace; + if (exchangeOrgStats.AllocatedDiskSpace != -1) + { + exchangeStorageStats.QuotaAvailable = exchangeTenantStats.AllocatedDiskSpace - exchangeTenantStats.UsedDiskSpace; + } } else this.rowExchangeStorage.Style.Add("display", "none"); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx index 407ab8c2..8fe84227 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx @@ -4,10 +4,11 @@ <%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> <%@ Register Src="../UserControls/PasswordControl.ascx" TagName="PasswordControl" 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" %> <%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %> <%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %> +<%@ Register Src="UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %> @@ -41,6 +42,22 @@ + + + + + + + + @@ -62,9 +84,6 @@ +
+ + + + + + + +
@@ -53,8 +70,13 @@
- + + + +
-

@@ -95,9 +114,19 @@
+ + + + + +
+ +
+ - @@ -136,7 +165,7 @@ - @@ -181,7 +210,7 @@ - @@ -219,21 +248,10 @@ - - - - - -
- -
- - - - diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs index 540fb703..3ea2ae6c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs @@ -27,6 +27,7 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; +using System.Web.UI.WebControls; using WebsitePanel.EnterpriseServer; using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.ResultObjects; @@ -63,8 +64,6 @@ namespace WebsitePanel.Portal.HostedSolution } } - password.EditMode = password.ValidationEnabled = false; - // get settings OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID); @@ -108,6 +107,7 @@ namespace WebsitePanel.Portal.HostedSolution lblUserDomainName.Text = user.DomainUserName; txtSubscriberNumber.Text = user.SubscriberNumber; + lblUserPrincipalName.Text = user.UserPrincipalName; PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER)) @@ -119,6 +119,67 @@ namespace WebsitePanel.Portal.HostedSolution } } + + if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATION_ALLOWCHANGEUPN)) + { + if (cntx.Quotas[Quotas.ORGANIZATION_ALLOWCHANGEUPN].QuotaAllocatedValue != 1) + { + lblUserPrincipalName.Visible = true; + upn.Visible = false; + ddlEmailAddresses.Visible = false; + btnSetUserPrincipalName.Visible = false; + chkInherit.Visible = false; + } + else + { + lblUserPrincipalName.Visible = false; + upn.Visible = false; + ddlEmailAddresses.Visible = false; + btnSetUserPrincipalName.Visible = true; + chkInherit.Visible = true; + if (user.AccountType == ExchangeAccountType.Mailbox) + { + ddlEmailAddresses.Visible = true; + WebsitePanel.EnterpriseServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID); + + foreach (WebsitePanel.EnterpriseServer.ExchangeEmailAddress mail in emails) + { + ListItem li = new ListItem(); + li.Text = mail.EmailAddress; + li.Value = mail.EmailAddress; + li.Selected = mail.IsPrimary; + ddlEmailAddresses.Items.Add(li); + } + + foreach (ListItem li in ddlEmailAddresses.Items) + { + if (li.Value == user.UserPrincipalName) + { + ddlEmailAddresses.ClearSelection(); + li.Selected = true; + break; + } + } + + } + else + { + upn.Visible = true; + if (!string.IsNullOrEmpty(user.UserPrincipalName)) + { + string[] Tmp = user.UserPrincipalName.Split('@'); + upn.AccountName = Tmp[0]; + + if (Tmp.Length > 1) + { + upn.DomainName = Tmp[1]; + } + } + } + + } + } + if (user.Locked) chkLocked.Enabled = true; else @@ -126,6 +187,8 @@ namespace WebsitePanel.Portal.HostedSolution chkLocked.Checked = user.Locked; + password.ValidationEnabled = true; + password.Password = string.Empty; } catch (Exception ex) { @@ -138,17 +201,12 @@ namespace WebsitePanel.Portal.HostedSolution if (!Page.IsValid) return; - string pwd = password.Password; - - if (!chkSetPassword.Checked) - pwd = string.Empty; - try { int result = ES.Services.Organizations.SetUserGeneralSettings( PanelRequest.ItemID, PanelRequest.AccountID, txtDisplayName.Text, - pwd, + string.Empty, false, chkDisable.Checked, chkLocked.Checked, @@ -203,10 +261,66 @@ namespace WebsitePanel.Portal.HostedSolution SaveSettings(); } - protected void chkSetPassword_CheckedChanged(object sender, EventArgs e) + protected void btnSetUserPrincipalName_Click(object sender, EventArgs e) { - password.EditMode = password.ValidationEnabled = chkSetPassword.Checked; + string userPrincipalName = string.Empty; + + if (upn.Visible) + userPrincipalName = upn.Email; + else + if (ddlEmailAddresses.Visible) + userPrincipalName = (string)ddlEmailAddresses.SelectedValue; + + if (string.IsNullOrEmpty(userPrincipalName)) return; + + try + { + int result = ES.Services.Organizations.SetUserPrincipalName( + PanelRequest.ItemID, PanelRequest.AccountID, + userPrincipalName.ToLower(), + chkInherit.Checked); + + if (result < 0) + { + messageBox.ShowResultMessage(result); + return; + } + + messageBox.ShowSuccessMessage("ORGANIZATION_SET_USER_USERPRINCIPALNAME"); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("ORGANIZATION_SET_USER_USERPRINCIPALNAME", ex); + } + } + + protected void btnSetUserPassword_Click(object sender, EventArgs e) + { + + if (!Page.IsValid) + return; + + try + { + int result = ES.Services.Organizations.SetUserPassword( + PanelRequest.ItemID, PanelRequest.AccountID, + password.Password); + + if (result < 0) + { + messageBox.ShowResultMessage(result); + return; + } + + messageBox.ShowSuccessMessage("ORGANIZATION_SET_USER_PASSWORD"); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("ORGANIZATION_SET_USER_PASSWORD", ex); + } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs index d769068c..8f8af98e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs @@ -1,3 +1,31 @@ +// 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. + //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -93,6 +121,60 @@ namespace WebsitePanel.Portal.HostedSolution { /// protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; + /// + /// locUserPrincipalName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locUserPrincipalName; + + /// + /// lblUserPrincipalName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblUserPrincipalName; + + /// + /// upn control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress upn; + + /// + /// ddlEmailAddresses control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlEmailAddresses; + + /// + /// btnSetUserPrincipalName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnSetUserPrincipalName; + + /// + /// chkInherit control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkInherit; + /// /// locDisplayName control. /// @@ -139,13 +221,22 @@ namespace WebsitePanel.Portal.HostedSolution { protected global::WebsitePanel.Portal.PasswordControl password; /// - /// chkSetPassword control. + /// btnSetUserPassword control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.CheckBox chkSetPassword; + protected global::System.Web.UI.WebControls.Button btnSetUserPassword; + + /// + /// ValidationSummary2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary2; /// /// chkDisable control. @@ -255,6 +346,24 @@ namespace WebsitePanel.Portal.HostedSolution { /// protected global::System.Web.UI.WebControls.TextBox txtExternalEmailAddress; + /// + /// locNotes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locNotes; + + /// + /// txtNotes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtNotes; + /// /// secCompanyInfo control. /// @@ -597,24 +706,6 @@ namespace WebsitePanel.Portal.HostedSolution { /// protected global::WebsitePanel.Portal.ExchangeServer.UserControls.CountrySelector country; - /// - /// locNotes control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize locNotes; - - /// - /// txtNotes control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtNotes; - /// /// secAdvanced control. /// @@ -668,14 +759,5 @@ namespace WebsitePanel.Portal.HostedSolution { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx index c6b5f5bf..8db4b2f5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx @@ -47,6 +47,7 @@ Email AccountName Account Number + Login @@ -74,14 +75,15 @@ - - + + + - - - - + /> + /> + /> + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx.cs index 60d76797..07b88d06 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx.cs @@ -48,7 +48,7 @@ namespace WebsitePanel.Portal.HostedSolution { if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1) { - gvUsers.Columns[3].Visible = false; + gvUsers.Columns[4].Visible = false; } } @@ -115,6 +115,52 @@ namespace WebsitePanel.Portal.HostedSolution messageBox.ShowErrorMessage("ORGANIZATIONS_DELETE_USERS", ex); } } + + if (e.CommandName == "OpenMailProperties") + { + int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0); + + Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "mailbox_settings", + "AccountID=" + accountId, + "ItemID=" + PanelRequest.ItemID)); + } + + if (e.CommandName == "OpenBlackBerryProperties") + { + int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0); + + Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_blackberry_user", + "AccountID=" + accountId, + "ItemID=" + PanelRequest.ItemID)); + } + + if (e.CommandName == "OpenCRMProperties") + { + int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0); + + Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "mailbox_settings", + "AccountID=" + accountId, + "ItemID=" + PanelRequest.ItemID)); + } + + if (e.CommandName == "OpenUCProperties") + { + string[] Tmp = e.CommandArgument.ToString().Split('|'); + + int accountId = Utils.ParseInt(Tmp[0], 0); + if (Tmp[1] == "True") + Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_ocs_user", + "AccountID=" + accountId, + "ItemID=" + PanelRequest.ItemID)); + else + if (Tmp[2] == "True") + Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_lync_user", + "AccountID=" + accountId, + "ItemID=" + PanelRequest.ItemID)); + + + + } } @@ -208,7 +254,52 @@ namespace WebsitePanel.Portal.HostedSolution // bind stats BindStats(); - } + } + + + public bool EnableMailImageButton(int accountTypeId) + { + bool imgName = true; + + ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId; + + if (accountType == ExchangeAccountType.User) + imgName = false; + + return imgName; + } + + public bool EnableOCSImageButton(bool IsOCSUser, bool IsLyncUser) + { + bool imgName = false; + + if (IsLyncUser) + imgName = true; + else + if ((IsOCSUser)) + imgName = true; + + return imgName; + } + + public bool EnableBlackBerryImageButton(bool IsBlackBerryUser) + { + bool imgName = false; + + if (IsBlackBerryUser) + imgName = true; + + return imgName; + } + + + public string GetOCSArgument(int accountID, bool IsOCS, bool IsLync) + { + return accountID.ToString() + "|" + IsOCS.ToString() + "|" + IsLync.ToString(); + } + + + } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/App_LocalResources/Menu.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/App_LocalResources/Menu.ascx.resx index ea488c1d..0f2f1e19 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/App_LocalResources/Menu.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/App_LocalResources/Menu.ascx.resx @@ -127,6 +127,9 @@ Distribution Lists + Domains + + Accepted Domains diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/DomainSelector.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/DomainSelector.ascx.cs index c56e96da..9b421295 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/DomainSelector.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/DomainSelector.ascx.cs @@ -37,6 +37,18 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls public string DomainName { get { return ddlDomain.SelectedItem.Text; } + set + { + foreach (ListItem li in ddlDomain.Items) + { + if (li.Value == value) + { + ddlDomain.ClearSelection(); + li.Selected = true; + break; + } + } + } } public int DomainId diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/EmailAddress.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/EmailAddress.ascx.cs index 39c9b920..9e19732f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/EmailAddress.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/EmailAddress.ascx.cs @@ -69,13 +69,17 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls { return domain.DomainName; } + set + { + domain.DomainName = value; + } } public string Email { get { - return AccountName + "@" + DomainName; + return string.Format("{0}@{1}",AccountName, DomainName).ToLower(); } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/Menu.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/Menu.ascx.cs index d0817799..9f3475ae 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/Menu.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/Menu.ascx.cs @@ -138,10 +138,11 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls exchangeGroup.MenuItems.Add(CreateMenuItem("MailboxPlans", "mailboxplans")); if (!hideItems) - if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) - exchangeGroup.MenuItems.Add(CreateMenuItem("DomainNames", "domains")); + if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx)) + exchangeGroup.MenuItems.Add(CreateMenuItem("ExchangeDomainNames", "domains")); if (!hideItems) + if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx)) exchangeGroup.MenuItems.Add(CreateMenuItem("StorageUsage", "storage_usage")); if (exchangeGroup.MenuItems.Count > 0) @@ -164,8 +165,12 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls if (!hideItems) { MenuGroup organizationGroup = new MenuGroup(GetLocalizedString("Text.OrganizationGroup"), imagePath + "company24.png"); - //if (CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) - // organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "domains")); + + if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx) == false) + { + if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) + organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "org_domains")); + } if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, cntx)) organizationGroup.MenuItems.Add(CreateMenuItem("Users", "users")); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs index 91bf372d..da968986 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs @@ -50,7 +50,10 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls { List tabsList = new List(); tabsList.Add(CreateTab("edit_user", "Tab.General")); - //tabsList.Add(CreateTab("organization_user_setup", "Tab.Setup")); + + string instructions = ES.Services.Organizations.GetOrganizationUserSummuryLetter(PanelRequest.ItemID, PanelRequest.AccountID, false, false, false); + if (!string.IsNullOrEmpty(instructions)) + tabsList.Add(CreateTab("organization_user_setup", "Tab.Setup")); // find selected menu item int idx = 0; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx index c66291a3..03f5f160 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx @@ -60,6 +60,7 @@ --> + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.cs index ebb94dde..9dc65cd5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.cs @@ -176,6 +176,7 @@ namespace WebsitePanel.Portal } } protected void Validate(object source, ServerValidateEventArgs args) { +/* var ip = args.Value; System.Net.IPAddress ipaddr; if (string.IsNullOrEmpty(args.Value)) @@ -184,6 +185,8 @@ namespace WebsitePanel.Portal args.IsValid = System.Net.IPAddress.TryParse(ip, out ipaddr) && (ip.Contains(":") || ip.Contains(".")) && ((ddlRecordType.SelectedValue == "A" && ipaddr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) || (ddlRecordType.SelectedValue == "AAAA" && ipaddr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)); +*/ + args.IsValid = true; } private void SaveRecord() diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.designer.cs index c0ce1e91..c3308c73 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.designer.cs @@ -1,3 +1,31 @@ +// 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. + //------------------------------------------------------------------------------ // // This code was generated by a tool. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/HostedSharePointEditSiteCollection.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/HostedSharePointEditSiteCollection.ascx index e8f8a873..42875235 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/HostedSharePointEditSiteCollection.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/HostedSharePointEditSiteCollection.ascx @@ -38,7 +38,7 @@ Text="Url:"> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.designer.cs index c1083b65..af2c5bee 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.designer.cs @@ -26,7 +26,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -148,14 +147,5 @@ namespace WebsitePanel.Portal.Lync { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnCreate; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx index bcb77a8f..64305427 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx @@ -7,6 +7,7 @@ <%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %> <%@ Register src="../ExchangeServer/UserControls/MailboxSelector.ascx" tagname="MailboxSelector" tagprefix="uc1" %> <%@ Register Src="UserControls/LyncUserPlanSelector.ascx" TagName="LyncUserPlanSelector" TagPrefix="wsp" %> +<%@ Register Src="UserControls/LyncUserSettings.ascx" TagName="LyncUserSettings" TagPrefix="wsp" %>
@@ -38,6 +39,15 @@ +
+ + + +
- . + . // This code was generated by a tool. @@ -489,14 +461,5 @@ namespace WebsitePanel.Portal { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnDelete; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddLyncUserPlan.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddLyncUserPlan.ascx.resx index daee76c2..df0d9cbe 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddLyncUserPlan.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddLyncUserPlan.ascx.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - <p> A plan is a template that defines the characteristics of a lync users </p> <p>The plan name needs to be unique. A plan cannot be modified. In case a user needs a plan with another characteristics, a new plan needs to be created and assigned to the user. A plan can only be deleted when the plan is not assigned to any users. </p> + Add Lync User Plan diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncCreateUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncCreateUser.ascx.resx index fd626cd7..1d274881 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncCreateUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncCreateUser.ascx.resx @@ -124,7 +124,7 @@ Create - Select an existing Organization user and click the “Create” button to enable an individual user account for Microsoft Lync Server. + Display name* : diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx index bad6c174..8405529f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx @@ -124,7 +124,7 @@ Save changes - <p> A plan is a template that defines the capabilities of a lync user. In order to change the plan assigned to this user, select a plan and click the Save Changes button </p> + Display name: @@ -135,4 +135,7 @@ Plan Name : + + SIP Address: + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncFederationDomains.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncFederationDomains.ascx.resx index e60864dd..a45d8f91 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncFederationDomains.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncFederationDomains.ascx.resx @@ -136,11 +136,7 @@ Domain Name - <p>By adding a federation domain you allow your users, that are enabled for federation, to interact through Lync with users from the specified domain. Your users as well as the users from the federated domain will see eachother status. </p> - -<p>Federation is a mutual agreement between you and your federation partner (owner of the domain you want to federate with). Once you have added the federation domain to your list, your partner will need to do the same from his side</p> - - + Lync Federation Domains diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUserPlans.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUserPlans.ascx.resx index 844f8e76..ab50c0af 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUserPlans.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUserPlans.ascx.resx @@ -142,7 +142,7 @@ No plans have been added yet. To add a new plan click "Add New Plan" button. - <p> A plan is a template that defines the capabilities of a lync users </p> <p>The plan name needs to be unique. A plan cannot be modified. In case a lync user needs a plan with another characteristics, a new plan needs to be created and assigned to the lync user. A plan can only be deleted when the plan is not assigned to any lync users. </p> + Source plan: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx index 9114e730..8c44e59c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx @@ -126,19 +126,17 @@ Display name - - Sign-in name + + Login - <p>Microsoft Lync Server delivers unified communications to the users, including software-powered VoIP, Web and audio/video conferencing, and enterprise instant messaging.</p> -<p>Click the “Create Lync User” button to enable a user account for Microsoft Lync Server. </p> -<p>If you delete an account in Microsoft Lync Server, the account is no longer available for use with Microsoft Lync Server unless you enable the account again. When you delete an account, all Lync Server settings for the account are lost, so you must configure the account again after enabling.</p> + Display name - Sign-in name + SIP Address Lync Users @@ -152,4 +150,7 @@ No users have been Lync enabled. To enable a user for Lync click "Create Lync User" button. + + Login + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs index 82648d9d..58072ca2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs @@ -158,6 +158,7 @@ namespace WebsitePanel.Portal.Lync if (result < 0) { messageBox.ShowResultMessage(result); + messageBox.ShowErrorMessage("LYNC_UNABLE_TO_ADD_PLAN"); return; } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx index cea3d2cd..4d36dcf4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx @@ -28,7 +28,7 @@
- +
+ + + +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.cs index aa3b96fa..b3b2782b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.cs @@ -52,6 +52,8 @@ namespace WebsitePanel.Portal.Lync litDisplayName.Text = lyncUser.DisplayName; planSelector.planId = lyncUser.LyncUserPlanId.ToString(); + lyncUserSettings.sipAddress = lyncUser.SipAddress; + } protected void btnSave_Click(object sender, EventArgs e) @@ -61,11 +63,18 @@ namespace WebsitePanel.Portal.Lync try { LyncUserResult res = ES.Services.Lync.SetUserLyncPlan(PanelRequest.ItemID, PanelRequest.AccountID, Convert.ToInt32(planSelector.planId)); + if (res.IsSuccess && res.ErrorCodes.Count == 0) + { + res = ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID, lyncUserSettings.sipAddress, string.Empty); + } + if (res.IsSuccess && res.ErrorCodes.Count == 0) { messageBox.ShowSuccessMessage("UPDATE_LYNC_USER"); return; } + else + messageBox.ShowMessage(res, "UPDATE_LYNC_USER", "LYNC"); } catch(Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.designer.cs index 2b64cf15..52aaa081 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.designer.cs @@ -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, @@ -26,7 +26,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -122,6 +121,24 @@ namespace WebsitePanel.Portal.Lync { /// protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserPlanSelector planSelector; + /// + /// locSipAddress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locSipAddress; + + /// + /// lyncUserSettings control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.Lync.UserControls.LyncUserSettings lyncUserSettings; + /// /// btnSave control. /// @@ -130,14 +147,5 @@ namespace WebsitePanel.Portal.Lync { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.Button btnSave; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUserPlans.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUserPlans.ascx.cs index 922c9420..f5ca576c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUserPlans.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUserPlans.ascx.cs @@ -144,6 +144,7 @@ namespace WebsitePanel.Portal.Lync try { + /* LyncUserPlan plan = ES.Services.Lync.GetLyncUserPlan(PanelRequest.ItemID, planId); if (plan.LyncUserPlanType > 0) @@ -152,7 +153,7 @@ namespace WebsitePanel.Portal.Lync BindPlans(); return; } - + */ ES.Services.Lync.SetOrganizationDefaultLyncUserPlan(PanelRequest.ItemID, planId); ShowSuccessMessage("REQUEST_COMPLETED_SUCCESFULLY"); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx index d0320faa..1eba42da 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx @@ -41,7 +41,7 @@ DisplayName - Email + Email - - + + + + + <%# Eval("UserPrincipalName") %> + + + + + // This code was generated by a tool. // @@ -155,14 +183,5 @@ namespace WebsitePanel.Portal.Lync { /// To modify move field declaration from designer file to code-behind file. /// protected global::WebsitePanel.Portal.QuotaViewer usersQuota; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx new file mode 100644 index 00000000..9ac249d9 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx @@ -0,0 +1,5 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncUserSettings.ascx.cs" Inherits="WebsitePanel.Portal.Lync.UserControls.LyncUserSettings" %> +<%@ Register Src="../../ExchangeServer/UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %> + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs new file mode 100644 index 00000000..78dc4792 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs @@ -0,0 +1,166 @@ +// 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 System.Web.UI.WebControls; +using WebsitePanel.EnterpriseServer; +using WebsitePanel.Providers.HostedSolution; +using WebsitePanel.Providers.ResultObjects; + +namespace WebsitePanel.Portal.Lync.UserControls +{ + public partial class LyncUserSettings : WebsitePanelControlBase + { + + private string sipAddressToSelect; + + public string sipAddress + { + + get + { + if (ddlSipAddresses.Visible) + { + if ((ddlSipAddresses != null) && (ddlSipAddresses.SelectedItem != null)) + return ddlSipAddresses.SelectedItem.Value; + else + return string.Empty; + } + else + { + return email.Email; + } + } + set + { + sipAddressToSelect = value; + + if (ddlSipAddresses.Visible) + { + if ((ddlSipAddresses != null) && (ddlSipAddresses.Items != null)) + { + foreach (ListItem li in ddlSipAddresses.Items) + { + if (li.Value == value) + { + ddlSipAddresses.ClearSelection(); + li.Selected = true; + break; + } + } + } + } + else + { + if (!string.IsNullOrEmpty(value)) + { + string[] Tmp = value.Split('@'); + email.AccountName = Tmp[0]; + + if (Tmp.Length > 1) + { + email.DomainName = Tmp[1]; + } + } + } + } + } + + public int plansCount + { + get + { + return this.ddlSipAddresses.Items.Count; + } + } + + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + BindAddresses(); + } + } + + private void BindAddresses() + { + + OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID); + + if (user == null) + return; + + if (user.AccountType == ExchangeAccountType.Mailbox) + { + email.Visible = false; + ddlSipAddresses.Visible = true; + + WebsitePanel.EnterpriseServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID); + + foreach (WebsitePanel.EnterpriseServer.ExchangeEmailAddress mail in emails) + { + ListItem li = new ListItem(); + li.Text = mail.EmailAddress; + li.Value = mail.EmailAddress; + li.Selected = mail.IsPrimary; + ddlSipAddresses.Items.Add(li); + } + + foreach (ListItem li in ddlSipAddresses.Items) + { + if (li.Value == sipAddressToSelect) + { + ddlSipAddresses.ClearSelection(); + li.Selected = true; + break; + } + } + } + else + { + email.Visible = true; + ddlSipAddresses.Visible = false; + + if (!string.IsNullOrEmpty(sipAddressToSelect)) + { + string[] Tmp = sipAddressToSelect.Split('@'); + email.AccountName = Tmp[0]; + + if (Tmp.Length > 1) + { + email.DomainName = Tmp[1]; + } + } + + + } + + } + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs new file mode 100644 index 00000000..3ca9f655 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs @@ -0,0 +1,61 @@ +// 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. + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebsitePanel.Portal.Lync.UserControls { + + + public partial class LyncUserSettings { + + /// + /// ddlSipAddresses control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlSipAddresses; + + /// + /// email control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress email; + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx index 4fb6ebde..1f57cb0f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx @@ -6,7 +6,7 @@ + HideMailDomains="true" HideDomainsSubDomains="false" HideInstantAlias="false" HideDomainPointers="true"/> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx.designer.cs index c9128a8f..e7b645bd 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx.designer.cs @@ -1,10 +1,37 @@ +// 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. + //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.3074 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx index 650dfe00..6037cbc1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx @@ -9,7 +9,7 @@  @  - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx.designer.cs index b937091d..9b40ee69 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx.designer.cs @@ -1,10 +1,9 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.3074 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/CreateOCSUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/CreateOCSUser.ascx.resx index 859f311a..cea9a623 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/CreateOCSUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/CreateOCSUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create OCS User @@ -124,7 +124,7 @@ Create - Select an existing Organization user and click the “Create” button to enable an individual user account for Office Communications Server. + Display name* : diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/EditOCSUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/EditOCSUser.ascx.resx index bf4bdbf2..677e3608 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/EditOCSUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/EditOCSUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Edit OCS User @@ -139,12 +139,7 @@ Enable Public IM connectivity - <p><b>Sign-in name</b> specifies the Session Initiation Protocol (SIP) address that is currently registered for this user and will be used to route messages to and from the user. The sign-in name is in the form "sip:user@domain" and must be unique.</p> -<p><b>Federation</b> specifies whether the user can communicate with users from other organizations that have an Office Communications Server deployment and a federated link.</p> -<p><b>Public IM connectivity</b> specifies whether the user can communicate with users who are hosted on AOL, Yahoo!, or the MSN network of Internet services.</p> -<p><b>Archiving</b> enables or disables archiving of IM conversations of the user. Archiving can be enabled independently for internal conversations and for conversations with users outside your organization.</p> -<p><b>Enhanced presence</b> enables users to control their presence with more granularity. Enhanced presence enables users to create different presence categories and assign data items to the categories.</p> -<p><b>Note:</b> Some settings cannot be configured for individual users depending on the Global Properties.</p> + Display name: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/OCSUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/OCSUsers.ascx.resx index 31a67e0e..9290b1fe 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/OCSUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/OCSUsers.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 OCS Users @@ -130,9 +130,7 @@ Sign-in name - <p>Office Communications Server delivers streamlined communications to the users, including software-powered VoIP, Web and audio/video conferencing, and enterprise instant messaging.</p> -<p>Click the “Create OCS User” button to enable an individual user account for Office Communications Server. </p> -<p>If you delete an account in Office Communications Server, the account is no longer available for use with Office Communications Server unless you enable the account again. When you delete an account, all Office Communications Server settings for the account are lost, so you must configure the account again after enabling.</p> + Display name diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx index db242693..d8183a67 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx @@ -1,13 +1,9 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OCSUsers.ascx.cs" Inherits="WebsitePanel.Portal.OCS.OCSUsers" %> -<%@ Register Src="../ExchangeServer/UserControls/UserSelector.ascx" TagName="UserSelector" - TagPrefix="wsp" %> +<%@ Register Src="../ExchangeServer/UserControls/UserSelector.ascx" TagName="UserSelector" TagPrefix="wsp" %> <%@ Register Src="../ExchangeServer/UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %> -<%@ Register Src="../ExchangeServer/UserControls/Breadcrumb.ascx" TagName="Breadcrumb" - TagPrefix="wsp" %> -<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" - TagPrefix="wsp" %> -<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" - TagPrefix="wsp" %> +<%@ Register Src="../ExchangeServer/UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %> +<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> +<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> <%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %>
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.cs index 3fe783f9..4de1aa2a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.cs @@ -75,7 +75,11 @@ namespace WebsitePanel.Portal.OCS protected void odsAccountsPaged_Selected(object sender, System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs e) { - + if (e.Exception != null) + { + messageBox.ShowErrorMessage("OCS_GET_USERS", e.Exception); + e.ExceptionHandled = true; + } } protected void gvUsers_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.designer.cs index d5230a85..2fc04a3c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.designer.cs @@ -1,4 +1,32 @@ -//------------------------------------------------------------------------------ +// 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. + +//------------------------------------------------------------------------------ // // This code was generated by a tool. // @@ -155,14 +183,5 @@ namespace WebsitePanel.Portal.OCS { /// To modify move field declaration from designer file to code-behind file. /// protected global::WebsitePanel.Portal.QuotaViewer usersQuota; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IIS60_Settings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IIS60_Settings.ascx.resx index f733bc7c..720490cc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IIS60_Settings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IIS60_Settings.ascx.resx @@ -123,9 +123,13 @@ Click to modify the filter... + + Always ignore dependencies + Click to create a filter... + Gallery feed filter: @@ -196,7 +200,7 @@ Shared SSL Web Sites: - Microsoft Web Appication Gallery + Web Appication Gallery Web Farms Support: @@ -222,9 +226,6 @@ Web Extensions - - Please select items from the feed you would like to remove from the list of apps available to end-users. - ASP.NET 4.0 Library Path: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IIS70_Settings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IIS70_Settings.ascx.resx index 067a8d89..7e0ca9e5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IIS70_Settings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/IIS70_Settings.ascx.resx @@ -178,7 +178,7 @@ Gallery feed URL: - Microsoft Web Appication Gallery + Web Appication Gallery You could overwrite default Web App Gallery ATOM feed located at Microsoft web site by your own to provide your own applications to your customers. Leave this field blank to use default feed. @@ -214,17 +214,17 @@ Module Assembly: - Click to modify the filter... + Select applications Click to create a filter... + + Always ignore dependencies + Gallery feed filter: - - Please select items from the feed you would like to remove from the list of apps available to end-users. - ASP.NET 4.0 Classic: @@ -249,4 +249,7 @@ NETBIOS Domain name: + + Web Sites Public Shared Address: + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs index f3ab2ee2..7da1698d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/Exchange_Settings.ascx.cs @@ -42,7 +42,8 @@ namespace WebsitePanel.Portal.ProviderControls public const string ClientAccessData = "ClientAccessData"; public const int EXCHANGE2010_PROVIDER_ID = 32; - public const int EXCHANGE2010SP2_PROVIDER_ID = 90; + public const int EXCHANGE2010SP2_PROVIDER_ID = 90; + public string HubTransports { @@ -101,7 +102,6 @@ namespace WebsitePanel.Portal.ProviderControls locMailboxDatabase.Visible = false; break; - default: storageGroup.Visible = true; txtStorageGroup.Text = settings["StorageGroup"]; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx index f5a9ed77..a914ecae 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx @@ -4,6 +4,7 @@ <%@ Register Src="../UserControls/EditDomainsList.ascx" TagName="EditDomainsList" TagPrefix="uc5" %> <%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagPrefix="wsp" TagName="CollapsiblePanel" %> <%@ Register Src="../UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %> +<%@ Register src="../UserControls/EditFeedsList.ascx" tagname="EditFeedsList" tagprefix="uc6" %>
@@ -116,25 +117,33 @@  
- - - - - - +
- - - -

-
+ + + + + + + + + +
+ - + + Exclude selected applications + Include only selected applications + +
+ +

+
Custom feeds:


@@ -144,7 +153,6 @@
-
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.cs index 483f2d7e..553fc007 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.cs @@ -109,7 +109,6 @@ namespace WebsitePanel.Portal.ProviderControls txtAspNet11Pool.Text = settings["AspNet11Pool"]; txtAspNet20Pool.Text = settings["AspNet20Pool"]; txtAspNet40Pool.Text = settings["AspNet40Pool"]; - txtGalleryFeedUrl.Text = settings["GalleryXmlFeedUrl"]; txtAspPath.Text = settings["AspPath"]; txtAspNet11Path.Text = settings["AspNet11Path"]; txtAspNet20Path.Text = settings["AspNet20Path"]; @@ -130,8 +129,12 @@ namespace WebsitePanel.Portal.ProviderControls sharedSslSites.Value = settings[PackageSettings.SHARED_SSL_SITES]; ActiveDirectoryIntegration.BindSettings(settings); - // + + // + wpiEditFeedsList.Value = settings["FeedUrls"]; FilteredAppIds = settings["GalleryAppsFilter"]; + radioFilterAppsList.SelectedIndex = Utils.ParseInt(settings["GalleryAppsFilterMode"], 0); + chkGalleryAppsAlwaysIgnoreDependencies.Checked = Utils.ParseBool(settings["GalleryAppsAlwaysIgnoreDependencies"], false); } public void SaveSettings(StringDictionary settings) @@ -147,7 +150,6 @@ namespace WebsitePanel.Portal.ProviderControls settings["AspNet11Path"] = txtAspNet11Path.Text.Trim(); settings["AspNet20Path"] = txtAspNet20Path.Text.Trim(); settings["AspNet40Path"] = txtAspNet40Path.Text.Trim(); - settings["GalleryXmlFeedUrl"] = txtGalleryFeedUrl.Text.Trim(); settings["Php4Path"] = txtPhp4Path.Text.Trim(); settings["Php5Path"] = txtPhp5Path.Text.Trim(); settings["PerlPath"] = txtPerlPath.Text.Trim(); @@ -165,7 +167,10 @@ namespace WebsitePanel.Portal.ProviderControls ActiveDirectoryIntegration.SaveSettings(settings); // + settings["FeedUrls"] = wpiEditFeedsList.Value; settings["GalleryAppsFilter"] = GetAppsCatalogFilter(); + settings["GalleryAppsFilterMode"] = radioFilterAppsList.SelectedIndex.ToString(); + settings["GalleryAppsAlwaysIgnoreDependencies"] = chkGalleryAppsAlwaysIgnoreDependencies.Checked.ToString(); } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.designer.cs index 6758771e..84883d46 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.designer.cs @@ -1,3 +1,31 @@ +// 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. + //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -219,24 +247,6 @@ namespace WebsitePanel.Portal.ProviderControls { /// protected global::System.Web.UI.WebControls.Label lblWebAppGallery; - /// - /// lblGalleryFeed control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblGalleryFeed; - - /// - /// txtGalleryFeedUrl control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtGalleryFeedUrl; - /// /// Label1 control. /// @@ -246,6 +256,15 @@ namespace WebsitePanel.Portal.ProviderControls { /// protected global::System.Web.UI.WebControls.Label Label1; + /// + /// radioFilterAppsList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RadioButtonList radioFilterAppsList; + /// /// FilterDialogButton control. /// @@ -253,7 +272,25 @@ namespace WebsitePanel.Portal.ProviderControls { /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.LinkButton FilterDialogButton; + protected global::System.Web.UI.WebControls.Button FilterDialogButton; + + /// + /// chkGalleryAppsAlwaysIgnoreDependencies control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkGalleryAppsAlwaysIgnoreDependencies; + + /// + /// wpiEditFeedsList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.EditFeedsList wpiEditFeedsList; /// /// FilterDialogPanel control. @@ -264,15 +301,6 @@ namespace WebsitePanel.Portal.ProviderControls { /// protected global::System.Web.UI.WebControls.Panel FilterDialogPanel; - /// - /// Localize1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize Localize1; - /// /// WebAppGalleryList control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx index df0e133d..b96c38f1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx @@ -21,6 +21,14 @@ + + + + + + + + @@ -180,42 +188,47 @@ - - - -<%-- - - - - - - - - ---%> -
+ - + + Exclude selected applications + Include only selected applications + +
+ +

+
Enable Microsoft feed - -
Enable HeliconTech feed - -
- + + Custom feeds: + + + +
+ + + + + + + + + + +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcAuditLog.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcAuditLog.ascx index 66bfcbdc..49bb2dfb 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcAuditLog.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcAuditLog.ascx @@ -28,9 +28,6 @@
-
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcCreateServer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcCreateServer.ascx index fe8cbc0c..c7913290 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcCreateServer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcCreateServer.ascx @@ -554,9 +554,6 @@
-
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcExternalNetwork.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcExternalNetwork.ascx index 6c326812..032f6dc4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcExternalNetwork.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcExternalNetwork.ascx @@ -55,9 +55,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcHome.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcHome.ascx index d3ca5f67..250c7c8b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcHome.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcHome.ascx @@ -133,9 +133,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcImportServer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcImportServer.ascx index 5c36dcff..2ad56786 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcImportServer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcImportServer.ascx @@ -277,9 +277,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcManagementNetwork.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcManagementNetwork.ascx index 9a9b5ed0..7083b937 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcManagementNetwork.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcManagementNetwork.ascx @@ -33,9 +33,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcPermissions.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcPermissions.ascx index 259b434b..47887950 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcPermissions.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcPermissions.ascx @@ -115,9 +115,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcPrivateNetwork.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcPrivateNetwork.ascx index 22ca08b9..bf4845b9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcPrivateNetwork.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VdcPrivateNetwork.ascx @@ -92,9 +92,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAddExternalAddress.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAddExternalAddress.ascx index 5332d8cf..e1aa4751 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAddExternalAddress.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAddExternalAddress.ascx @@ -95,9 +95,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAddPrivateAddress.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAddPrivateAddress.ascx index 59dbd3b2..1768d0c3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAddPrivateAddress.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAddPrivateAddress.ascx @@ -90,9 +90,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAuditLog.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAuditLog.ascx index ed03fc79..fa1be724 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAuditLog.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsAuditLog.ascx @@ -31,9 +31,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsConfiguration.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsConfiguration.ascx index e1b1909f..48b155ec 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsConfiguration.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsConfiguration.ascx @@ -202,9 +202,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsDvd.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsDvd.ascx index b2ef47f3..d2fb960c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsDvd.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsDvd.ascx @@ -56,9 +56,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsEditConfiguration.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsEditConfiguration.ascx index e5c581fe..4d483ccf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsEditConfiguration.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsEditConfiguration.ascx @@ -192,9 +192,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsGeneral.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsGeneral.ascx index d9103d75..6af64372 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsGeneral.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsGeneral.ascx @@ -205,9 +205,6 @@ function OpenRemoteDesktopWindow(resolution, width, height) { -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsHelp.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsHelp.ascx index 11901761..b08ce2e2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsHelp.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsHelp.ascx @@ -70,9 +70,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsInsertDvd.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsInsertDvd.ascx index 1ee6548e..f1e641f4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsInsertDvd.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsInsertDvd.ascx @@ -65,9 +65,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsNetwork.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsNetwork.ascx index 69e626f2..a2bb1443 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsNetwork.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsNetwork.ascx @@ -194,9 +194,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsPermissions.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsPermissions.ascx index 8629e842..5aceee81 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsPermissions.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsPermissions.ascx @@ -69,9 +69,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsSnapshots.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsSnapshots.ascx index 926c7053..7a975779 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsSnapshots.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsSnapshots.ascx @@ -93,9 +93,7 @@ -
- -
+ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsTools.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsTools.ascx index 29501c16..91ccb065 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsTools.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsDetailsTools.ascx @@ -50,9 +50,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsMoveServer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsMoveServer.ascx index a120b235..bae82fad 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsMoveServer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsMoveServer.ascx @@ -69,9 +69,6 @@ -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsToolsDeleteServer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsToolsDeleteServer.ascx index 4096ea1a..846bde45 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsToolsDeleteServer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsToolsDeleteServer.ascx @@ -86,9 +86,6 @@

-
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsToolsReinstallServer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsToolsReinstallServer.ascx index bae9bcac..bcae0e67 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsToolsReinstallServer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/VPS/VpsToolsReinstallServer.ascx @@ -103,9 +103,6 @@

-
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryInstall.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryInstall.ascx.cs index f20058b4..6d20c6a8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryInstall.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryInstall.ascx.cs @@ -100,6 +100,12 @@ namespace WebsitePanel.Portal ShowErrorMessage("GALLERY_APP_DOWNLOAD_FAILED"); isSuccess = false; break; + + case GalleryWebAppStatus.UnauthorizedAccessException: + ShowErrorMessage("GALLERY_APP_UNAUTHORIZEDACCESSEXCEPTION"); + isSuccess = false; + break; + } } catch(Exception ex) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx.cs index 860b9e77..1bfbb79a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx.cs @@ -150,8 +150,6 @@ namespace WebsitePanel.Portal AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2005, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2005)); if (cntx.Groups.ContainsKey(ResourceGroups.MsSql2000)) AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2000, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2000)); - - SetDBPolicies(UserSettings.MSSQL_POLICY, parameters); } // MySQL Server @@ -165,8 +163,6 @@ namespace WebsitePanel.Portal AddDatabaseEngine(DeploymentParameterWellKnownTag.MySql, ResourceGroups.MySql5, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MySql5)); if (cntx.Groups.ContainsKey(ResourceGroups.MySql4)) AddDatabaseEngine(DeploymentParameterWellKnownTag.MySql, ResourceGroups.MySql4, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MySql4)); - - SetDBPolicies(UserSettings.MYSQL_POLICY, parameters); } // SQLite @@ -181,6 +177,7 @@ namespace WebsitePanel.Portal if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.VistaDB) != null) AddDatabaseEngine(DeploymentParameterWellKnownTag.VistaDB, "", GetLocalizedString("DatabaseEngine.VistaDB")); + BindDBPolicies(parameters); // hide module if no database required divDatabase.Visible = (databaseEngines.Items.Count > 0); @@ -190,18 +187,42 @@ namespace WebsitePanel.Portal } #region prefix & suffix for database name & username - private void SetDBPolicies(string policy, IEnumerable parameters) + private void BindDBPolicies(List parameters) + { + // MS SQL Server + if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.Sql) != null) + { + SetDBPolicies(UserSettings.MSSQL_POLICY, parameters, DeploymentParameterWellKnownTag.Sql); + } + + // MySQL Server + if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.MySql) != null) + { + SetDBPolicies(UserSettings.MYSQL_POLICY, parameters, DeploymentParameterWellKnownTag.MySql); + } + } + + + private void SetDBPolicies(string policy, IEnumerable parameters, DeploymentParameterWellKnownTag dbTag) { foreach (DeploymentParameter parameter in parameters) { - if ((parameter.WellKnownTags & DeploymentParameterWellKnownTag.DBName) != 0) + if ( + (parameter.WellKnownTags & DeploymentParameterWellKnownTag.DBName) != 0 + && + (parameter.WellKnownTags & dbTag) != 0 + ) { // database name string policyValue = GetPackagePolicy(policy, "DatabaseNamePolicy"); ApplyPrefixSuffixPolicy(parameter, policyValue); } - if ((parameter.WellKnownTags & DeploymentParameterWellKnownTag.DBUserName) != 0) + if ( + (parameter.WellKnownTags & DeploymentParameterWellKnownTag.DBUserName) != 0 + && + (parameter.WellKnownTags & dbTag) != 0 + ) { // user name string policyValue = GetPackagePolicy(policy, "UserNamePolicy"); @@ -302,7 +323,13 @@ namespace WebsitePanel.Portal protected void databaseEngines_SelectedIndexChanged(object sender, EventArgs e) { - BindParameters(); + // load parameters + List parameters = GetApplicationParameters(); + if (parameters == null) + return; + + BindDBPolicies(parameters); + BindParameters(parameters); } protected void databaseMode_SelectedIndexChanged(object sender, EventArgs e) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx index 8c7ddf77..26a9ba7f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx @@ -7,7 +7,7 @@ - . + protected global::System.Web.UI.WebControls.TextBox txtHostName; + /// + /// lblTheDotInTheMiddle control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblTheDotInTheMiddle; + /// /// domainsSelectDomainControl control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx index 3b6e2608..7c973b98 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx @@ -11,7 +11,7 @@ - . + + Text="Include Zone Template" Checked="True" /> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs index 93d85f19..27f2224c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs @@ -62,19 +62,29 @@ namespace WebsitePanel.Portal private void ToggleControls() { + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + rowDedicatedIP.Visible = rbDedicatedIP.Checked; + + if (Utils.CheckQouta(Quotas.WEB_ENABLEHOSTNAMESUPPORT, cntx)) + { + txtHostName.Visible = chkIgnoreGlobalDNSRecords.Visible = lblIgnoreGlobalDNSRecords.Visible = lblTheDotInTheMiddle.Visible = true; + UserSettings settings = ES.Services.Users.GetUserSettings(PanelSecurity.LoggedUserId, UserSettings.WEB_POLICY); + txtHostName.Text = String.IsNullOrEmpty(settings["HostName"]) ? "" : settings["HostName"]; + chkIgnoreGlobalDNSRecords.Checked = false; + } + else + { + txtHostName.Visible = chkIgnoreGlobalDNSRecords.Visible = lblIgnoreGlobalDNSRecords.Visible = lblTheDotInTheMiddle.Visible = false; + chkIgnoreGlobalDNSRecords.Checked = true; + txtHostName.Text = ""; + domainsSelectDomainControl.HideWebSites = true; + } + } private void BindIgnoreZoneTemplate() { - /* - PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); - if (cntx.Quotas[Quotas.WEB_SITES].QuotaUsedValue > 0) - chkIgnoreGlobalDNSRecords.Visible = chkIgnoreGlobalDNSRecords.Checked = lblIgnoreGlobalDNSRecords.Visible = true; - else - chkIgnoreGlobalDNSRecords.Visible = chkIgnoreGlobalDNSRecords.Checked = lblIgnoreGlobalDNSRecords.Visible= false; - */ - chkIgnoreGlobalDNSRecords.Checked = false; } @@ -107,7 +117,7 @@ namespace WebsitePanel.Portal int packageAddressId = rbDedicatedIP.Checked ? Utils.ParseInt(ddlIpAddresses.SelectedValue, 0) : 0; siteItemId = ES.Services.WebServers.AddWebSite(PanelSecurity.PackageId, txtHostName.Text.ToLower(), domainsSelectDomainControl.DomainId, - packageAddressId, chkIgnoreGlobalDNSRecords.Checked); + packageAddressId, !chkIgnoreGlobalDNSRecords.Checked); if (siteItemId < 0) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.designer.cs index fd2055fe..8a021fc1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.designer.cs @@ -39,6 +39,15 @@ namespace WebsitePanel.Portal { ///
protected global::System.Web.UI.WebControls.TextBox txtHostName; + /// + /// lblTheDotInTheMiddle control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblTheDotInTheMiddle; + /// /// domainsSelectDomainControl control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesEditSite.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesEditSite.ascx index 50177473..3af4a279 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesEditSite.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesEditSite.ascx @@ -1,26 +1,17 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebSitesEditSite.ascx.cs" Inherits="WebsitePanel.Portal.WebSitesEditSite" %> <%@ Import Namespace="WebsitePanel.Portal" %> -<%@ Register Src="WebSitesExtensionsControl.ascx" TagName="WebSitesExtensionsControl" - TagPrefix="uc6" %> -<%@ Register Src="WebSitesCustomErrorsControl.ascx" TagName="WebSitesCustomErrorsControl" - TagPrefix="uc4" %> -<%@ Register Src="WebSitesMimeTypesControl.ascx" TagName="WebSitesMimeTypesControl" - TagPrefix="uc5" %> -<%@ Register Src="WebSitesHomeFolderControl.ascx" TagName="WebSitesHomeFolderControl" - TagPrefix="uc1" %> -<%@ Register Src="WebSitesCustomHeadersControl.ascx" TagName="WebSitesCustomHeadersControl" - TagPrefix="uc6" %> -<%@ Register Src="WebSitesSecuredFoldersControl.ascx" TagName="WebSitesSecuredFoldersControl" - TagPrefix="wsp" %> -<%@ Register Src="WebSitesHeliconApeControl.ascx" TagName="WebSitesHeliconApeControl" - TagPrefix="wsp" %> +<%@ Register Src="WebSitesExtensionsControl.ascx" TagName="WebSitesExtensionsControl" TagPrefix="uc6" %> +<%@ Register Src="WebSitesCustomErrorsControl.ascx" TagName="WebSitesCustomErrorsControl" TagPrefix="uc4" %> +<%@ Register Src="WebSitesMimeTypesControl.ascx" TagName="WebSitesMimeTypesControl" TagPrefix="uc5" %> +<%@ Register Src="WebSitesHomeFolderControl.ascx" TagName="WebSitesHomeFolderControl" TagPrefix="uc1" %> +<%@ Register Src="WebSitesCustomHeadersControl.ascx" TagName="WebSitesCustomHeadersControl" TagPrefix="uc6" %> +<%@ Register Src="WebSitesSecuredFoldersControl.ascx" TagName="WebSitesSecuredFoldersControl" TagPrefix="wsp" %> +<%@ Register Src="WebSitesHeliconApeControl.ascx" TagName="WebSitesHeliconApeControl" TagPrefix="wsp" %> <%@ Register Src="UserControls/PasswordControl.ascx" TagName="PasswordControl" TagPrefix="wsp" %> <%@ Register Src="UserControls/UsernameControl.ascx" TagName="UsernameControl" TagPrefix="wsp" %> -<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" - TagPrefix="wsp" %> -<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" - TagPrefix="wsp" %> +<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> +<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> <%@ Register Src="UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %> <%@ Register TagPrefix="wsp" Namespace="WebsitePanel.Portal" %> <%@ Register Src="WebsitesSSL.ascx" TagName="WebsitesSSL" TagPrefix="uc2" %> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesEditSite.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesEditSite.ascx.cs index af5f5e12..d3ac61b0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesEditSite.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesEditSite.ascx.cs @@ -66,6 +66,7 @@ namespace WebsitePanel.Portal new Tab { Id = "mime", ResourceKey = "Tab.MIMETypes", Quota = Quotas.WEB_MIME, ViewId = "tabMimes" }, new Tab { Id = "coldfusion", ResourceKey = "Tab.ColdFusion", Quota = Quotas.WEB_COLDFUSION, ViewId = "tabCF" }, new Tab { Id = "webman", ResourceKey = "Tab.WebManagement", Quota = Quotas.WEB_REMOTEMANAGEMENT, ViewId = "tabWebManagement" }, + new Tab { Id = "SSL", ResourceKey = "Tab.SSL", Quota = Quotas.WEB_SSL, ViewId = "SSL" }, }; private int PackageId @@ -74,6 +75,12 @@ namespace WebsitePanel.Portal set { ViewState["PackageId"] = value; } } + private bool IsDedicatedIP + { + get { return (bool)ViewState["IsDedicatedIP"]; } + set { ViewState["IsDedicatedIP"] = value; } + } + private bool IIs7 { get { return (bool)ViewState["IIs7"]; } @@ -100,7 +107,13 @@ namespace WebsitePanel.Portal private void BindTabs() { // - var filteredTabs = TabsList.FilterTabsByHostingPlanQuotas(PackageId); + var filteredTabs = TabsList.FilterTabsByHostingPlanQuotas(PackageId).ToList(); + + // remove "SSL" tab for a site with dynamic IP + var sslTab = filteredTabs.SingleOrDefault(t => t.Id == "SSL"); + if (!IsDedicatedIP && sslTab != null) + filteredTabs.Remove(sslTab); + var selectedValue = dlTabs.SelectedValue; if (dlTabs.SelectedIndex == -1) @@ -120,7 +133,7 @@ namespace WebsitePanel.Portal else { // Select "Home Folder" tab by default - dlTabs.SelectedIndex = 0; + dlTabs.SelectedIndex = 0; } } @@ -164,6 +177,7 @@ namespace WebsitePanel.Portal lnkSiteName.NavigateUrl = "http://" + site.Name; // bind unassigned IP addresses + ddlIpAddresses.Items.Clear(); PackageIPAddress[] ips = ES.Services.Servers.GetPackageUnassignedIPAddresses(site.PackageId, IPAddressPool.WebSites); foreach (PackageIPAddress ip in ips) { @@ -176,17 +190,20 @@ namespace WebsitePanel.Portal ddlIpAddresses.Items.Add(new ListItem(fullIP, ip.PackageAddressID.ToString())); } - bool isDedicatedIP = false; - if (!String.IsNullOrEmpty(site.SiteIPAddress)) + if (site.IsDedicatedIP) { litIPAddress.Text = site.SiteIPAddress; - isDedicatedIP = true; } - dedicatedIP.Visible = isDedicatedIP; - sharedIP.Visible = !isDedicatedIP; - cmdSwitchToDedicatedIP.Visible = (ddlIpAddresses.Items.Count > 0); - + dedicatedIP.Visible = site.IsDedicatedIP; + sharedIP.Visible = !site.IsDedicatedIP; + + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + if (Utils.CheckQouta(Quotas.WEB_ALLOWIPADDRESSMODESWITCH, cntx)) + cmdSwitchToDedicatedIP.Visible = (ddlIpAddresses.Items.Count > 0); + else + cmdSwitchToDedicatedIP.Visible = cmdSwitchToSharedIP.Visible = false; + litFrontPageUnavailable.Visible = false; tblSharePoint.Visible = site.SharePointInstalled; @@ -255,17 +272,18 @@ namespace WebsitePanel.Portal webSitesMimeTypesControl.BindWebItem(site); webSitesCustomHeadersControl.BindWebItem(site); webSitesCustomErrorsControl.BindWebItem(site); - if (site.SiteIPAddress != null) - { - TabsList.Add(new Tab { Id = "SSL", ResourceKey = "Tab.SSL", Quota = Quotas.WEB_SSL, ViewId = "SSL" }); - TabsList.ForEach((x) => - { - x.Name = GetLocalizedString(x.ResourceKey); - x.ResourceGroup = x.ResourceGroup ?? ResourceGroups.Web; - }); + if (site.IsDedicatedIP) + { + IsDedicatedIP = true; + WebsitesSSLControl.Visible = true; WebsitesSSLControl.BindWebItem(site); } + else + { + IsDedicatedIP = false; + WebsitesSSLControl.Visible = false; + } BindVirtualDirectories(); @@ -1005,6 +1023,7 @@ namespace WebsitePanel.Portal protected void cmdSwitchToDedicatedIP_Click(object sender, EventArgs e) { + sharedIP.Visible = false; switchToDedicatedIP.Visible = true; } @@ -1023,6 +1042,9 @@ namespace WebsitePanel.Portal } ShowSuccessMessage("WEB_SWITCH_TO_SHARED_IP"); + + dlTabs.SelectedIndex = 0; + } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj index 2044722b..bea7dc26 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj @@ -202,6 +202,20 @@ + + OrganizationAddDomainName.ascx + ASPXCodeBehind + + + OrganizationAddDomainName.ascx + + + OrganizationDomainNames.ascx + ASPXCodeBehind + + + OrganizationDomainNames.ascx + ExchangeAddMailboxPlan.ascx ASPXCodeBehind @@ -283,6 +297,13 @@ LyncUsers.ascx + + LyncUserSettings.ascx + ASPXCodeBehind + + + LyncUserSettings.ascx + LyncUserPlanSelector.ascx ASPXCodeBehind @@ -3790,7 +3811,10 @@ + + + @@ -4945,6 +4969,12 @@ + + Designer + + + Designer + Designer diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx index 3e8e082c..93b38d0f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx @@ -148,13 +148,16 @@

- + - - + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.cs index a5e71f64..4333bc31 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.cs @@ -1,4 +1,32 @@ -using System; +// 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.Data; using System.Configuration; using System.Collections; @@ -107,23 +135,10 @@ namespace WebsitePanel.Portal } } - private void BindListOfAvailableSslDomains(ServerBinding[] siteBindings, SSLCertificate[] siteCertificates, string websiteName = "") + private void BindListOfAvailableSslDomains(string websiteName, string domainName) { - lstDomains.Items.Clear(); - // - foreach (ServerBinding binding in siteBindings) - { - // - if (binding.IP.ToString().Length > 0 && binding.Host.Length == 0) - { - lstDomains.Items.Add(new ListItem(websiteName, websiteName)); - lstDomains.Items.Add(new ListItem(String.Format("www.{0}", websiteName), String.Format("www.{0}", websiteName))); - } - else - { - lstDomains.Items.Add(new ListItem(binding.Host, binding.Host)); - } - } + rbSiteCertificate.Text = websiteName; + rbDomainCertificate.Text = "*." + domainName; } public void BindWebItem(WebVirtualDirectory item) @@ -144,8 +159,20 @@ namespace WebsitePanel.Portal SSLCertificate[] certificates = ES.Services.WebServers.GetCertificatesForSite(item.Id); SSLNotInstalled.Visible = true; + + DomainInfo[] domains = ES.Services.Servers.GetDomains(PanelSecurity.PackageId); + string zoneName = string.Empty; + foreach (DomainInfo d in domains) + { + if (d.WebSiteId == SiteId) + { + zoneName = d.ZoneName; + break; + } + } + // - BindListOfAvailableSslDomains(webSite.Bindings, certificates, webSite.Name); + BindListOfAvailableSslDomains(webSite.Name, zoneName); if (certificates.Length > 0) { @@ -237,25 +264,22 @@ namespace WebsitePanel.Portal protected void btnCSR_Click(object sender, EventArgs e) { - string domain = lstDomains.SelectedValue; - // Ensure wildcard certificate request is correct - if (chkWild.Checked) - domain = "*." + domain; // string distinguishedName = string.Format(@"CN={0}, O={1}, OU={2}, L={3}, S={4}, - C={5}", domain, - txtCompany.Text, - txtOU.Text, - txtCity.Text, - State, - lstCountries.SelectedValue); + C={5}", + rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text, + txtCompany.Text, + txtOU.Text, + txtCity.Text, + State, + lstCountries.SelectedValue); SSLCertificate certificate = new SSLCertificate(); - certificate.Hostname = domain; + certificate.Hostname = rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text; certificate.DistinguishedName = distinguishedName; certificate.CSRLength = Convert.ToInt32(lstBits.SelectedValue); certificate.Organisation = txtCompany.Text; @@ -307,18 +331,12 @@ namespace WebsitePanel.Portal protected void btnRenCSR_Click(object sender, EventArgs e) { - // - string domain = lstDomains.SelectedValue; - // - if (chkWild.Checked) - domain = "*." + domain; - // string distinguishedName = string.Format(@"CN={0}, O={1}, OU={2}, L={3}, S={4}, - C={5}", domain, + C={5}", rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text, txtCompany.Text, txtOU.Text, txtCity.Text, @@ -326,7 +344,7 @@ namespace WebsitePanel.Portal lstCountries.SelectedValue); SSLCertificate certificate = new SSLCertificate(); - certificate.Hostname = domain; + certificate.Hostname = rbSiteCertificate.Checked ? rbSiteCertificate.Text : rbDomainCertificate.Text; certificate.DistinguishedName = distinguishedName; certificate.CSRLength = Convert.ToInt32(lstBits.SelectedValue); certificate.Organisation = txtCompany.Text; @@ -382,6 +400,8 @@ namespace WebsitePanel.Portal pnlInstallCertificate.Visible = false; SSLNotInstalled.Visible = true; // + TabContainer1.ActiveTab = tabInstalled; + RefreshControlLayout(webSiteId); } @@ -508,12 +528,7 @@ namespace WebsitePanel.Portal tabCSR.HeaderText = GetLocalizedString("SSLGenereateRenewal.HeaderText"); string hostname = cert.Hostname; - // Check if it is a wildcard certificate - if (!String.IsNullOrEmpty(cert.Hostname) && cert.Hostname.StartsWith("*")) - { - chkWild.Checked = true; - hostname = hostname.Remove(0, 2); - } + // Assign hostname SetCertHostnameSelection(hostname); // Assign state @@ -568,7 +583,20 @@ namespace WebsitePanel.Portal SSLNotInstalled.Visible = true; // - BindListOfAvailableSslDomains(item.Bindings, certificates, item.Name); + + DomainInfo[] domains = ES.Services.Servers.GetDomains(PanelSecurity.PackageId); + string zoneName = string.Empty; + foreach (DomainInfo d in domains) + { + if (d.WebSiteId == item.Id) + { + zoneName = d.ZoneName; + break; + } + } + + // + BindListOfAvailableSslDomains(item.Name, zoneName); if (certificates.Length > 0) { @@ -640,14 +668,7 @@ namespace WebsitePanel.Portal protected void SetCertHostnameSelection(string hostname) { - //Bind new CSR with current certificate details - var li = lstDomains.Items.FindByValue(hostname); - // Select domain name from the existing certificate - if (li != null) - { - lstDomains.ClearSelection(); - li.Selected = true; - } + rbSiteCertificate.Checked = (rbSiteCertificate.Text == hostname); } protected void SetCertCountrySelection(string country) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.designer.cs index ed9eb37e..984340df 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitesSSL.ascx.designer.cs @@ -1,4 +1,32 @@ -//------------------------------------------------------------------------------ +// 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. + +//------------------------------------------------------------------------------ // // This code was generated by a tool. // @@ -337,31 +365,31 @@ namespace WebsitePanel.Portal { protected global::System.Web.UI.WebControls.Panel pnlCSR; /// - /// sslDomain control. + /// SelectCertType control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Localize sslDomain; + protected global::System.Web.UI.WebControls.Localize SelectCertType; /// - /// lstDomains control. + /// rbSiteCertificate control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.DropDownList lstDomains; + protected global::System.Web.UI.WebControls.RadioButton rbSiteCertificate; /// - /// chkWild control. + /// rbDomainCertificate control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.CheckBox chkWild; + protected global::System.Web.UI.WebControls.RadioButton rbDomainCertificate; /// /// sslBitLength control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj index c93b1a73..b28564d3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj @@ -221,7 +221,9 @@ - + + Designer + diff --git a/WebsitePanel/Sources/generate_es_proxies.bat b/WebsitePanel/Sources/generate_es_proxies.bat index d6b8b5e1..5a4fbd8d 100644 --- a/WebsitePanel/Sources/generate_es_proxies.bat +++ b/WebsitePanel/Sources/generate_es_proxies.bat @@ -56,8 +56,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OCSProxy.cs REM %WSDL% %SERVER_URL%/esOperatingSystems.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OperatingSystemsProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OperatingSystemsProxy.cs -REM %WSDL% %SERVER_URL%/esOrganizations.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient -REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs +%WSDL% %SERVER_URL%/esOrganizations.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient +%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs REM %WSDL% %SERVER_URL%/esPackages.asmx /out:.\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs @@ -86,8 +86,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxy REM %WSDL% %SERVER_URL%/esWebApplicationGallery.asmx /out:.\WebsitePanel.EnterpriseServer.Client\WebApplicationGalleryProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebApplicationGalleryProxy.cs -%WSDL% %SERVER_URL%/esWebServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient -%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs +REM %WSDL% %SERVER_URL%/esWebServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs REM %WSDL% %SERVER_URL%/esVirtualizationServerForPrivateCloud.asmx /out:.\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs diff --git a/WebsitePanel/Sources/generate_server_proxies.bat b/WebsitePanel/Sources/generate_server_proxies.bat index 2ef3d080..d4811b50 100644 --- a/WebsitePanel/Sources/generate_server_proxies.bat +++ b/WebsitePanel/Sources/generate_server_proxies.bat @@ -17,8 +17,8 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\DatabaseServerProxy.cs REM %WSDL% %SERVER_URL%/DNSServer.asmx /out:.\WebsitePanel.Server.Client\DnsServerProxy.cs /namespace:WebsitePanel.Providers.DNS /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\DnsServerProxy.cs -%WSDL% %SERVER_URL%/ExchangeServer.asmx /out:.\WebsitePanel.Server.Client\ExchangeServerProxy.cs /namespace:WebsitePanel.Providers.Exchange /type:webClient /fields -%WSE_CLEAN% .\WebsitePanel.Server.Client\ExchangeServerProxy.cs +REM %WSDL% %SERVER_URL%/ExchangeServer.asmx /out:.\WebsitePanel.Server.Client\ExchangeServerProxy.cs /namespace:WebsitePanel.Providers.Exchange /type:webClient /fields +REM %WSE_CLEAN% .\WebsitePanel.Server.Client\ExchangeServerProxy.cs REM %WSDL% %SERVER_URL%/ExchangeServerHostedEdition.asmx /out:.\WebsitePanel.Server.Client\ExchangeServerHostedEditionProxy.cs /namespace:WebsitePanel.Providers.ExchangeHostedEdition /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\ExchangeServerHostedEditionProxy.cs @@ -35,8 +35,8 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\OCSServerProxy.cs REM %WSDL% %SERVER_URL%/OperatingSystem.asmx /out:.\WebsitePanel.Server.Client\OperatingSystemProxy.cs /namespace:WebsitePanel.Providers.OS /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\OperatingSystemProxy.cs -REM %WSDL% %SERVER_URL%/Organizations.asmx /out:.\WebsitePanel.Server.Client\OrganizationProxy.cs /namespace:WebsitePanel.Providers.HostedSolution /type:webClient /fields -REM %WSE_CLEAN% .\WebsitePanel.Server.Client\OrganizationProxy.cs +%WSDL% %SERVER_URL%/Organizations.asmx /out:.\WebsitePanel.Server.Client\OrganizationProxy.cs /namespace:WebsitePanel.Providers.HostedSolution /type:webClient /fields +%WSE_CLEAN% .\WebsitePanel.Server.Client\OrganizationProxy.cs REM %WSDL% %SERVER_URL%/ServiceProvider.asmx /out:.\WebsitePanel.Server.Client\ServiceProviderProxy.cs /namespace:WebsitePanel.Providers /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\ServiceProviderProxy.cs diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index 3bad961c..b702c327 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -721,7 +721,6 @@ -
- - -