From 7bc0cc88fa651c7e556ef175f432eebf690e87f7 Mon Sep 17 00:00:00 2001 From: rdolezel Date: Tue, 11 Sep 2012 22:09:03 +0200 Subject: [PATCH 001/379] Work item 175 Exchange Accepted Domain can be switched between Authoritative and InternalRelay --- WebsitePanel/Database/install_db.sql | 29 ++++++++- WebsitePanel/Database/update_db.sql | 60 ++++++++++++++++++ .../OrganizationProxy.cs | 11 ++++ .../Code/Data/DataProvider.cs | 12 ++++ .../ExchangeServerController.cs | 62 ++++++++++++++++++- .../HostedSolution/OrganizationController.cs | 31 ++++++++++ .../Code/Servers/ServerController.cs | 4 +- .../esOrganizations.asmx.cs | 6 ++ .../ExchangeAcceptedDomainType.cs | 37 +++++++++++ .../HostedSolution/IExchangeServer.cs | 1 + .../HostedSolution/OrganizationDomainName.cs | 17 +++++ .../WebsitePanel.Providers.Base.csproj | 1 + .../Exchange2007.cs | 41 ++++++++++++ .../ExchangeServerProxy.cs | 12 +++- .../ExchangeServer.asmx.cs | 15 +++++ .../ExchangeServer/ExchangeDomainNames.ascx | 18 +++++- .../ExchangeDomainNames.ascx.cs | 32 ++++++++++ .../ExchangeDomainNames.ascx.designer.cs | 9 --- 18 files changed, 382 insertions(+), 16 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeAcceptedDomainType.cs diff --git a/WebsitePanel/Database/install_db.sql b/WebsitePanel/Database/install_db.sql index a8b29b45..735ecd50 100644 --- a/WebsitePanel/Database/install_db.sql +++ b/WebsitePanel/Database/install_db.sql @@ -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 @@ -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 a19a94b4..de26ee66 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5211,6 +5211,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, diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs index 78934577..8cf5ab0d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs @@ -735,6 +735,17 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { domainId}); return ((int)(results[0])); } + + /// + [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 BeginDeleteOrganizationDomain(int itemId, int domainId, System.AsyncCallback callback, object asyncState) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index 336f9a1c..1539cb04 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -2152,6 +2152,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( diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 9fe58540..797af2f3 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -446,6 +446,10 @@ namespace WebsitePanel.EnterpriseServer { hubTransportRole.AddAuthoritativeDomain(domain.DomainName); } + if (domain.DomainType != ExchangeAcceptedDomainType.Authoritative) + { + hubTransportRole.ChangeAcceptedDomainType(domain.DomainName, domain.DomainType); + } } authDomainCreated = true; break; @@ -1423,8 +1427,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) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 824e058a..13057b80 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1042,6 +1042,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) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index bf469d50..1e053087 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -1588,8 +1588,8 @@ namespace WebsitePanel.EnterpriseServer return BusinessErrorCodes.ERROR_RESTRICTED_DOMAIN; else return checkDomainResult; - } - + } + public static List GetDomains(int packageId, bool recursive) { return ObjectUtils.CreateListFromDataSet( diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs index 9cd223ce..f81ad8cf 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs @@ -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) { 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/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/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/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index 3fed47eb..b8623bcf 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -80,6 +80,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index e48e2dca..046c5a44 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 @@ -5916,6 +5921,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"); @@ -5980,6 +6010,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.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/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.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx index 54abfc9d..1ab3e776 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 @@ + + +
+ +
+
+
+ + +
+ +
+
+
/>
-
+   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; } } From b95cdf59b37087cc8b6607578b4629177e86d699 Mon Sep 17 00:00:00 2001 From: rdolezel Date: Wed, 12 Sep 2012 15:10:12 +0200 Subject: [PATCH 002/379] Forgotten localization --- .../App_LocalResources/ExchangeDomainNames.ascx.resx | 9 +++++++++ .../WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) 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..77fff6cd 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 @@ -155,4 +155,13 @@ Domain Names + + Domain Type + + + Change Type + + + Change + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx index 1ab3e776..c060f31b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx @@ -51,7 +51,7 @@
- +
From cff894e0916d640dc0ad37a37157184441db7b92 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 15 Sep 2012 09:27:33 +0400 Subject: [PATCH 003/379] Fixed: GlobalDNSREcord only accepts ip addresses. Input validation removed from control. --- .../DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx | 1 + .../WebsitePanel/GlobalDnsRecordsControl.ascx.cs | 3 +++ 2 files changed, 4 insertions(+) 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() From ec44c6bdde9b7a151a5b086a1feadeafa5630b2c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 15 Sep 2012 18:23:35 -0400 Subject: [PATCH 004/379] Added tag build-2.0.0.36 for changeset d7bedb3ba2df From f7d7bcfafc5d9210653a7c9774036c9e1c5dd22e Mon Sep 17 00:00:00 2001 From: Haya Nmeir Date: Sun, 16 Sep 2012 02:22:05 +0300 Subject: [PATCH 005/379] This built contains the functionality to set hard quota on the website content folder. It requires FSRM to be installed on the File Server, Name of the share where the home folders are create should contain the drive name preceeded by _ e.g. SharedConfig_C. Quota is retrieved from OS disk space quota, quota unit is retrieved from quota description field in the quotas table, this info is fed to Dirquota command and the quota is set accordingly. --- .../Code/Files/FilesController.cs | 71 +++++++++++ .../Code/WebServers/WebServerController.cs | 3 + .../WebsitePanel.EnterpriseServer/Web.config | 40 +++--- .../WebsitePanel.EnterpriseServer.csproj | 6 + .../OS/IOperatingSystem.cs | 1 + .../WebsitePanel.Providers.Base.csproj | 9 ++ .../Windows2003.cs | 11 ++ .../OperatingSystemProxy.cs | 87 ++++++++++++- .../WebsitePanel.Server.Utils/FileUtils.cs | 116 ++++++++++++++++++ .../OperatingSystem.asmx.cs | 17 +++ .../Sources/WebsitePanel.Server/Web.config | 2 +- .../WebsitePanel.Server.csproj | 5 + .../WebsitePanel.WebPortal.csproj | 1 + 13 files changed, 347 insertions(+), 22 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs index 7784cad8..4314bcd0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs @@ -912,5 +912,76 @@ namespace WebsitePanel.EnterpriseServer return users.ToArray(); } + + public static int SetFolderQuota(int packageId, string path) + { + + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // check package + int packageCheck = SecurityContext.CheckPackage(packageId, DemandPackage.IsActive); + if (packageCheck < 0) return packageCheck; + + // place log record + TaskManager.StartTask("FILES", "SET_QUOTA_ON_FOLDER", path); + TaskManager.ItemId = packageId; + + try + { + + // file server cluster name + string fileServerClusterName = String.Empty; + + // Share Name where home folders are created + string shareName = String.Empty; + + string[] splits = GetHomeFolder(packageId).Split('\\'); + + if (splits.Length > 4) + { + fileServerClusterName = splits[2]; + shareName = splits[3]; + } + + // disk space quota + QuotaValueInfo diskSpaceQuota = PackageController.GetPackageQuota(packageId, Quotas.OS_DISKSPACE); + + // bat file pat + string cmdFilePath = @"\\" + fileServerClusterName + @"\" + shareName + @"\" + "Process.bat"; + + #region figure Quota Unit + + // Quota Unit + string unit = String.Empty; + if (diskSpaceQuota.QuotaDescription.ToLower().Contains("gb")) + unit = "GB"; + else if (diskSpaceQuota.QuotaDescription.ToLower().Contains("mb")) + unit = "MB"; + else + unit = "KB"; + + #endregion + + OS.OperatingSystem os = GetOS(packageId); + os.SetQuotaLimitOnFolder(cmdFilePath, fileServerClusterName, path, diskSpaceQuota.QuotaAllocatedValue.ToString() + unit, 0, String.Empty, String.Empty); + + return 0; + } + catch (Exception ex) + { + //Log and return a generic error rather than throwing an exception + TaskManager.WriteError(ex); + return BusinessErrorCodes.ERROR_FILE_GENERIC_LOGGED; + } + finally + { + TaskManager.CompleteTask(); + } + + + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 5ea67ab0..a703fa4f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -377,6 +377,9 @@ namespace WebsitePanel.EnterpriseServer // CREATE WEB SITE siteId = web.CreateSite(site); + // Set hard quota on the website content folder + FilesController.SetFolderQuota(packageId, site.DataPath); + // register item site.ServiceId = serviceId; site.PackageId = packageId; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index b78330c8..56350e5d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -1,56 +1,56 @@ - + -
+
- + - + - + - + - + - + - + - + - - - + + + - + - + - + - - + + - + - + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj index 52285130..ac8ea558 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj @@ -19,6 +19,11 @@ v4.0 + false + + + + true @@ -410,6 +415,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs index fc9f3076..73088563 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs @@ -81,5 +81,6 @@ namespace WebsitePanel.Providers.OS // Synchronizing FolderGraph GetFolderGraph(string path); void ExecuteSyncActions(FileSyncAction[] actions); + void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword); } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index 3fed47eb..137151d2 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -92,6 +92,11 @@ + + True + True + Settings.settings + @@ -312,6 +317,10 @@ + + SettingsSingleFileGenerator + Settings.Designer.cs + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs index f251bd66..0965df57 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs @@ -209,6 +209,17 @@ namespace WebsitePanel.Providers.OS SecurityUtils.GrantGroupNtfsPermissions(path, users, resetChildPermissions, ServerSettings, usersOU, null); } + + public virtual void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) + { + FileUtils.SetQuotaLimitOnFolder(cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword); + } + + public static void DeleteDirRecursive(DirectoryInfo treeRoot) + { + FileUtils.DeleteDirectoryRecursive(treeRoot); + } + #endregion #region ODBC DSNs diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs index f40b6d59..d641b6f1 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs @@ -61,6 +61,8 @@ namespace WebsitePanel.Providers.OS { private System.Threading.SendOrPostCallback CreatePackageFolderOperationCompleted; private System.Threading.SendOrPostCallback FileExistsOperationCompleted; + + private System.Threading.SendOrPostCallback SetQuotaLimitOnFolderOperationCompleted; private System.Threading.SendOrPostCallback DirectoryExistsOperationCompleted; @@ -131,7 +133,8 @@ namespace WebsitePanel.Providers.OS { private System.Threading.SendOrPostCallback UpdateDSNOperationCompleted; private System.Threading.SendOrPostCallback DeleteDSNOperationCompleted; - + + /// public OperatingSystem() { this.Url = "http://localhost/Server/OperatingSystem.asmx"; @@ -142,6 +145,8 @@ namespace WebsitePanel.Providers.OS { /// public event FileExistsCompletedEventHandler FileExistsCompleted; + + public event SetQuotaLimitOnFolderCompletedEventHandler SetQuotaLimitOnFolderCompleted; /// public event DirectoryExistsCompletedEventHandler DirectoryExistsCompleted; @@ -331,6 +336,56 @@ namespace WebsitePanel.Providers.OS { this.FileExistsCompleted(this, new FileExistsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } + + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetQuotaLimitOnFolder", 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 SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) + { + object[] results = this.Invoke("SetQuotaLimitOnFolder", new object[] { + cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword}); + return ((bool)(results[0])); + } + + /// + public System.IAsyncResult BeginSetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword, System.AsyncCallback callback, object asyncState) + { + return this.BeginInvoke("SetQuotaLimitOnFolder", new object[] { + cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword}, callback, asyncState); + } + + /// + public bool EndSetQuotaLimitOnFolder(System.IAsyncResult asyncResult) + { + object[] results = this.EndInvoke(asyncResult); + return ((bool)(results[0])); + } + + /// + public void SetQuotaLimitOnFolderAsync(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) + { + this.SetQuotaLimitOnFolderAsync(cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword, null); + } + + /// + public void SetQuotaLimitOnFolderAsync(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword, object userState) + { + if ((this.FileExistsOperationCompleted == null)) + { + this.FileExistsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnFileExistsOperationCompleted); + } + this.InvokeAsync("SetQuotaLimitOnFolder", new object[] { + cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword}, this.SetQuotaLimitOnFolderOperationCompleted, userState); + } + + private void OnSetQuotaLimitOnFolderOperationCompleted(object arg) + { + if ((this.SetQuotaLimitOnFolderCompleted != null)) + { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetQuotaLimitOnFolderCompleted(this, new SetQuotaLimitOnFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] @@ -1899,6 +1954,36 @@ namespace WebsitePanel.Providers.OS { } } } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void SetQuotaLimitOnFolderCompletedEventHandler(object sender, SetQuotaLimitOnFolderCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SetQuotaLimitOnFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs + { + + private object[] results; + + internal SetQuotaLimitOnFolderCompletedEventArgs(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.42")] diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs b/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs index f30354a5..77d6d45e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs @@ -37,6 +37,7 @@ using System.Collections.Generic; using System.Reflection; using Ionic.Zip; using WebsitePanel.Providers.OS; +using System.Management; namespace WebsitePanel.Providers.Utils { @@ -844,6 +845,121 @@ namespace WebsitePanel.Providers.Utils conn, null); cat = null; } + + public static void DeleteDirectoryRecursive(DirectoryInfo treeRoot) + { + if (treeRoot.Exists) + { + + DirectoryInfo[] dirs = treeRoot.GetDirectories(); + while (dirs.Length > 0) + { + foreach (DirectoryInfo dir in dirs) + DeleteDirectoryRecursive(dir); + + dirs = treeRoot.GetDirectories(); + } + + // DELETE THE FILES UNDER THE CURRENT ROOT + string[] files = Directory.GetFiles(treeRoot.FullName); + foreach (string file in files) + { + File.SetAttributes(file, FileAttributes.Normal); + File.Delete(file); + } + + Directory.Delete(treeRoot.FullName, true); + } + + } + + public static void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) + { + try + { + string[] splits = folderPath.Split('\\'); + if (splits.Length > 0) + { + // Creating the BAT file + FileStream fs = File.Create(cmdFilePath); + if (fs != null) + { + fs.Close(); + fs.Dispose(); + } + + StreamWriter swr = new StreamWriter(cmdFilePath); + + if (swr != null) + { + swr.WriteLine(@"cd c:\windows\system32"); + + string[] shareDrive = { }; + string sharePath = String.Empty; + + if (splits.Length > 4) + { + // Check the share name if it's not an empty string + if (splits[3].Length > 0) + shareDrive = splits[3].Split('_'); + + // Form the share physicalPath + if (shareDrive.Length == 2) + sharePath = shareDrive[1] + @":\" + splits[3]; + + if (splits.Length == 7 && !quotaLimit.Equals(String.Empty)) + { + splits[6] = "wwwroot"; + + switch (mode) + { + // Set + case 0: swr.WriteLine(@"dirquota quota add /path:" + sharePath + @"\" + splits[4] + @"\" + splits[5] + @"\" + splits[6] + @" /limit:" + quotaLimit + @" /remote:" + splits[2]); + break; + + // Modify + case 1: swr.WriteLine(@"dirquota quota modify /path:" + sharePath + @"\" + splits[4] + @"\" + splits[5] + @"\" + splits[6] + @" /limit:" + quotaLimit + @" /remote:" + splits[2]); + break; + } + } + + + } + swr.Flush(); + swr.Close(); + swr.Dispose(); + } + + ConnectionOptions connOptions = new ConnectionOptions(); + + if (wmiUserName.Length > 0) + { + connOptions.Username = wmiUserName; + connOptions.Password = wmiPassword; + } + + connOptions.Impersonation = ImpersonationLevel.Impersonate; + + connOptions.EnablePrivileges = true; + + ManagementScope manScope = + new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", virtualFileClusterName), connOptions); + manScope.Connect(); + + ObjectGetOptions objectGetOptions = new ObjectGetOptions(); + ManagementPath managementPath = new ManagementPath("Win32_Process"); + ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions); + + ManagementBaseObject inParams = processClass.GetMethodParameters("Create"); + inParams["CommandLine"] = cmdFilePath; + ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null); + + } + } + catch + { } + } + #region Advanced Delete /// /// Deletes the specified file. diff --git a/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs index e258900a..3e24a15e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs @@ -533,6 +533,23 @@ namespace WebsitePanel.Server throw; } } + + + [WebMethod, SoapHeader("settings")] + public void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) + { + try + { + Log.WriteStart("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName); + OsProvider.SetQuotaLimitOnFolder(cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword); + Log.WriteEnd("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName); + } + catch (Exception ex) + { + Log.WriteError(String.Format("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName), ex); + throw; + } + } #endregion #region Synchronizing diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Web.config b/WebsitePanel/Sources/WebsitePanel.Server/Web.config index 48568b3a..f4c59fb4 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.Server/Web.config @@ -44,7 +44,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj index 890ebc21..5c4731db 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj @@ -20,6 +20,10 @@ v3.5 false + + + + true @@ -231,6 +235,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj index c93b1a73..e852620d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj @@ -241,6 +241,7 @@ + From c59d38319013f615f67c13186aa7bacad342f42a Mon Sep 17 00:00:00 2001 From: rdolezel Date: Mon, 17 Sep 2012 19:30:10 +0200 Subject: [PATCH 006/379] REG file must be ANSI, not UTF-8, otherwise the following error appears: "Cannot import *.reg. The specified file is not a registry script. You can only import binary registry files from within the registry editor." --- .../Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg index 755c888a..2b3dd766 100644 --- a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg +++ b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg @@ -1,4 +1,4 @@ -Windows Registry Editor Version 5.00 +Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\MEACPTransportAgent] "MaxSize"=dword:00080000 From b9719979e682d81acec933d8b05b6ffdecb6c91d Mon Sep 17 00:00:00 2001 From: rdolezel Date: Mon, 17 Sep 2012 19:55:39 +0200 Subject: [PATCH 007/379] REG file contained wrong subkey names. Installation instructions revised and tested. --- .../Tools/WSPTransportAgent/WSPTransportAgent.reg | 4 ++-- .../Tools/WSPTransportAgent/WSPTransportAgent.txt | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.txt diff --git a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg index 2b3dd766..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 -[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 From d2721cd372fbb0459cb3ed97105d24422898adda Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 17 Sep 2012 23:36:13 -0400 Subject: [PATCH 008/379] Added tag build-2.0.0.37 for changeset f5d1555a1d30 From e45eff5297342f8286210210d1889f6f4abb93db Mon Sep 17 00:00:00 2001 From: Haya Nmeir Date: Tue, 18 Sep 2012 09:14:06 +0300 Subject: [PATCH 009/379] Update the delete website function to delete the website directory tree and the remote management access accounts. --- .../Code/Files/FilesController.cs | 37 ++++++++ .../Code/WebServers/WebServerController.cs | 8 ++ .../OS/IOperatingSystem.cs | 3 + .../Windows2003.cs | 4 +- .../OperatingSystemProxy.cs | 92 ++++++++++++++++++- .../WebsitePanel.Server.Utils/FileUtils.cs | 45 +++++---- .../OperatingSystem.asmx.cs | 16 ++++ 7 files changed, 181 insertions(+), 24 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs index 4314bcd0..3e58f78a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs @@ -983,5 +983,42 @@ namespace WebsitePanel.EnterpriseServer } + public static int DeleteDirectoryRecursive(int packageId, string rootPath) + { + + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // check package + int packageCheck = SecurityContext.CheckPackage(packageId, DemandPackage.IsActive); + if (packageCheck < 0) return packageCheck; + + // place log record + TaskManager.StartTask("FILES", "DELETE_DIRECTORY_RECURSIVE", rootPath); + TaskManager.ItemId = packageId; + + try + { + + OS.OperatingSystem os = GetOS(packageId); + os.DeleteDirectoryRecursive(rootPath); + + return 0; + } + catch (Exception ex) + { + //Log and return a generic error rather than throwing an exception + TaskManager.WriteError(ex); + return BusinessErrorCodes.ERROR_FILE_GENERIC_LOGGED; + } + finally + { + TaskManager.CompleteTask(); + } + + + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index a703fa4f..8966ac3a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -599,6 +599,14 @@ namespace WebsitePanel.EnterpriseServer // web.DeleteSite(siteItem.SiteId); + // Delete WebManagementAccess Account + WebServerController.RevokeWebManagementAccess(siteItemId); + + // Delete website directory from file server + // This will remove the hard quota as well + FilesController.DeleteDirectoryRecursive(siteItem.PackageId, new DirectoryInfo(siteItem.DataPath).Parent.FullName); + + // delete service item PackageController.DeletePackageItem(siteItemId); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs index 73088563..add15c94 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs @@ -28,6 +28,7 @@ using System; using System.Collections; +using System.IO; namespace WebsitePanel.Providers.OS { @@ -82,5 +83,7 @@ namespace WebsitePanel.Providers.OS FolderGraph GetFolderGraph(string path); void ExecuteSyncActions(FileSyncAction[] actions); void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword); + void DeleteDirectoryRecursive(string rootPath); + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs index 0965df57..1d37b8b3 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs @@ -215,9 +215,9 @@ namespace WebsitePanel.Providers.OS FileUtils.SetQuotaLimitOnFolder(cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword); } - public static void DeleteDirRecursive(DirectoryInfo treeRoot) + public virtual void DeleteDirectoryRecursive(string rootPath) { - FileUtils.DeleteDirectoryRecursive(treeRoot); + FileUtils.DeleteDirectoryRecursive(rootPath); } #endregion diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs index d641b6f1..34be86c2 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs @@ -63,6 +63,8 @@ namespace WebsitePanel.Providers.OS { private System.Threading.SendOrPostCallback FileExistsOperationCompleted; private System.Threading.SendOrPostCallback SetQuotaLimitOnFolderOperationCompleted; + + private System.Threading.SendOrPostCallback DeleteDirectoryRecursiveOperationCompleted; private System.Threading.SendOrPostCallback DirectoryExistsOperationCompleted; @@ -146,7 +148,11 @@ namespace WebsitePanel.Providers.OS { /// public event FileExistsCompletedEventHandler FileExistsCompleted; + /// public event SetQuotaLimitOnFolderCompletedEventHandler SetQuotaLimitOnFolderCompleted; + + /// + public event DeleteDirectoryRecursiveCompletedEventHandler DeleteDirectoryRecursiveCompleted; /// public event DirectoryExistsCompletedEventHandler DirectoryExistsCompleted; @@ -370,9 +376,9 @@ namespace WebsitePanel.Providers.OS { /// public void SetQuotaLimitOnFolderAsync(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword, object userState) { - if ((this.FileExistsOperationCompleted == null)) + if ((this.SetQuotaLimitOnFolderOperationCompleted == null)) { - this.FileExistsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnFileExistsOperationCompleted); + this.SetQuotaLimitOnFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetQuotaLimitOnFolderOperationCompleted); } this.InvokeAsync("SetQuotaLimitOnFolder", new object[] { cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword}, this.SetQuotaLimitOnFolderOperationCompleted, userState); @@ -386,6 +392,57 @@ namespace WebsitePanel.Providers.OS { this.SetQuotaLimitOnFolderCompleted(this, new SetQuotaLimitOnFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } + + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteDirectoryRecursive", 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 DeleteDirectoryRecursive(string rootPath) + { + object[] results = this.Invoke("DeleteDirectoryRecursive", new object[] { + rootPath }); + return ((bool)(results[0])); + } + + /// + public System.IAsyncResult BeginDeleteDirectoryRecursive(string rootPath, System.AsyncCallback callback, object asyncState) + { + return this.BeginInvoke("DeleteDirectoryRecursive", new object[] { + rootPath}, callback, asyncState); + } + + /// + public bool EndDeleteDirectoryRecursive(System.IAsyncResult asyncResult) + { + object[] results = this.EndInvoke(asyncResult); + return ((bool)(results[0])); + } + + /// + public void DeleteDirectoryRecursiveAsync(string rootPath) + { + this.DeleteDirectoryRecursiveAsync(rootPath, null); + } + + /// + public void DeleteDirectoryRecursiveAsync(string rootPath, object userState) + { + if ((this.DeleteDirectoryRecursiveOperationCompleted == null)) + { + this.DeleteDirectoryRecursiveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteDirectoryRecursiveOperationCompleted); + } + this.InvokeAsync("DeleteDirectoryRecursive", new object[] { + rootPath}, this.DeleteDirectoryRecursiveOperationCompleted, userState); + } + + private void OnDeleteDirectoryRecursiveOperationCompleted(object arg) + { + if ((this.DeleteDirectoryRecursiveCompleted != null)) + { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.DeleteDirectoryRecursiveCompleted(this, new DeleteDirectoryRecursiveCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] @@ -1984,6 +2041,37 @@ namespace WebsitePanel.Providers.OS { } } } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void DeleteDirectoryRecursiveCompletedEventHandler(object sender, DeleteDirectoryRecursiveCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class DeleteDirectoryRecursiveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs + { + + private object[] results; + + internal DeleteDirectoryRecursiveCompletedEventArgs(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.42")] diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs b/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs index 77d6d45e..06433897 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs @@ -846,30 +846,35 @@ namespace WebsitePanel.Providers.Utils cat = null; } - public static void DeleteDirectoryRecursive(DirectoryInfo treeRoot) + public static void DeleteDirectoryRecursive(string rootPath) { - if (treeRoot.Exists) - { - - DirectoryInfo[] dirs = treeRoot.GetDirectories(); - while (dirs.Length > 0) + // This code is done this way to force folder deletion + // even if the folder was opened + + DirectoryInfo treeRoot = new DirectoryInfo(rootPath); + if (treeRoot.Exists) { - foreach (DirectoryInfo dir in dirs) - DeleteDirectoryRecursive(dir); - dirs = treeRoot.GetDirectories(); + DirectoryInfo[] dirs = treeRoot.GetDirectories(); + while (dirs.Length > 0) + { + foreach (DirectoryInfo dir in dirs) + DeleteDirectoryRecursive(dir.FullName); + + dirs = treeRoot.GetDirectories(); + } + + // DELETE THE FILES UNDER THE CURRENT ROOT + string[] files = Directory.GetFiles(treeRoot.FullName); + foreach (string file in files) + { + File.SetAttributes(file, FileAttributes.Normal); + File.Delete(file); + } + + Directory.Delete(treeRoot.FullName, true); } - - // DELETE THE FILES UNDER THE CURRENT ROOT - string[] files = Directory.GetFiles(treeRoot.FullName); - foreach (string file in files) - { - File.SetAttributes(file, FileAttributes.Normal); - File.Delete(file); - } - - Directory.Delete(treeRoot.FullName, true); - } + } diff --git a/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs index 3e24a15e..d226536f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs @@ -550,6 +550,22 @@ namespace WebsitePanel.Server throw; } } + + [WebMethod, SoapHeader("settings")] + public void DeleteDirectoryRecursive(string rootPath) + { + try + { + Log.WriteStart("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName); + OsProvider.DeleteDirectoryRecursive(rootPath); + Log.WriteEnd("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName); + } + catch (Exception ex) + { + Log.WriteError(String.Format("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName), ex); + throw; + } + } #endregion #region Synchronizing From 6868241a6dbe298a4ea7fa55b6517b01b8bcaf8c Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 18 Sep 2012 22:50:00 +0400 Subject: [PATCH 010/379] Prework switch web dedicated to shared Dedicated sites supports now hostheaders --- .../Code/DnsServers/DnsServerController.cs | 2 +- .../SharePoint/SharePointServerController.cs | 2 +- .../Code/WebServers/WebServerController.cs | 256 +++++++------- .../WebsitePanel.EnterpriseServer/Web.config | 4 +- .../Web/IWebServer.cs | 2 +- .../WebsitePanel.Providers.Web.IIS70/IIs70.cs | 8 +- .../WebObjects/WebObjectsModuleService.cs | 13 +- .../WebsitePanel.Providers.Web.IIs60/IIs60.cs | 2 +- .../WebServerProxy.cs | 316 +++++++++--------- .../WebsitePanel.Server/WebServer.asmx.cs | 4 +- .../IIS70_Settings.ascx.resx | 3 + .../ProviderControls/IIS70_Settings.ascx | 8 + .../ProviderControls/IIS70_Settings.ascx.cs | 2 + .../IIS70_Settings.ascx.designer.cs | 46 +-- .../Sources/generate_server_proxies.bat | 8 +- 15 files changed, 358 insertions(+), 318 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs index 0592a899..d7e0a36a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs @@ -284,7 +284,7 @@ namespace WebsitePanel.EnterpriseServer if (record.RecordType == "A" || record.RecordType == "AAAA") { 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); if (String.IsNullOrEmpty(rr.RecordData) && !String.IsNullOrEmpty(serviceIP)) rr.RecordData = serviceIP; 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/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 49916149..5ea4e114 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -201,7 +201,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 +219,6 @@ namespace WebsitePanel.EnterpriseServer // Return generic operation failed error return BusinessErrorCodes.FAILED_EXECUTE_SERVICE_OPERATION; } - #endregion // load web settings StringDictionary webSettings = ServerController.GetServiceSettings(serviceId); @@ -250,24 +249,15 @@ namespace WebsitePanel.EnterpriseServer // prepare site bindings List bindings = new List(); - if (!dedicatedIp) - { - // SHARED IP - // fill main domain bindings - FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); + // 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; - } - - } - else + //double check all bindings + foreach (ServerBinding b in bindings) { - // DEDICATED IP - bindings.Add(new ServerBinding(ipAddr, "80", "")); + if (DataProvider.CheckDomain(domain.PackageId, b.Host, true) != 0) + return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; } UserInfo user = PackageController.GetPackageOwner(packageId); @@ -321,12 +311,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 +374,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 @@ -563,24 +551,22 @@ namespace WebsitePanel.EnterpriseServer // 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); // 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); @@ -612,44 +598,47 @@ namespace WebsitePanel.EnterpriseServer 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; + //IPAddressInfo ip = ServerController.GetIPAddress(ipAddressId); + //if (ip == null) + //return BusinessErrorCodes.ERROR_WEB_SITE_IP_ADDRESS_NOT_SPECIFIED; + + //string ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; + int addressId = 0; + PackageIPAddress packageIp = ServerController.GetPackageIPAddress(ipAddressId); + if (packageIp != null) + { + addressId = packageIp.AddressID; + } - string ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; // place log record TaskManager.StartTask("WEB_SITE", "SWITCH_TO_DEDICATED_IP", siteItem.Name); TaskManager.ItemId = siteItemId; - +/* try { - // get web site pointers - var sitePointers = GetWebSitePointers(siteItemId); + // remove all web site pointers + List pointers = GetWebSitePointers(siteItemId); + foreach (DomainInfo pointer in pointers) + DeleteWebSitePointer(siteItemId, pointer.DomainId, true, true, false); - // get existing web site bindings - WebServer web = new WebServer(); - ServiceProviderProxy.Init(web, siteItem.ServiceId); - var bindings = web.GetSiteBindings(siteItem.SiteId); - - // update site bindings - web.UpdateSiteBindings(siteItem.SiteId, new ServerBinding[] { new ServerBinding(ipAddr, "80", "") }); + // remove web site main pointer + DomainInfo domain = ServerController.GetDomain(siteItem.Name); + if (domain != null) + DeleteWebSitePointer(siteItemId, domain.DomainId, true, true, false); // update site item - siteItem.SiteIPAddressId = ipAddressId; + siteItem.SiteIPAddressId = addressId; PackageController.UpdatePackageItem(siteItem); // associate IP with web site - if (ipAddressId != 0) - ServerController.AddItemIPAddress(siteItemId, ipAddressId); + if (addressId != 0) + ServerController.AddItemIPAddress(siteItemId, addressId); - // TODO - what would be correct logic here? - // re-create pointers - foreach (var pointer in sitePointers) - DeleteWebSitePointer(siteItemId, pointer.DomainId, false, true); + AddWebSitePointer(siteItemId, "", domain.DomainId, true, true, true); - foreach (var pointer in sitePointers) - AddWebSitePointer(siteItemId, null, pointer.DomainId, false); + foreach (DomainInfo pointer in pointers) + AddWebSitePointer(siteItemId, "", pointer.DomainId, true, true, true); return 0; } @@ -661,6 +650,9 @@ namespace WebsitePanel.EnterpriseServer { TaskManager.CompleteTask(); } + */ + + return 0; } public static int SwitchWebSiteToSharedIP(int siteItemId) @@ -677,7 +669,7 @@ namespace WebsitePanel.EnterpriseServer // place log record TaskManager.StartTask("WEB_SITE", "SWITCH_TO_SHARED_IP", siteItem.Name); TaskManager.ItemId = siteItemId; - +/* try { // get web site pointers @@ -700,6 +692,9 @@ namespace WebsitePanel.EnterpriseServer { TaskManager.CompleteTask(); } + */ + return 0; + } private static void FillWebServerBindings(List bindings, List dnsRecords, @@ -837,15 +832,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 +857,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 +878,8 @@ namespace WebsitePanel.EnterpriseServer try { + + // load appropriate zone DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); @@ -891,30 +891,47 @@ 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) { //ignore all other except the host_name record foreach (GlobalDnsRecord r in dnsRecords) { - if (r.RecordName == "[host_name]") - tmpDnsRecords.Add(r); + if (rebuild) + { + if ((r.RecordName + (string.IsNullOrEmpty(r.RecordName) ? domain.ZoneName : "." + domain.ZoneName)) == domain.DomainName) tmpDnsRecords.Add(r); + } + else + { + if (r.RecordName == "[host_name]") tmpDnsRecords.Add(r); + } + } } else tmpDnsRecords = dnsRecords; - List resourceRecords = DnsServerController.BuildDnsResourceRecords( - tmpDnsRecords, hostName, domain.DomainName, serviceIp); + List resourceRecords = rebuild ? DnsServerController.BuildDnsResourceRecords(tmpDnsRecords, "", domain.DomainName, serviceIp): + 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; + } } } @@ -945,43 +962,45 @@ 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 + // fill bindings + if (rebuild) + FillWebServerBindings(bindings, dnsRecords, "", domain.DomainName, "", ignoreGlobalDNSRecords); + else 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 + domain.DomainName = b.Host; + int domainID = ServerController.AddDomain(domain); + DomainInfo domainTmp = ServerController.GetDomain(domainID); + if (domainTmp != null) + { + domainTmp.WebSiteId = siteItemId; + domainTmp.ZoneItemId = domain.ZoneItemId; + ServerController.UpdateDomain(domainTmp); + } } } @@ -999,10 +1018,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 +1061,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 +1104,30 @@ 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) + { + ServerController.UpdateDomain(domain); + ServerController.DeleteDomain(domain.DomainId); + } return 0; } catch (Exception ex) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index ba1ad41e..a99cd490 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,11 @@ - + - + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/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.Web.IIS70/IIs70.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs index af7a78f6..78e4f002 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); } /// diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebObjects/WebObjectsModuleService.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebObjects/WebObjectsModuleService.cs index 3a8cae98..26b80dd6 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()) { @@ -461,7 +464,7 @@ namespace WebsitePanel.Providers.Web.Iis.WebObjects } } - public void UpdateSiteBindings(string siteId, ServerBinding[] bindings) + public void UpdateSiteBindings(string siteId, ServerBinding[] bindings, bool emptyBindingsAllowed) { using (ServerManager srvman = GetServerManager()) { @@ -470,7 +473,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..7c960f4a 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)); 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/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/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..652755df 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 @@ -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/IIS70_Settings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx index df0e133d..7358411d 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 @@ + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.cs index c733252f..0348694f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.cs @@ -107,6 +107,7 @@ namespace WebsitePanel.Portal.ProviderControls // ipAddress.AddressId = (settings["SharedIP"] != null) ? Utils.ParseInt(settings["SharedIP"], 0) : 0; ipAddress.SelectValueText = GetLocalizedString("ipAddress.SelectValueText"); + txtPublicSharedIP.Text = settings["PublicSharedIP"]; txtWebGroupName.Text = settings["WebGroupName"]; chkAssignIPAutomatically.Checked = Utils.ParseBool(settings["AutoAssignDedicatedIP"], true); @@ -205,6 +206,7 @@ namespace WebsitePanel.Portal.ProviderControls { // settings["SharedIP"] = ipAddress.AddressId.ToString(); + settings["PublicSharedIP"] = txtPublicSharedIP.Text.Trim(); settings["WebGroupName"] = txtWebGroupName.Text.Trim(); settings["AutoAssignDedicatedIP"] = chkAssignIPAutomatically.Checked.ToString(); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.designer.cs index 4357d031..f9851c20 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.designer.cs @@ -1,31 +1,3 @@ -// 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. @@ -67,6 +39,24 @@ namespace WebsitePanel.Portal.ProviderControls { /// protected global::WebsitePanel.Portal.SelectIPAddress ipAddress; + /// + /// lblPublicSharedIP control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPublicSharedIP; + + /// + /// txtPublicSharedIP control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtPublicSharedIP; + /// /// lblGroupName control. /// diff --git a/WebsitePanel/Sources/generate_server_proxies.bat b/WebsitePanel/Sources/generate_server_proxies.bat index 2ef3d080..1d02b7f0 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 @@ -50,8 +50,8 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\VirtualizationServerProxy.cs REM %WSDL% %SERVER_URL%/VirtualizationServerForPrivateCloud.asmx /out:.\WebsitePanel.Server.Client\VirtualizationServerForPrivateCloudProxy.cs /namespace:WebsitePanel.Providers.VirtualizationForPC /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\VirtualizationServerForPrivateCloudProxy.cs -REM %WSDL% %SERVER_URL%/WebServer.asmx /out:.\WebsitePanel.Server.Client\WebServerProxy.cs /namespace:WebsitePanel.Providers.Web /type:webClient /fields -REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WebServerProxy.cs +%WSDL% %SERVER_URL%/WebServer.asmx /out:.\WebsitePanel.Server.Client\WebServerProxy.cs /namespace:WebsitePanel.Providers.Web /type:webClient /fields +%WSE_CLEAN% .\WebsitePanel.Server.Client\WebServerProxy.cs REM %WSDL% %SERVER_URL%/WindowsServer.asmx /out:.\WebsitePanel.Server.Client\WindowsServerProxy.cs /namespace:WebsitePanel.Server /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WindowsServerProxy.cs From 68fa24ff35a5595a7600372d9a8b0afea1b9d5e2 Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 18 Sep 2012 22:50:44 +0400 Subject: [PATCH 011/379] Fixed: Error when calculating diskspace and no public folder database available --- .../Exchange2007.cs | 51 +++++++++++-------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index ba51c9ce..fd32052a 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs @@ -1374,30 +1374,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; } From 9167da75dc9589f40c83b5e77e9e4d34bff624be Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 18 Sep 2012 23:06:21 +0400 Subject: [PATCH 012/379] Organization added to the Space Quota overview --- .../App_LocalResources/SpaceQuotas.ascx.resx | 3 + .../WebsitePanel/SpaceQuotas.ascx | 5 ++ .../WebsitePanel/SpaceQuotas.ascx.cs | 1 + .../WebsitePanel/SpaceQuotas.ascx.designer.cs | 55 +++++++++---------- 4 files changed, 36 insertions(+), 28 deletions(-) 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/SpaceQuotas.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx index 117042ca..e24a9891 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx @@ -26,6 +26,11 @@ + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.cs index 323d0be3..3099eae0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.cs @@ -58,6 +58,7 @@ namespace WebsitePanel.Portal { "quotaDomains", "pnlDomains" }, { "quotaSubDomains", "pnlSubDomains" }, { "quotaDomainPointers", "pnlDomainPointers" }, + { "quotaOrganizations", "pnlOrganizations" }, { "quotaUserAccounts", "pnlUserAccounts" }, { "quotaMailAccounts", "pnlMailAccounts" }, { "quotaExchangeAccounts", "pnlExchangeAccounts" }, diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs index 882231cd..3d49896c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs @@ -1,31 +1,3 @@ -// 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. @@ -175,6 +147,33 @@ namespace WebsitePanel.Portal { /// protected global::WebsitePanel.Portal.Quota quotaDomainPointers; + /// + /// pnlOrganizations control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlTableRow pnlOrganizations; + + /// + /// lblOrganizations control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblOrganizations; + + /// + /// quotaOrganizations control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.Quota quotaOrganizations; + /// /// pnlUserAccounts control. /// From e2b94badfddcfa16285b45f7726ba9950694362f Mon Sep 17 00:00:00 2001 From: rdolezel Date: Tue, 18 Sep 2012 21:08:40 +0200 Subject: [PATCH 013/379] Merged with the latest changeset --- WebsitePanel/Database/update_db.sql | 60 +++++++++++++++++++ .../Code/Data/DataProvider.cs | 12 ++++ .../Exchange2007.cs | 41 +++++++++++++ 3 files changed, 113 insertions(+) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 4443fe81..08746cc4 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5211,6 +5211,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, diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index b102fb37..3fdd6f11 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -2153,6 +2153,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( diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index ba51c9ce..119233ae 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 @@ -5954,6 +5959,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 +6048,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 From 867aee9835ef46dc7a255980ea03e57fc905533c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 18 Sep 2012 17:48:14 -0400 Subject: [PATCH 014/379] Merge --- .../WebsitePanel.Installer/Updater.exe | Bin 199168 -> 198144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index 3876760880c4d368fe9b30a0f25615bd1c256998..29802bd2b9a5e9d8d83ffd9c8dbb78e5bbe7c297 100644 GIT binary patch delta 29104 zcma*Q2Vhgx`~QE=xoMgXO4F6mv`x~LbT8Ju{qP#8;=zht2q)FAbx(H;*W zt{Gg9q}ORId%~o88bwvo1sW5$`y)!O4X1>HJD3o4(T9|bby#N8*t}3?1FL6@e-b4| za06(WjTh^wwh6GwatEv0rh;Hp4EQ17pQOgP5KAl7F@J-)0wQ@nMG#Lg6-rQz@5;;4VFr3osX#SQ^spHqn8j=DF#*c(^jB+D zvJDC$S|F|41n3>l3KIyM3Z0lo9AW0u+7Syo?6d}a0t8_ z0b+{;$%HN-ij|L|I*RF(9_0OXK8lDiH@vi7Hi)RsgmTDvs5;Sl;qXK;8}yUGl>Q#xs!zuRzu>T5lS}+6{%qHat|7j_X7CFH-|YaOn@Yw zugLuh4I&NB3*x(U; z)%|SIkP@dC%}uev_!EDPR`Wmm4hDJ}f#nP`fKNPp zTEhpL4s!)w+yVOlX$PMo`0zgAFK(X=pWg7f1Rq`~e{nlcISD@Z;PccDL40XoSonum z2x?6qF&mWWsmtcOB%2B&p~{3Q1Hlv?u1El9CM-OPkIx*KZs|dGjn+ap&|`ZRI~tT<}rQ=OglbdJu}VVRJbK)KAAjp9vEBS zry?EW$GGcyd%3IUm#3_LH3KZr)qMHt!~|B62^Q(y!oU0{ zf6nH`JbT|~v*+d@rOGhZq*QOeL2N37RO2uGlbCZ@=YLm>+k*c|sTzNe$H(IZrq@+; z!HV*D>@PL!9qI{P!BX)Yi1d+npa`pLF^^*Y9;#*L>mk<6)}0$|`CKt49G#~I963H* z%wQ|wn;=`Myy?L=OpN__fZd+06U+jtq=F&gb1qW z%fmr7zELJYHuzj`~J85eWh`} z_OfToRq^vYzT|4z_%Ib28#E6_f!anu?LE~&ODDDfiorTsSpZ)m@dW5Bo9f5A0faD^ z1_@xFFcQ*C=Vr;I)%WGgPjiw35x@keMXH!sN`J))xjC>I*yIf7F*-{`dOADyOcd?6*RtRVgQeX; zW@?gJ1qIU(sZUTM4VC7AhDqClqN!QB40en3XV44ODh<%3hlKNFp%b9P)Si4;<>7z} zGpI;}v_)4zBPEMIokmH0K%=EPP@8mEA5QJk9ncs_Yv@K}odXT+DUFjh7<XV*x{ zgXT+@6Jlu_safJxS|I(B7)A>vZPFmxR+^M_m9~@mBoCtPrJc#^Xa{LXN-x?`+L`h> z?IcZ4&8D5D?Wtk3i}ZbJd)ig9q>ZG{N%PWvrrjjk5{hlno)$rYk85;?$VIV zH)x6UOJ*u9l_IlVrahd?v-(lm)A=wP8rVzHwkn{#LCwxdt#T>tBW-K_Htj1F=dPpu zoDXwTDedo!&xaHPoO9ZQQ~JELsi1_uAko5lS|)8T97YE^Ep5{oeNpPuK9LTR=CpUx z!BVRZv2=)3-l3WfmF|EJlg4$tNQX9oxL=4q;pfrIf0In=Jc9M zM?2km7f?Dz>e%Not#G#Odyvwx&Sw2Tqja3}@PJtY9WNCRd`u@eyT14~r4yxFgI3c? z&Uu4}QTmee_aUn(eOX#E>;pR4*>-p^rBkGV<)6`4oFOBAP}8ZB+qiCYn$%<5+jP40 z%eX}Ps$>~Im5R>g<7ZJ?>5QB>mC`Ebs!0N+Go-aIy-ll~`7gtanJLYg`~!W>Ic~~G zH(KL7|7t%Koh4;fzf5O4w^T<9bdK};nqaDa9j0lJr!;>>gfn#ZCo1}e^V_*cD4pwE zHGhEzo##wmEHXOZxn=1fN*73h%l@Xd&cNk~jMh2Zu7D=IDQ#MLkxJ6MRV8$xba~aw z^ew5+yT|Dw$-a6dbx3tA_%%Gu|AcShfp25uZgS4;aho}+7|RhwqfwV*wn z;)foTz9(rn_mnPvluXw_XaQX>t=il~H#p~Q8OG@Q((g_O{Xm+x^>4b-Id5AurJJN} zpS(;zl;Z2B(vPGK^%ZopWN7F|w}4tDN5eS!vE;G6pSzRq$y0-+um+PfYkMZ$D(%@m zl5UgYKb=KCk+yxhfYwWGKbuM$q&=U#Ot(v!JKmt5O8a+Apr1*ZJNwZcpy5)(&arf- zWZ%`#eHZ2ziutYEl}SIBF7H}FcS}{DJLw*0i`}ak{Xz=an<#1a2GG3_DxmwMfuQ@P zwR_X)0qOkSTzXIn*_TQWNyYmv(!)~n{wDgR6mq~xk4PsE^rJ_e@dukIJti3re?-5M z4j&Gt$EE9s&(RakJzv7aIqB?p)Sc3=rQ&0s({Cj0S1;33(wwg<=(p0tua48x&cnx{ z7T-BXe+|>~j8l86Ii=rAmTw2qv(DGP?MLZ3=jGGc0&R4LoQ2)(yi|NHj9!q&fnJpA z&PCHp(st0x(&cl5=oP7L;~;uf+5mb@YIc4Qy)KPAKaAdxzCS;b{vfrzaFE`Vnq3@8 zZ#k!2ETHs9=gvzo*iFv;S0+$;Tgtp9(L2(yYj4w^r1I<8^k?VV>*b(9#FUo!+QtMki**zjHx|P6wC(Z-6f++igI4}G-gR=X?`QmNh2gLcxowJlZ zB+i~cKS$Xk;(YIJ3T2Op^XxC7j6ESz=>1G*>b+Zx{Yjjm_YVl{FXFuMsJn{&O{A>9 zA5rpF3;GSE^)T%^Q_AXlFj^r{p?<#`T_;eLW3&hDM%^4c`9|$%=1JRA_xc{5)G4Uo z`cmr{*o>MSHXnMFder~!LyuGH>DccJk-Z#&TG)6yhG-#8Gsh+^{f+uKR{7C4X!H7b zf9mk1zK;Fjw18^sJtAlcqki=RqG*#R^{?-kOqVol1l2`?QB*si}TL2fCNi5XY7-G^GCZPBeYbzrQ!_CQzFrus@V&cMRd17{|8$P`g;ipZ)0%G|q8-03?a8pYuGg zOhSFvGI~&;iH^X*P<~Q<-C!tyCf6SuLi-6c#bGapw5g79KuiSX_O=R3H5hO zeGJV$_L$~4UVKaqj>V5@sH5-+?djO|1X{852@Uoy9P;9%VZ(-uf39Loj|oG@7gP)$ z;z;g)!W zcZ7IT;*N#{IPJwa4&N?JEr)h?W?_!VE^LNlV;9!h5!IDVaCCl-r8!JpnWtlQSJusO ztSgIg6g|fhc_>nLeDfTOtAFn~HqYQa$I~oOAMK1e+8Og4xx<-`);W3&XYDZw}hZRk)e4LEdbVH(MOP3}?Y~o1q@sf`jxYI zy3;YIoOPgk9AB5Sx9EPy@DVIkb68Gr%&~d|%cmzD*GI6?Dy&D(k?a%Ax3c?tNAM_i zQ54*%kIJ3;Y2DnJUx<&NySER%{EB^i{08_9^b66rt2{kJ-26h!?jD|gm5qUZqoKk_ z;orZ>FT~wl72>1u@o|IvDz|9d1-}UX=7Bi==7BW+h5|!O7|Z9p+MR`%6uRTsIhwWh zRk<@Crgm5PXaoW3#~f@7`^1eWa;t9`!(LaZ!0K7wW&%4+eH-8SrR#(_>D}I$RN3Y8 zZpV%|Y?GMD{t1jQTrm>3qe0;El@!6rG~Ayeb71U$gzXIYz@JYWX%wtGBx=O^)l)cRKrkiZ;9Fib<9wnYVOcSFRIB()DO{q5Y&fU8TxRjnrMgd zIB~-kJnu(34jVj7O(sLwhrBgx-vBlFXxPXBq2!BUr^R7@hBt)G!oEQHFhL@v#)9?ilXaDd_@O}mAL%ts#4wf4b$CKO{z8v%ss&_dL z2cyQJW}$WhRg?bZBL}3Z$r#x95V5>^AhZd>YO<{SG!*YFFCL^OyHLNxIOofG-G42w zSG~esbrX*TmQ)@hTu-C^fcgN{lX80?XmMo(C?yH>1ZWF-3bYkH1KNQ$f)>+DpabYN z(BbrEpq7lMw?SW}zkp>v{R6Zf^)%`|`WP%N$zLLDdJ+~y$ta=*)iKY1sahSzjs^Ct zjAlMTJuBl-TcQ@A7J)vE)1Uc4oRO%NsCB5TP`9I=K)r(c7*y<8=_&AJR@6+?PN+js zUqfAux)1d%>I2k36;GRu+8cEu>H<(omZ^B3y|3bJ{a6(Qme0|CP!$Z}Q>xG)Dv}#~ zL!Mw%PdA>x~4`zOd@JNY7ywuc8_$kgLf?IMAVl-pL(adC4jdIbr$GT z`#iT)u!~D@^C9YX)MKdMf(qmk>MgfWSNJE$LLm3tGN6hN-CBYE3DuQjQn-h~t8P-a zamBZ(?GR2=w+DMBs6g^SwWPDU3ut!{H@(!w;O?*P3HpMX_s3{ZflOBS1$`CubySBM zyA;Bd>_z6Lqb?0&H?z}3g?vDf2q|m)@P;q5%qtJBNm|cz@hS zReSPqAZi9Ee6Q-sySE>xK*o6T0;Z$RLS2g9)fj)XCm+OJo_s*RLcM|dz!NGe66VFT z(|R2P)qC+y4g(7%NvIuA`+>?+hLSN}T_Da}P-v6ae9*OCd^j2)tw8o;_zI{%e#JbQ zH}4OBZ=Pqk_bXuMGeaQR-V&%-;OzsOZr(ic5N|#KC!)^qUJT)tnCuhOBdFhduLS!Y z)W6W8Znhp~vbGuTMN_k5P|>(%e80$V7704E*(T7MW*>uYZuW_5K%bT}SH|RwXihLDK%D6V?^I&oFli*%~_9}83!t=>R(DyOf z+vFyMKOnz=){{q|yD;V%NDGS+hONGW?tdEsEh+TX=;U66^?#)AN$9`{s8dj11AW@b zbAA1FJu4T27FVwHC6jYtq2#tN?_{mlOwfmDQEOrGaUH<) zkdIc&)qonxRjdq$&C^IR+7NK3qP9Zq4EogDQ)>lpf7F4X#g#*~{LnlRwFdP~)a9t_ zQMaM)Mm>gl7WEpccn3GXqyCMm@#C5Lq8d@7P?J!zPzz8yqn4r$L>&PNdyrqWE}6{q zivyhpmSpla>S|C}PyLc~0@;e;&qP1Iffkpf1X7%f1WA; z!)E^sh#!d>gO()JEYw2O=TQ5AQZmFp2jY)H%M^b&{}IScgoUWfQ8%DEQ9t(=Ai)X$ z!%*ZkEaoTF2dE?}c>eLIEdx4%B?rT8P@fBc^Mz=gE=3)3vR0l?qM|wG0R-wL!x-sx8=#{O3e4YO^ z@I}}cz5si1~eNg>Tb*SN} zwxD6q;sn&RAl~{cw70`>7YG+u%Dbh!6ZS^S3#fxpM~Ju?i~17kG}IZWb5Lth9jNc1 z{?qwSD=qim4ctf8291EK_yqC3*#Pn3z!Su0%$E>`i5xUWrzPJ7@iQWAAk6>b%0|re zGU`vLk5HM8d$p*cs4=K5K}#yzp>{*<4Vp>@==eMsidupC66$o+nV7GI;TS#F zWYlcbHmDs@i%@%^j)X%|&&ua9JOp(V>IAN0Wi@P`uJ9v$55uA8bv;)J^r?M?elldS z9`yfD-^lGwB~EBSD%lO{PmVzY{K+}gTc84YfXx$C2Hw`@2Hr{|su@&EVo{So)ue@? zZ;+bgW4HrqA44cuhN67}TBf4TL;KqXekQTnFdcG!-!KDo3)(+5KvT&fjQNd$H?mO# z=vnzADxZcuEBQ2pb7E9J0pXyD%BNn>$|o2z(8#O%&r0{SpJI%&pq~;^(?Q)xjxh-| z*Ekonvr!NFxr*C+8YhDeGl~Li_;K2ej4}2NawF3rYd10n!wZZ(!NO}wiNiP(!fzXc zK{ud&V$6W>9*9rLY2#y9R<9WAbpG@Y<5E!1;1!^u!D~QMFx)P91BCkqe+W7z*a4BucS87U4Bx=SkAlAdi;w9bsMT~7w55s1>15)mo;RHY9S`BBeNbaM z4Sg^dbrI?s)Ot`#zAyzrV~(5nu%0!|4-(bn8kp4Nw&@&<(|vFVgoSYRL=8lZ2(iMV z5gT&dRZMcoTqq_3H5asl8SclBD*gJ9CMc!|Ng^MH{0uZrpb=}Wr&i^d{Vks4Ez&X+7yC_YrD_a)2Zn50!`lg^Kf zg|9!M^`v8HsNRp5BV_6c6i5z5%2XB_rPmV;f1V0rjtPy|8_62j438;k_Jy_s z@>S?WXcr)T41YRI>6%b77@akm#?TUdC>f>DHKaAp~LazaZlZ~-6!ay$tA_t!aP}TBN6bh1~ibgF<0v2NRo?Y=@UsU z5VXIFltRK((x^BmnHT8Oh%Y?N!4p=QQ}iu}$wdqGEy-}CD)J_z%OG17-^W0iWVhnm zWnQX>@7CcZVE?YrXDf7oo;9!4!;>A{Cz1p7vU#IE*X6up-mWjeTk`OfCyeNBeIZGL z8}v{a&3*G|Jv^iZucw(lC7$V*`c8_E=Xp}!#YH^NBGLhKk@GAj{gFhT=>>fcB`V(! zR=9{~dR5=cmCa@IkNQ3?;+YO06Q9ZSc{1Bo(ffM-ZNfhleM&sf$NIrfa}lAY%rNXJ z(mUqnhEWR1l^N~woizs;DqM8gY%;*p2JjM~4|%#tWTmSzO}dxJdKcLYFOl6!)tDvG zFqs@uNc6X)0-jPZ!jfT_LK+onVQCF?Q=xX2Uiw$aU4@D*=|JA_g#;g%{+70esU$$5 z5tdFsW`!nOO7zo+O`+MA6rePP7K@hq`spM`!A+JT!*tR?p)bJqDk)Ov9Qa-({gLE7 zT_l5%_@Zkwh-561MDAI77^=uZg&te_8>-0;g{XC?p@y7M$ipg*GRz_x_zne@2oeC! zH%J7MT*O=wha?v}1O3mK(Q6_AtED&%3^ZP-Q* zA=PN!g34?sClq?$TB6@h&LGK0!|mjfl5Usv2*iZN1zt6p{npcl9U?I+_zfi7L6T&G zHZ|#XkPH{4fUnR+=L|bZ5zF@G2>GqJpE=tkwA!A*1&hQ19_Ds5cM4at% zHt7zKS{J4050GUpI%haY)<2W*Fxl$zHR+C!9WF}IA0daHiFuTqa`~EcUy()^rRcvR zH^pb79w+x)&L-VS^29|c`jbQh&x=8~L3_^`z9s=ka_diV2fX&WU$QRMpOyjXw&6Qs zcExPcogw_GGeQoKThQBQNM#E={_SNv;Tf_9omJ#l>u-kdNfA7L2AP8Iw&5%(Lz2%E z&XM6rayI8kqbuf8{W(&Y&eQQ+9vB+Q6C^p8^JH)a_sO|jAfqzy__x>Vi8V!kfdpi7 zr=00U(g8`X+C@@|#4}y0zeLu!e76mk$tff`(<`JAsam5AFVSBim3R!Q)yCa0}oenD}Erok>mnzk}{-fO}lVk<4rPL zp`!30poOk)aY2c6KC?`?r;2%jBJOs*_Hjz>nrRbZ;M42>wp-s0*twLj= zO}EKWq&iX)9%8&h3OoKPFQsfzI7{fSf})sRKu5yqd%TqKcWg7GdHi^onL^|s+x zQj1hW-VM(*{zmS(sJ-zXInkLHA@AFNkTXaU*&N=}_yPjXx|#Q2aj zBFX8VkZZC}B>Th17@v@wt~^tTd;|0+S%|cV+yeTGJW+fsVuJB+qJK_~$s(p1DYYpS z5HZ8ZXof=eh}lMg_Esn>qR!|>YZdAMq^2v8>WEkr;V`;W?`}NPx5x_-?-)Jk6C{a@ zj#z8-qLoE*fi*zhR8=g~iii)5&FHlfnKnmkGy2f6rJNR#JrO&M&FLDXI&v~%H;|?W z_tlXfBMum~)Py9F$6~}0qaQt^I6Wdy8+G)OOnO6Pj$Ti_d-8;QUNjo@)FhL}9C=@F zpb;{W#tjLaicyG=|VaGHD7Td+E*ej6&TaMUFQW?1#<=O2Xlh zO*%8x;OWl+%@`=qOy!fI1DYvF{8@0A&zc%2-b^!OB2wh9Mhoqr&|>g~)80sY>>n8; z=rk8KiMl9Si@1oq8%ctr=qZIhh|~nz=(66}dd;Vi7xb~TL7^{^b|Y13zKKjU#L}aR zuL-G9Ax%^Yq)Y3=bEzVMQBAryx)`ZO6BBhoFUHZW3Z?_b(GxO}{HR7_939-3C*+4% zzui|@3HOa8Kgzzqo~;6_Edu>w2MeXR7!9M zx&x_7vpXs$xD&mJR71Xs$^#lTh&Q5!oCoSc?<#Z~2Ie_x6Y)&AirkOt5ZsM!M&fh5 zYj6=gfh2cZ2~C1$>Uq!be(Fir%Y;4Chi+Af_e>w!pb+nwK6Iawj`vI-dPwo{p6NqR z3=uI?oX>se8O6!FrVqWOB;-BQm)=x}_e_6!7pYpqqI>BFQ178Umug~-Zqf~)W+aIu zMfV9FKqrslK8du7elhrYIvYt|eoh%QuOehbweN|yma`)f2$qSFC4 zD$a0QFa0pORiXB_bfA3-jkHw-52r^Jnqr#;bV{Mwws}Ce6>>l><@BCHA3`qW)HDYB zNweQpq8~vcIEhd^Kl2+w0O0X_Fno?^npTF z`;y>MlvMB{YBcfo6+jw=a_uD$(^sL+_7os95?ufFvab#vO>K&^94Sem>5$E6nxW9^ zNO=mav~L7ogF>I!@9W3V-3lE>I;7AA`BqklGw?ZRgb_b86WeUxR*$*^I zA#rKUk>K%kqJo=ZP6Aabv>P&=K<6rSKIRNOg1%6pM=|GtRw|^6y&61`u2(2F_9oC) zg>qwi=_k=c3iXLi2fD4$1Tprf;Fst<1sBHN10v()Hf;mn%T$8|mr${ffhH?-I+mKI z(3vjsFioYSCh&CC+H^Jtul(o73z zo{O?gZ_-j16_~`gXqkc)ah*&KTIr%9pt(p@- z#8f$|cl;338oF_sOp)=ahWF@Eg_7b&n%2?buX0~C$%zjzt*73&tXFB;#h2*crxPnN zo#q9kyecG88Q-LPpNfYRlo0hZWaqm06iB#FA!qzJ(+BiYwe0%>Vtz=M&Ey1Uck!>7 zKBP0>;3UC4w3(*ObRSY3`91!{;E(Ak#g`E|*W{#Q=gKjKghi%pbft(`M*?u$OL!ogQ#JV`q0#siJW?%p6wxL&8jsWdOXR3&i4CR`v|+hS1&KcepQK6e$kaRW zg8n4cuas$AVlSY8Rh-~tI`OgYB#l6-B6Z;Vn)X&`ePXKNYdY~=Io+3uyG-BE(sg+J zgC`sk6Aj5QAcoKez zoFqrb5i(6=w-s!j(l;cD-BZYvQU*l!$(6CEl<1S0Mxm6H z6rccwvQvhIq%f00MJc0!YzpynpH!Bl5I^@xWqAsH8x7ZgX{>{S{5&v?l`6!~16#2E z3i0#67Hl|DwFZ9krEke5E530^l?u&GNeACth4|4wovl=eAN|wWK84n$OcX;h*ii*{ zrMv=kMj?J$mdR@O%dO|9WtnWTLKEQ3Ad{_Bh@UlNvW*ITn^F~$#kMN+OUf*u-3sxO z(rk7}A%0RSX0uZYHcKth=debF%&93rngeq2{A8;Y%TS1)P_<@x3h@)F)~t&{{Cp~x zl`6!~r*c`DLi}_tj}2FdpU&lpY^H+z^eUgtRfwNn<+H^K@zbj|Y^6f{^r{Wph$P=F zD`2~k7HLvb=Z6%qQ%KdMT`F7+vP&{)`lK!lE?|WRd6TNiaP*1hL)b#NDsYnF1i=oj%mJp>RT4lp4GZ&O-M&(K7u|n2KulID?_RxQ&N|ObY(|n zpJrC-ML(#Z%=;)N1m`JJch>tWnQBvag_N*~3N1-J5YmG+D6}#4IM5-5 z8d4JtJ=htU$QP-tfxM5)mH7fH)01^T+DE>E*7stQkK^(023-JOD)wTtWhYR&z8CX8 z!4p<#zJqS-&9*A^Lu#Y3H@l?JeV8+S*b^W#Ty!)~I~&r6!M$1}Gf-ca2E@BNE$w

NGkq!Te#nb#ltQzB z2C>;deDQi4Vh(246xx84hc}0-$@a9?hQVy3Li^KL=n$6nt$h5`oJ_l~AI9ba@>bkT z^9&uv)+_V`XgJ#k#EbB65g1y|@=kMt>)jUDLq@X(g_2u@g^p!~-^socakkJ2tO2Qt zv}=)~pTq*ra9a?vZH4mQn2Geeg!{&OWc-CLo{ z*kTv02z`gGana_`Rcy11c80ED8JFaAVn*c2(Dkf?f*FzDhi+iKU34?_12)`6zlCmM zlU?K%wwcXzk#E??tky-=ux)Iai;}_`Skh$zFW$hmVLMpfQxYS)hV5iUPcgE0*yn5` zQXTPZIW+7Gw)iSfSVw|^_OcGwWJ+&2I&2>stWXj7_Ora}vTq2`0e0wyOjCglvJ*eZ zvUpzm15Jx(>`mGl(-S=PZt0j6`Tw~H*M z^K7t-x`m1t*;p6WhFxLPT;vG5&gLrgM!F;H7F&h{SA6L!!tSsWzsm)_8@@j5S9aG$ zTf=^1zJJKR?df~MerFjj8e;l`l__)_D*8ZV`&?)=J!H1~a>C>37Sm%k*G08qf3mwS zIuJ&L-Vb=p8}vr{@i3Jz8R;^;m;OCaB~lHsWN?~|R7c`6E&$cageUfHg1APGs%e{X zU+*StRH%1GqQOmQkckY>7-@17_9-+j<9e7{82(VMXjR6YFpV$~shZ5s_$|y+n5+2K zWc+CK79JqUR}#&I!H+N<9B-R+&4r1gjGB+2_~yb)m$T8>Tv+I$hhe_L8W$0>pRmtG z?&bjD8WO)z+uW=Z^pCL!4ZqQ36l@CZ&*-H$3P}omlaUUT^H}6jXiv+ z{lZO!hGg2z@xovx`zAunBw?|@sfxUs`J*vK*x{lM!7YTFNY!LkW~!m3KvWP@gd*wy z(}e(zK+7`|%^56`KnMm6x1NL{=wr zTOmTB7C;?@-tbFQ-rlxZO}fs)WFI+ZF{JA(EYr#~0H}*F7@ia4l_}5aYwjup=#fOt z%UQkj&j}_OHE%-k&j~h}-~{pob2lN)MdjvVq0mJW&80%Ai)NU63k?Rj2!3umKuxQ#=}{w%w897FH zpb)d_ zd}n@H*ryQx@@BGd8)*?yXHOH2Q-z!eUi=~wn0?tiO_-}tMD`5hbm5djEx`AxV1gf+ z!%%4WHLWN_D8#R6MWIk3{%t~~&_yBsZ9=6$qU3b#vJ(wef<`7BP_aq~aN!nnwP1G9 zPIHYA=c0q=IYJjCc|_+4{T1RPI!~ySW8&8}^MzW4_<+tANHq2@4%z}CKp{S83q-+& zD396#VWI5AQL7bpD8xstR@ki&Uvz7Qn=;{`)e7G5!*Liw9JE^a<3cj=L8}!i72<=YW2kzHUpESv#? z@~g?!?CzGY1l1t!l*q&EVV3U%8&VZ%mXm5|6ikD;Pj1tBAp%J*;=HgANg~Fa$(HlN zZKP^q$(e4sAS4Zw3ycH0DAbnAC8X!fv|JLrM*xXXV1CX#%T=L}qf*3mp$n2+#B~Aw zhR`#<92ceNuL~WJ7LhKH%MGE(MUv&F&|9I>oF$eYh4n}hc|K>F@h71HNtDQloHdr8 zg+qvP3-1aikoYwDz;YLUEyatMEAzXs3`rs{<$PlKU06BhpQ=3+)+5O=9}2r=pXSw^ z`}&8%p?}4^B$Eh5d~SIt6jfk00MF%X8gt0E_Ykn-ubkPyZ6Jdu!e3twr zTvBKmey6C1wrCNpr6DsF` z#a;D4@$uuPMr9f&7kCMZ@KE(us41sO=b@UW(1V;hvxjPpLZ68+pS@I<5UYttt0tYd zs&E3&rkdzlT`_vA8j<9~Z*$d67i}?XRrg%9(;T286R~*c(Sv54%8Vp0*1@VIh4^9} ztSXgb!eT8Z8ceFe3i8$3q&lTU<%if1)lG%?Y8|3_f+R22A*#|zyubsvScj^nDa04+ zP*tTue6bEyt(OTG>rmBE#Rq4|A~;Ve$XDx7RUCW)$}{Dwb*L&$CS0w%HI2DdFMYCVFjAE!r4_X%tF9@O(dq*DG*hqk*Y{>s}g;>$`=>% zDl(!~q9I+?rBcq5pO~bpdRHUiFlDKRE5wH>OC?TLkdITAYPLfB+9gZ1SRp~76g-BleI)^GpwCdi{)$}(|l`Z)gh!sB(-%HYmw><60U6ZiC-|m zD8gP%vRaQZ!VlA1Kh|mCw=O-b7P3C1pVf}zZpVk1xMh$vnRIXcGyED>j@i96fnN&r zX?@zTh4KecJ?N;`OZ6QgW|OXpOlm#G+L0`2J;6E$EGzWIpi`{H_$!o-m}fb8zjdkz z&vUn>59qApdNHu?nhQit8+iGdeB9=OQDrx;L$V>x+?cG zuzY})Rk^z%yfrsCsET}=TcX#}y}1XV_52R>K&);#>NwOXs8!?;g=XjZL3kO&??^VHiaT)gRh}Wd7_;a| zF6EiStH@oj_o090<$(I;kFoZlDf!XiTWHJt`0#PGU4ANP@BEzbfsm?Acok@qu8#8G z+|*J2dzw1Re{oYs`7dpj&>{Jq!dKDJ`8~sz(CHAaf{8pRd=6bN@>7bKItyyS3#=v zA+Lkp%!f)~_hz~@1tuwf+M4SXgO>4%Y8h+uX81{%w(#VL0Zb{Nc&7uyc6Q4euTLf( zZI*;5lTg$YP&;eeW+iAp)DfuDQNPINc4O|!a6V%m2Pd;RZN|VesI_h04^M_XH-mj~ zn}%=?vJ&jcY-1ZfleV@g5n;2V%}#J1X!Aw51)^F^$>dm@Ltr`AhPQ8Vn>}GX3;s>^bcumK|#bSb^~tgU4~sT+RCdk z#ONVH7j=o)z?K$t2VGszJHn1fNju@owH@y%+1aLoGN{}q1w%o174*^{hW@ab?d+R^ zQDC`(x;|ub1n1tgu(L-6i3U4kgFn6#Q!9M3QG%iMR*7>|2Icy1)iNnc&RWIZl}#etu5RaVG))T z9sylj_;my?2G#>e)(G9Wt?){OLHM-rXV9+-A4DW$I2ps4m|H$5%oyQ(p%9rY+$y}F z?}+w3!mov%kvU{k>wriPG9+Jo3?0SV4vp|2&D!!Ad!UUmGMO0KS|iJa=(Y=CFGy}1 z1C~P6KA>8(z@MMMFt;R=(HQ2sfxX%`CDJa;YMTMNplvRwEw^2yojKZe1%0<|Y2+yK zaoe@liM;=$cZ?8>}*F{=q?!7fsu#V!M0n1CldZ`;6ySjb#x@(7bZXfXWAwj zlF9Y9QzGrSk`E?7w(SK!#^RaU2|ut8hOAGAk3!|mm<0dy_2zExz3zFgp^Fxk;pwlV!M;jL)q=Vi!4=|ajwnz$c<2y75Y+<6t=qx4tYo7 zqf$zy=LbY?q5Qke!$P-q_ajdVWuP<3S@RPJ4~6ht3@=1ohPnoow^fMZ)7dkMhg0-g zGP2zc<7Gi?=Nn}w)$Mu)C6n3hf}%3XymloppTwmFrl=gObq;n&7YzRbEr#iaN3d1G zl6DvLr?8VxVV9o5uI8CqqaF$wkvm~fR<*N5T?22E?ivo|HL|2#V$?~TwyW6t?fRNm zu?A48;=TJ&_yUU8s$l-Nh%$f)WiJFhv5w#e#59&ZrIEsU&>&KyG3ThSV z98im?4zx+P1a%ea2GlK}aP|ON06#QB(_u7S2F;1Og_d8?@({HS+d=2^4wlvK z1rR<2de!S|5jK0hzH=W0`oz5&)S{^dM?26aug;p)VCkXR3;GIZlh+E+t6m#4;lc-A zA8HCf&uGeo-@KT|APBpARD&jatOo7pu^03;50%?vua7*++yw8V9+yDZc$KLI@A1tB zsXy?_Z7vQ{ul6c$K1l85UD15C+TVL}^Q&N)4jSxT4f=uCJWwz1`sM}htG#xEdU+oJ z{lM#Z^8$|#ydE~+3mWdb*JHI;S5PnS65m@M;okjy2YDXxn&Z35GuC^)?`jCY<+}&M zOMNeczUxc9V!b!`T141v@y!Qq@U1c(@!IXX3Ut5k9?&m+FM}TUr4dKGPWf6uzxT}t zz2G|#^r~+a=uO{Mpm%)tfd1-x8T7s{jXdJ@#CLaOxHr}2#T@Z!qb&n%udM{_qFo7E zti1%<6Mj`L9`Wj@HOC(DD%0kH4$)S|hkK9El7w*YHQGwh>)PF*DSl-c;odcVm7s_H zNM^XVw|^yQTmO|=N4!S(?*^^#H)kL5n&_VgI>o;X^i}^#&}x5k&JnNK{&}GD{L6BW zc)jUg3F`1)nR`U^TIRnSV3of)?}*oX{&}Du_?Llh_OArp=1)3=dw=R*2C5FI1WgK9 z30fAg8+3KRCD0oIq$Ah^&7e~QcNe94e-L=7=!nHBc3{QfTbcgV4+b_-% zC&U!S#>VBvb&PAU^@!^qH#Y9w*qXSdaU0^c#qEpx4&LYCO=F+FZ^r!;_j}x`2hS>`N#7qPV5w&Rw=aEQo^tD5YCRP;Iwvpn=^=Kx4c0LLGqmB4|pt zp`f|lMu2v~I3?Z2LU;hCD(}YQyn?y_V=hD8gx;OqCV}_Ojy(T^XgPy=v)d~on0`Va zMLdgUMZEYx)DYAq9k@LTy@^G*!1^Qxy6zYf~ExE8b{TKX6B%E_%CQM?GkFQL7* z_-+0_LOF_8foUy9+Elz2!k?iYLHjAx8^yd2en(Yz{}95u?!5KE-FcDGs4csH3}Lw^ z^3hV-y&f#XyYB#f87;Nlzku+D?gv4)qeVR4{V2d~)W>LIB|K|W2`@4p!#O3q)}2at zJ6=GYR>BLG`{Ol?^A=jZF?OJlQj?m#g)A z$u+Rc-Po*@7caN(*_O%eezs+%(jOsaY$>mF%hJ23_d&Bu{{rn)>K;u<_fp=--lZas zG#ImYRJ3;$oOk&CxtMxM{XU)vx_J@`)OYQcXk zxOES{PE_>>t-td-o1+%BLN@8*)`RpQq3$K1X7^%HtGmC@gG9J|MJ|qo<{|Sq4;Xf>c?U`AW zyw0wHzQJs>;crf|iJGq>P_mFM1bvHn zucc%W>kaB)BSB4z*~oR2EMX(p!(Uxw7eU`;K6^}M*a_*f8yX_{~6CeaTJX0f2N&M_CIYtyj(|%zu0L1qwwD+K7C!`VS`X- r31p}Aj<5b=(LRQPr%rN8FVqiI3tn`akMP(X{_eO|Bm7M3lHC6vIMRHW delta 30110 zcma)_2|!d;`~S~5_c9C&BEvQd0}T5NJK_R@0s=0n34)4=iMg-1<&xS!7+Gm*R~xg{{;78n5kD6QBRZ-j0+a}vK|_@% zXq?wykk$&Ozm=D00wa>rKx3&^`Hsd1XSgUCJ&FGLE2n3{RNGQZYLP&3%?134iVCj`n zl^O^WO{FJ4#B-k_eHetnBc!(&Cu@m=7x5o+@C>m~3n&*o@XED>%n;2h2Q~Kg&HyHw z=E|scs06q3T0dfsCrq;GRA*soqvHco9U8*B9cl}iyfdQE;nUFdH1KaJ_-_gghb9n% zPeuYyR_Vjt5>4RW6pcw=vC0+@)xv8MblQYUUkLkPt+esH0nG({!~$nS*)p?16QJtB zHa~u3Hj|kb&Wtv_$`B28i6={mGEs`m=UvA;A&6Tc9FiJC&Ou2~C#dgCC|VA#492W8 zp=^0lPhJay>dVLvMEOD*>>yq?6HtIguW6sj+vqhJ3ib~0)XV=EpbA6}F?x^5FiX5E zEj&M)2|i@KXC(|YglsT=-T_)qoE!mOOsm(b)vyI%L$FHWLm#QrDH!GEN9z*1jYxO z%jb-P2s58e8t70%bAMyUl5?q$D8Ps4eQeOBn&zxfJUIuw3-LJ00WFvfI#q*10MRfY zBoBIt|HQ)Y92l8*;g@@Z5uzcfp5!2ewGKX9BzUy9+M7~kI(X4}29L&R8T+auUAHmF7x)#gbyA4 zgy#TTobsIq)B$4A&)+gM5c2cpWvHjM=ijoAHfbI?2Ln$6WCGJdbc9HE4$dd?H_RD0 z*}^ia&`Cp6H% zP?S33c|F~&So=sT9JrADe>H=gegC{j_C7eM3 zFyiWE!1Bgn#{9(a3bo7l&SVC^ueP&E4q-!t7ief%w>URT%A-u1ISiJ z6pdGha2TgtZeuf{IJq(p!s-HC*@;IhgS>(r!Wixo?ln0dVk-;&$uX&pL6;T&6Jgy6 zV;o*Kxie4L<)3(SW!HZoxU!oH&=fh`FWmNsUmiK>1Gis?S|Mv4cWijXF;8izeC!`z zhRW^_gD4WZgqLD`q!b=G=?ix$3@?|~WxNo-M+(vLl)-BCmGRz&-q0U#4Us2ZcqlWE z2=D%H)#H&N&F#i4jXaBbHAWwXN;pHIn~!-Lpqt^swKEr_C~tBvh_=CU1S4ax730x* z3hHKE3=;sWXX}lzwmdkf6;g+ci5MJD97JZam0;RnTd6qq!Q&(*!AYYIUa-Rk^9+mY zry9**6m?~PYhcc6CYOQ5)*sC{UxF*2KnS+s5qCJFi4D#!Z`jemLgP&)L%TJ$fjk&b z9^G5Y1d1lmyL$4hAMt~EY$O(1xH zOO5Q_-=RH{uqqx4CmZZcbp)mcltT2(_7txUVUt$!_CtrmhKt!Ectzp-nqQ;PsS2h*$ z2P&WY*bTVfXyKJ~634FD7NpP?|IHSxboj3}gEHg4+KkGU|7tTScUss({=F_TiGq5X zdE1m!U$aApi>IgB=kbIE@=J^cI)lIMfSJzU%J5AvbTeNP)nVidIgIY#nq){jc?|T> zY;K3a50}Y=;Q6q)Q#FfZ8!P%&?b?<&W){^a%!U%~6eb2-AK)F!6j<`9j?Dyv%seZ{ zK~~So@u-!k6F?_-fI=%_S=Xq0L)Ec{z;ev5n$WIWzO5YYY0b@TVaQ~UKz=FXO~baq z`9$EV!rKNT{U6%a%H1|@hqm>EwwbVPu&I>Z^fbux;37lc^fY>ifa=OuwvC1BFrQHm zH#%G`3})wlY%`Dl?`?)lgr+k0f3z8PLBxuFCyjvG8L)QVnqWz3YU!8h?gMpVCqpj; z+S*_r@X>{ZoWS|XdjJOX;T}*@{eocWe8{KTVl^Q&4_o(e;)Utm0$e1HF(7o=y2*@xzv&PcRz4CKH?_^{EUXRM>yhU zaKzwb{68GQ$@+++*hebFt-&kaf>YKs(p~=eg0fW3!cuu(1PgGV1#d!s!GTu`p zRS69Yp=nBHU?pv(tP5;M)0K;$trb&HJK9Dm4vL~}m8U`5Da(U;(G1s(pe~eVDrts( zw7v48A&O=x8w|T?wldK;nRZaF7)Q{KN>5V*&2f2{4V308p&>amPZ=1}i*`~rgtVji z%9W5cw7~VErGe5yB`>Umc2<^zrO+TbZPV#sWkcI(^eIe_Tw6Loj?pfCP86kMls35~bgc4XZUY^s@qnO%OS(_Hqh zIxU^)yl+*HS{@G(BKi2*0^RrwT99;O2p9j=<}{GhlWsEtK1m&F@3@H*6?c@ zI#-!Lt`~h#IXCV#`jRqZd4rQu>O^K1rf`2OTkK%;HCLu{2&F5PRm&dGRjyUbQy6{S_2p|&^EZ?>tIpFpCFu1M zx>_0a`ZW5ca`E*ebd9po2mqXuHOsgNzcOW)W$$B%0)q=J$^NqGKso|Uwe)+nYwN00@9kDZG7pkG{k9dNnfUxhAl0r(~pKa zds=Be4Qp6rr6r7pH(ZINH@&H~;aC#Asi6_hPg>IlG_v87HZ;eRMmhh=rf<;bhE*NF zBaLxh=}1#(Y(r2E?IqJV=dgS_liC_C=0ma6-jG&EcT*bg%|%(k3+o^`Ow$8QL3id-bLvRBpw2b_umO z3rgr(n%;1ugbty!bwkfSw3kHNI9HWH$!(oK@CS%fp8D>HMkw$xIBdp6=hd2^j}y0YisTyRR=*yB#m$5@Q>$YadgS=^0H z=Ao86?lC8OjK!;l=XsK;kFnOylHM$?!J|8yZ}OS%ZI!66{<-=3=N36%AIc1LiSxsu ztc%wwUx;0;f9@@(W*D=^uhUp5^{-mxVP(|Ehl9RqH6EVZpdL1QX zlxjYw9xgg3k7VZ^vM2LpvM2S|OP+ATd&>TyjQIw7`l>(7zu4E;f1v+h|4?5qPY-Wz z7V6<28tCci?O$~^$bTHP;1K*{-u|Ipo|;f!tuOQS1y7JzV*XW|;GYLLuiD}To}>AT z@lYav@lb((YyN_QS*XRo>KlzGgKX!to>Hg{!Altk z>Pwy(v1gz^Sv=xj5WjoG7{|aca$>{}Bm9Xpvf@d95vZa;K+8W`gy5P+#)n$S8=p2Wh+s9kmM77uAZIf|`r^IO>z2xf(KI z6ffX8P+y{qsu`>ybr`d8)Cnkl->Bjt8uAtDcbMkRs67K)G7T&u8WJ?RA#o~u*28fk zsHAE?;d%n~8fp`&H|6m`pv6_upp+!jQ=o0=InWODB4}571+hq{;Q1_so zMr}e3l6l@N)H2j5s0%V4Z+E1$7!|vvsCNJFr%xz5v=BKi?x8;vLKJ z@ILA`)GtxL0hP!F)Egdg?(k3GLL!YGc~Hf>9-Tq|g6gU%DZF#%RkvumyVKh=tsvZ5 zQv~supc2Ui)sya;KA^oFc<85j0?g%_L7;;)yg$Z)N@Tib2I$^3!Soxw`5^A_<^y^d^(tzUH&hhvPU*Niz3xPiM2tG# z$>9(~Nh)er)B&LCl%Zt2t`At}fkK;fPSCe>d^om3UWt5;;qO5u@(cQ8KD<8ye7Mgj zpBjkgGeaU-J}W^T`920X^zz}EhxzacI0f}NpVbhq!)za-9z;Fmvku~aMEx6MG%Yqk z<@7ChFIrlhfK@NC1wSwHS|o!GZ}A~$ZHtdVH@5iHJ)m)HB@E~>M+<&9i+TyP`Rt5i zn;`xsxb9o^GwL6x_d%P}*gZZ3tA{UFZ&W|fwj{!r_fVSeZqUbkdApzTy7eNiX2Zpo>Lvx~deJq&MQ9Gb^2W__Y)hB?p9Ca{gan*1=zcf!ltwntmbroto>K4?U zs9&O`g5m#sAkky)Kt{=sQIYfQA<$=qmBlJGsr*HkVfYCw*j3G zF=^yA)HR^6p897RB(fR9A3OZ{iMJc!21aKEE0(h=K3|j;8 zAbkvKJjSG=wnr^MeH^tvC?&%J3L*VijF}Mt`yYwSL0F8s3UwW-3-!|gAINYt;43Kd zG8Xd_Y7;66dmf@M%o{Pdp_zG5x*3=F^)`&l5ob zxL5@cIjB#tqqs^R#K$`rH3Zd)8i$&MnvR-@nuD5;+7&d7^a$!@NGJV4B~k$~u#%#V zMxB5<6|J*S9jMO*4L3**G8fJ2q?nK4S5cjqNFC`_7_%DnZPfKa-$Ea34&v+lM?quY zT=)#)i>vmd9zy*Z^(5*A)GMerP=7*o`~nBH1uVrQauUFFlG?yP}I>5JWN2HiaHDRIn)v;q4ML3$O@Kus zA@nDAF=?SopqLEQ9MG;-xHm(pjrF08P)sS3Lf#K;0-7UeN9bP$Mm7sN3?w_qWq}tU zsfOGZbTd>odJ;eQSR0=wGSEn$ofauS z_!DEaYU>sjXM`sx;B#M|vM*2&X@n1NIaP$E7>%SnPNnf-ZH;CU?Xao%d{~w-gk-p> z(O@A%k@k=UVYx;NSubo(C@_>vN#OYwk@vz1jiF>AQVq5+l&nNjv>U^^fvr){p0Hj( zfr&hyqCFbc2gsTT&o>aFc1;+Wg~nR#*|2hB7+ERkGE^;$Gzz*ER$&Y$f$(q%*6j6QBo2!c!=mJ_d>* z^(v8X!>1Z!$yq@^g*O^v$#pl)0$VoR2In2@ZJlL|Ba4x0NgHdm(MB!^>STS+1MvY9{lLu$#>)@8=lfF6D%?B9ALf3AhoUV7U4z7ZaN;p70kXx(DWQ4#1z>u1J% zk_%6*z&%eG(F4W;QifEk{lhxd*j1$DgI4b*?(}QpV{R`Ot*4DW+{Aqrk+~1~EGBhG z4({}tvCkt;n~6KUW$fp6bJ6;%vA>(R(}CpZLr$M0*WDE*CjP0!Kdo;j?o&4L8@<>U z4rsm3G@==y^+wZJL23)fxoxMd;igJAU9`rSCc25|dz!!~!jF0$OeIz~rJ1IZ45V5u zi^wodC%J+g0TJ1NJp@KaKsvFe1?n^R2-2DG)GW*#N(!!WS*eW z5hXy&1Wk`9H_jq;g62kK0j(Fb%n?CMv&m+G8zTAx?G*GG*q$Z(1)Txgv*b9E+Cm38 zi^Lb*G?Rl|M^Z>*#FM6K;?tVeQ<666)>c-r&=sS+3n#+S)T zB(;cnWG#|f#5}T5qzsF!GQC1h3ZjuOnHG^oL4iQ862CUhL$T1LkX$!48kUi+Zc1~Q zmXT6Kg?L52W?Dh!38Im2n_egNf&ziwAbXH%wf4viQyn>k#4EZUNQQ^i)Ui)9y-obw z)M%(DaL&SyLfS`eHPw?MK|O&S?~%Cz2LirNb_%MD{LHk8TozOf!vK@UJ~f0%cgzAili2JfF!zYjfR7ywVSex2TATjDG!kzZd;?_Fe!CYmhmvD za6FXs2pQ`(HX4qRDQ?O#9wSw5x@`K2%zG%`aXu>Wv)l7R2eM^?PQ#Kk- zk~*ZlJYCoMJ7m!ppXGke7 z^s1LLWIGb~Ld|E%6kPUIFXzZvB-P7z2X|90!{M`jtnBlEI(@v77FWG9m9^gKC) z#GS4&ULY2{dZk{(E^)9*@2MTG2j$$ivlN@qWmhmRJrIPjuXwxmC&Bv753DBlnqyT9Vsf~&? z|46puMNci_Cvp<0n(*QMi8LYAlBH2e=AVh&lY4P+Y-hert|RiKznOj^+Q+d7@@7;g z^RHyAn~Kbhq-!s3Q_t<+NfDAlHbxCH|4!-!eHt~~{0G_Wrt#*xq_pUteD_H?lHwqr zM@=)|C!19yUjzL`e2RI}rQ`QbP0yPttrHX&{j!`CV!E+K=W-!Xg9DJ5#sanbLab+k!PEszhL zRjS(Fh;A^qpymBk+8DjV>`SjBEhW36KR36emNITzM2MhpEFWOG;MTKqr(7SI~~Alx|F;b;}sH1dkA_j zMjv9Mf#uv*tNkeEnlXW<3i<*m1F2g3bxejSfffkcO{7vm+Sn|}w_Z(2f?^vDiPUeP z>N7s}n$eL+69u*dOr%{^B6+b_%!%|Y62HWTge1}1ZnA}>(da?kO*QEqd(+&SR#m7p z3aA}jJ6NTv*k8@rulTgN;qoy z^sJy>FiiRMf*?L<`Sg~^#|JH+-WN7LX!%qgh9zkEpyg8^L445isUuKD!bh!uS_JV? z>rA7O)HA&cEkasK{uSFgqzkPQv^6#>q$_PboEK58-5FaL@))f^swIbGy8&GmbPlKo z9f^D0T5<~p=5bo*K&&Qz#1_L7ueOog4WH|MLyBluB(>X0XuTjlpZiklD4udJ_Dp}8 zD2Vq=f0`hqP8D@=@GuNJ%DQ zfn-0>5bC3n_8X}7a2f~%?XT6|kIMy&7RD%B1w56UD5#4q7bsiM7~4xBBWZ!48McK$ zJp|3QEd?4X$O&FX(XoQw2QQ=OVx$`F=eBa=Xu6V<1B&N6ztME9NcycU3n*g})?0ho zwkl){%@x#WyJ8+gM+%bd6~?i2f}lwIn;~QAbU{h>dY~#nIref$Iag43dlt|#BzXVV z&%Qon9IX?^QAqWIW`mn?bfch`khTh{vu^=g>SVQ|AKHm&Jk1bv04Z0{clM7$#?v}M zzuGe(WxYxc?Vr$!@pPjw>f$-=6ciS}12XOxloY=ksA!5>AYa)k>3TugkZ%IrDySqr z7wD*<(eVdDCeo9Fo{K*WbXkyNMf~xQN%WS$4e_Uengs0xr<1Atv|8Y~_=_QvsgIz0 z@mGP2f(!|_LZ(owpoD}wK#78K5-N;O(_BIQ6LNuu3YzRl_#8g!e2ns1#JP_ zG+KqEko^g=Wg5LL=tP3IWd^QwPfey46humRIQ^H}$YMme7*|D-%mBPTJ(A{y_3GycN~tnZ*8gY~kyq`GSvYK|q8%=-1|e;ogG8#58V&DKNAB|~Du@dOy_1v$8MA9un=9!V%X_r!1(iO7 zl<(8Pxtw5kmsDeUpWc6klS0lW&9`i%*$Y(LZ%Jc9KA=626xfz6vAF1UK~nM?mMzri zSg0lqOn%GqAzh4AL(-Gi!?!(dFXFapQkcBSvXxq1RcT!ER?A0pnWEBMpdEDOVwK(i z`iy2QQRx$)y|iknN+*H7pyf_ZHRSi?E9S#=q*HXTKIMw}2tB@1P1-tTm*pr;U9D1n z${!)eXuY7alxxOgbm1D+HZi3FXx>^*u$fMgfmR|_lSN?riXIhIpOS6*ir#ul&G$vh zKFini(7Sm3t0pH>GECplqW4te_bH8rZ|HTT8uDvO7qBf`ui8lJ6*D|S`JqZJQx99d zr8cA**y&y|pQN+4s`zqVB%tr8 zaR;YGxCy^Ni;!x`OR4897ihVgE?X|rWrAJ>+a6}lwms+wS^_Jx-J?W+< z%Qc#~6HIXZBlW2)^g7Mp2($_41}zX&pXw9(11)lsA@mlt?rKiy6Z$i)67&fae}~R< z(`Cyqbf=*GU~8m@+;rLU8$F2x@BdDwW*PsWmxb|UYP_Y1T0c{ZxRe?ddXFXw`VHtW znjuI^O9~~dtDD+}N^Gv1qC!2{$labZA1OoPPZ{CG>|n3 zicgCQH86RP>PAZI6l!MKg2I48*%YK|l9krQWMxgl)-&y#C4$MHtND7SUA9CrKS57` zEt-`hRTIa!v>u@`Y`Va4Y5hWNEN~xY)Yhg|7!#RAkdl@QWD~@8!ngq>jl?yg`zuJfV>feqT1@WtYJC-fzomR6Qp&6_| z;Eq-`Kt+Q1wk(rr52$YVwk(tR37QN$gG^==#CHvuELzYvtzHUk&k_aQX|)h2LlEDT zX0cpBd{gSkVm$=5NG~^Lvr<9U^emt%L432-fo&ATH&h+jRzZA2)sgKH#P?G{) zTB=P?cZTM(9!NE$b2_{mWMwL8`=_r8$!FVzZ6w+p%MN0J@Rlpfn9r<-nrT&N0o&-N zMnh*7_+_*0uaM5H%1v*Dc46AX&9)7p-Pkgf$av_(9_%DiHJOqAR%lOFa0F9oUr65? z+KZJs1TIYfG_;7#aU0KBdb6X))T9g3_l1_QTY{FS9|`TlQomAd>(fsHrFQ|E=62@5gR`h1b8UbOC&**pHE~xzjyBxyF8M4pO!DTj;hj zmUx`os&l&h%$ffUNLFre*6(q5auHK~|tA*m_LKKY;itbO4L~2ECBn z)_;UP$?Col*S{XEOH6~A-wD-N*1FN~6dNmOIMRL~Uc}VaBZ zKqFZ;5Z{Ufv82>lOYFFt%EIQc!0(&$4GLSpx~k-W zHwYubUS)d_m%=7-eAr@k+)Yo1En%14R1@Z8jc%GBww%eAxKp0*^{|!9&rS7VuQQ9A zwuP-`HaG1JTgx^Ia%9Au4y$K7-Nx_3*0G~*x)b&uyWpn#VH?{vA$$u9bW>*dR#xw($HTX?t zK)cyaLG9X34d27g3MvBI=WOeBHRUj%y)5?!m1Y9%V_k2mv=nGR)80~PU0cVj@B^$X zVh!2aw!i5ht58Y1uPrehVpEWolGANv;~`e%ra9qXvfFNYDf|fA`6G8)3!j<6hc|5K zZBEtX2GV{(O-QA8np492zhi8_8?TtZV%lHSjQ;Jen7?MmUsXzLmti{2W(n%pZc+Gg zcCt~mJqh$J+xUm-^qF>9#?x%4n?fyT*ikpdTh6hwZYm3NoM+eFxIFxO*660X@GDGi zQk}lst}grr3q-0WZ?vlq|B-dQtJ>a-+7$i^8|kJ`!hdCR1#N5hMfh)QqnpNCerG2I z9f68AIau~R)ykCj)W8GDAHAWwcW{ZS-OpMkv6vb z9;ivAjL6_b?sG4T;3KWA7n3EQqz*!VF^akfH^ZWn=)QszgR+OtE-K*@7l! z{1mQ{E(og5_&r=J-9oA%uVma0_mJ z{{_XjlJt2tG|@(CO>PSRF1@N)Ecb@X`yP<@*7QNsZP-6 z85KseR4?f3j9j42f8+H}y~P?LwSK@0RBuIxN#!cxE!GHWtRQ}iHA0#th~Hw3kmiYe z{1$73v{KmkE!GHWryzdwIYK%rh~Ht2kWN0p>)&3y`5Y--5N`M_)@bQE(nWePqtOr} z-4-@}Upz+gBNQsCc4>@cK~g`kkCC<`Rg?Reua5GR)kL4k^QAIQH6#XU50HanyG*M! zMyimwQ6Zf&hZM~YZ z81i+O0^!L(Uf@8W9@1H(N~78jvG$bag&;Y!)7n=UAD0%ZsC^ZRe_X0l2{w=;t-Yl6 zZkl8*mbSZTwzX6`8N#-v>j=$ z*Rl5JtmC9Zg3hdf7Z%>LI8N*q)UZBh_m8ds>IIQV@Sn>yWk!;-4l|NqYqG zPZO%7>2|e$J7;B>s--HGa6lc^(mXeQWUY~wxoNMpR$A+(qt+LtJxJ<^&XwwosZUh!5IAsYwtYw1pB$#1e4O7Diq^9so)MI}CjuSw;C_ztGpYd&#w0(I#PPxXdQX*0fG!UMd zlIHb=@Bi@ylCMzPr1io$K0P*Ko0Qm3E&h|NcdZ{wW8t$yo{}$D+a;etDw*^drcb1T z3YA7?B}aTBl_II_-673EswSUjwTajv9UrQuJet)b;($~%OkDpiWetcpEX^9ujS9J& zH6h|#sSc@{w8+jjos|}k;5M~Q=cJWLY7yt8?2&3db9QyaIcX?T4T;FEjrdNgAFURc z2y|Z3j#E>%%bp)`L7KzK0R`q|FO9e)ZAYV8#1&}|l3K(SY5jPfvDvoSOEn-n-fbu%^l(}>?BBmYy*qH1>~E0UV>u9TtLw9jS}(_Ja|k(6aBIiQIB z5qG8iDw3D7GfelSlWsZ^aZkGLrXkiprTcC=9&ul4JsFE9e3twzl?hr2ULHt`1-*l` zRgep5k06ID`*g$u>A2f?F@ngK-E;%)qTYAYod{VDoWcu)36*^$!c(4rR7?1EQ!6hP zbODO+l8*|yncZmck{bmzWv{S$$(E>!!WdKzX{Gj#>@!G9-1e4w35x@x?ksKBT6E#oCc!vdCuz z^2@J9?lGMgsIJzba)ltiT8GM0kkrLGR6eBIaIp@P8wK&jI!ta7#24!@**XJ#;$j^p z7pSC##oA#ClY0o{t96*XRuEsU!{qfMBY&nRTs|&{FV>OrSwXm8mM;t9i*=0b^9(Og zU7l@nxgfqg+vW9w`10(Cmm3B0^*KS#p2;)9(`>MmCdy?<{H(YaktiQUdR}YoP+?4y z&mvW8TXpb`Oq0uJ@qE?Vj1JepR)wU#lSq>bo<$pZ42HM0+@o5hRY5=wc^;zr#7k@W zvLOCeqP5&8h_|=3d|wc6Z(G^tIn_;ZhjL>(d9I+*9WqSqdzrkTCgqpW_OhQKJ}~WNqaZ#o?PV(x?_j^kEP14$pe#dV2YIca z=&bO_9J%XU?sF+=lNA@4Cm%(+NS}v3%$MgnUgXA$Uaxe>Gv&(*RifWON9D`Q1o3x3 z`SMwj@?MA3$b9)S5+9gs$k&KeO=3DW8VY1^=zi$FnfPPpPgpw(8-M1$bz~QybbJaO z9y`yAd`$LxiC2cdjeIP!yPS)(l%#j;6Imn|A>qo_&~FEm%nmrKN&Ak|%<#qZjI~kuO3_y|EbdxyWMt7D_ktIf}g7G1~#pcyI2QWvnKjK&!pz z9;n1}NSb9_2O4i#O}^?lH*ypCzT<*OFLJBn=jLq?-)PuI_?~bZxes}Ffzu_CyNGwr z%E&a2pqx5TbIzK`1L)xxvE{6b^dYG^??+xFe86tNcTpM*qeym6w#hMybcI7VQkvs} z+6~L8fSOLsX*3j*X`o(oR?gN)_#<&SpGJDor8#S$mE+;jG%vb3XAi`@hcT;j4nTNw zPIPcJ`6#E{sHeMgjzH`A9q7SW-BG9$QD>l5ll|bo+Cfg_oR2ioOF35}BWQhSjv<+cDFksBD*jm*gX1u8T*Hw3~fA$>Qp9@ViO4~KIjql(c*H+c5d9#u_lLwtYw zS8gGwU*5FH{K;`M+Gtor`FCy>QT~0JMU;Qz zW)bDzv{_Dv<&{LOrsMJkMJ=bZAzTd;d2G~+wBEsMP3PoIiP}aN<~gEv(Up1UO}psZ zc@@T8baP%Rj6MHKiWmJXZ%!0^5)3or6g`}mVLC;>&Eu2qLf%V|t3Ff#y`Be^!0yd- zYZgq>`q0ZJt~X73#w)64tkY{z$6(sRlOraG$^zx9MFfWJ>_%i;V;b@5^k!5V2}5lK zYG;L=)`1Q{9gR90^|L%4Z_Zg4#b=CcNn8D+ut zMWb5C)lTOj{wAbPgqUnoB7yl7l}LW=^dqEv(CK}cp3`!EkGf0wBfZg>-a_R3_ahy4 zrp?|H-bFYSQzLm*#+$ty&_#Ws z*Rd7(13=g05019udm208%e5WvDcRYE{83Q35A!QQcjQ+X4?usUS?%oW{HG!2d(`^S z>S*4J^C0FYXoj8L%g->`87tuGgBpZtMNI(R#2l>)hFHD$^oc$NPM3pb7E~CkA$%Fm z^1YqvqKiq_f_I`Xvd0V7Llr9uK8W4~)<%OJ+kHcX`6Ib@!Y@a5!mmPh+$GovpH+6k zFLs;Q*n(}*cOm_!(NtQIzc1QLg89EKS}$>T5z^FxY`C2^2X$e=m(dZ@@`B@_Zxx)0 z=EcBz0NJiUH*P7o8Euk2Drf>dTtH*eFr0?rO!Srq3NuDJSKtHI8wJ;l-7vnt^h-fN zOg0(YF*L@D49j!K7U-hF%4jdrqL9zny`7?B(uk=rA!d{mSGWq!g0#YPh$%qr530u) z`12DO<}qnx9EQ2BW6u_5#n`163iCi06m|u*<@AcNGiPC6&^HSQ#*8H&6uuuhh4-Js zz}qx5W(rOpJKJ6e-38-1I_3b|SNKuL6v96ZoI+kmpBlr@g;`L*$-)d%8o5&VT#Ox8 z@}cC1!V2S1bZRI3!afvSpN|@g%A2tW3a$@b7Q?Ry{EJIh+r1UD9o4ZJFAVG0A5iPn z*hT9=--p(Bh{-aJlK2*e$8Upqezjdg%pOd?2QMUEbaeJEsFu`uFQ_?ZPE;vYcLw$E zd^lzXjq7|oW|x%G`84!UR_6;brJ@;UI$e!f4^^o*mO4m5=UZS@EvF|OgFrOt(KN|zGgg*oqQa- z^f-1kcbX6j?~h{k!l10~oECc-tc`}tIFy&k^3EBt$8g%NX76?$VqML)f>N3H?p^6K zC|)na{O=fRf~dmS2v8^zH4QZrH4n7W&<(@IsQpm~gTgfs!xKSsjWaM@jrt<$BG5*| za!}YwV0azsCQ#TtfOdl~8e!A{)MIG40oo(>4#wQY80x_@EW*}!K{(r_2W>RGD5)zN z+^TGN`665H;W+G(OeX8DgU;0b23n&FguhGvvMw1^(RBrVP4_tH8eKoo_jCh6UAiHl zAM56W?$*_7x{>a>6Pioppzb{A*SgD~XLK>161}902mM-?0(w(d3i_+=NzW*VS?`$- zF~=NmxTHG+`nB$Y=MYd2Z4J)`3fVv*n|2L^pVaP#_!`igy1AfV>t5AHNiJQ3HXrn& zwnF+-r}G*DVLz`L(Dq(yK!ArmX{!=7BtFd9;i#V6g0qRXUlxg_jCt91ALBvx^yR7=6ktx z%x^bnBItX%zMug<<$gE35`2dF4e>sxd)05Xce;<$Zw-WB_uB>GHGUUC-}9pmUAoT) zei5J_`Q?G`@~gHS)E)3!4SLvb7wFf17eP<@(ddJ^bAAz^-}~i(Uh^9addsgG^p4+Z z(BJ)bf&S@t5tQg@%t4)perHUAkGDQI{-CbAz5=vJUj^DnUkCbx{zAOtpl%R+#r&Xd zsNM=XN}mflUSE}z;4@iIk`sJ3=&L|~((eS#@~_B9@LAwr1^Sgg$xQGG3aA2oJfN=q zLEYqlouJbLtXT(jvjcKLp9`n}eIcL++YJb8$$UY2Sw{2tXlR#(K z9rl;)3*fcXzS91deFLPgjoV@W0&FMj=j=D_jyrbG_!ja0@waWYafWy+98=@7;&b9V z$M=QsZQB#^PsNXnpBi5qw=8~b{QCIq@q6NL$IA)62|)>Q39S+`6FMjKg5TP>K|tL7 zNYL>Kvl5<5Sds8i!p?-#?$`N*Uog#|3C%CczYfD+p*GLNe_kyT`70pNlsF3<{qxFB zEP&TziTx9^;%6lcNt~Woop{?eKXGwled6ha9f@BhUQGNk@qS{>a}r6u6Bn4AlyoiWR$Oc{cUqQ|ncO{j5QIl1PXG&#O+U zrzY1VFHFAeYkMvE&E$8Iw%O-ZjR2oJnAeHOhTgpOA-#E#aj0#3 ze+FT-C-N|+wD&%U8QJ>~=roL3*!wF8uj~CS=r)XT9O-=);1=qi7{yAsYfA|)G6}=k zCA`*;mGE{9LY-B@3s(E%c}%keW4<zptToV~bK=yxP8pTc)=A;g(rS??K9hQeNq{r6i84CumlwFX&^X2GHK6 zypd(44xVTzx}ILjTl_NW3eXecC@R~mC?ms&EkAA%R@aj&@<_-JL9tQnitx=1QL`U9_^Z(y1wGTfD z-7WZ!1$XSj*NN&r$qhf>VJ~Vr1V~w=hesdMhlF{SfLc9^K_fkbq&_6tlgGz;&ZZ|j zQ}R`^kwn0M*U^e(l3daS{!7YloLib$xZ`y4334v^a`H9!{TY7mCf^5@Q!Xd_z;7V@ zT2i7x?oH2!0s0G)f{GhhZ2P?16|B~>f!ITu{oei*-=m@y9Bz7U3!<2 zyU%ks>?HyBWqxl_7#zp*eOj$LM2Oo)ZUcAc!a=N7a zYs9~sx}=PSLHoDlDKjemXIz>y{T`bbM93ldzfzljzUSdkX;DNFJ8p3vzQ^KxL-U)B d Date: Wed, 19 Sep 2012 00:34:10 +0200 Subject: [PATCH 015/379] Removed character causing error --- .../App_LocalResources/ExchangeDomainNames.ascx.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 77fff6cd..8775c057 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 @@ -160,7 +160,7 @@ Change Type - + Change From 8eb4865510899a5fe84ad02a545956d0ad489ae1 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 18 Sep 2012 18:35:48 -0400 Subject: [PATCH 016/379] Merge --- .../WebsitePanel.Installer/Updater.exe | Bin 198144 -> 198144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index 29802bd2b9a5e9d8d83ffd9c8dbb78e5bbe7c297..24807a2081e275d4247b2a6afb24675a28bad0d6 100644 GIT binary patch delta 45 zcmZqZ;c4jMnb5(^xgw&myS1BfYd6!u0)e9sK5;xNviDwna-M%9FOTi^m_nu{QvkOQ B6Kntg delta 45 zcmZqZ;c4jMnb5&(aX+B3yS1BfYd6!u0)ac-AAO5E&Hd+fDFDTO B6ukfd From f85d468b7ce84864d4da59b84125ece8be9cdc6e Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 18 Sep 2012 18:53:28 -0400 Subject: [PATCH 017/379] Added tag build-2.0.0.38 for changeset 47deeeaba0d7 From 39d94f06e263f61697dc644df64dda3f60430835 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 18 Sep 2012 20:21:27 -0400 Subject: [PATCH 018/379] Update Copyright --- .../WebsitePanel.Installer/Updater.exe | Bin 198144 -> 198144 bytes .../MsFTP80.cs | 30 +++++++++++++++++- .../Properties/AssemblyInfo.cs | 30 +++++++++++++++++- .../Properties/AssemblyInfo.cs | 30 +++++++++++++++++- .../WebsitePanel.Providers.Web.IIs80/IIs80.cs | 30 +++++++++++++++++- .../Properties/AssemblyInfo.cs | 30 +++++++++++++++++- .../ExchangeDomainNames.ascx.designer.cs | 28 ++++++++++++++++ .../GlobalDnsRecordsControl.ascx.designer.cs | 28 ++++++++++++++++ .../WebSitesAddPointer.ascx.designer.cs | 28 ++++++++++++++++ .../WebSitesAddSite.ascx.designer.cs | 28 ++++++++++++++++ 10 files changed, 257 insertions(+), 5 deletions(-) diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index 24807a2081e275d4247b2a6afb24675a28bad0d6..08fe7cdcf3f29b3b4dc99f7ca361c466c00e0ae7 100644 GIT binary patch delta 44 zcmZqZ;c4jMnb5&hzOk{ZwTp3U7t^5vfr&qTS-B6$c}@$JV>JK9HD!BDA=8p60Fs6g AvH$=8 delta 44 zcmZqZ;c4jMnb5(+xuUVFwTp3U7t^5vfuj#TaXc%s_g;N+o_`}RkL~uDLZ&5C0H*#E A5dZ)H 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.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.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.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.designer.cs index a3ea96d8..7bad4113 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.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/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/WebSitesAddPointer.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.designer.cs index 5ea5bdeb..555da404 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.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/WebSitesAddSite.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.designer.cs index fd2055fe..2b9b45f0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.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. From 2094e5362eea1141214926276616982f50ad78ce Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 18 Sep 2012 20:36:51 -0400 Subject: [PATCH 019/379] Added tag build-2.0.0.39 for changeset 44cd0d1ba68d From d91b32e1564fc2fdb6371db4284521191bc23b3a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 18 Sep 2012 22:15:08 -0400 Subject: [PATCH 020/379] Backed out merge changeset: c3a217f258da Backed out merge revision to its second parent (d44635d5d6c5) --- .../Code/Files/FilesController.cs | 108 ---- .../Code/WebServers/WebServerController.cs | 492 ++++++++++++------ .../WebsitePanel.EnterpriseServer/Web.config | 40 +- .../WebsitePanel.EnterpriseServer.csproj | 6 - .../OS/IOperatingSystem.cs | 4 - .../WebsitePanel.Providers.Base.csproj | 10 +- .../Windows2003.cs | 11 - .../OperatingSystemProxy.cs | 175 +------ .../WebsitePanel.Server.Utils/FileUtils.cs | 121 ----- .../OperatingSystem.asmx.cs | 33 -- .../Sources/WebsitePanel.Server/Web.config | 2 +- .../WebsitePanel.Server.csproj | 5 - .../WebsitePanel.WebPortal.csproj | 1 - 13 files changed, 350 insertions(+), 658 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs index 3e58f78a..7784cad8 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Files/FilesController.cs @@ -912,113 +912,5 @@ namespace WebsitePanel.EnterpriseServer return users.ToArray(); } - - public static int SetFolderQuota(int packageId, string path) - { - - // check account - int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); - if (accountCheck < 0) return accountCheck; - - // check package - int packageCheck = SecurityContext.CheckPackage(packageId, DemandPackage.IsActive); - if (packageCheck < 0) return packageCheck; - - // place log record - TaskManager.StartTask("FILES", "SET_QUOTA_ON_FOLDER", path); - TaskManager.ItemId = packageId; - - try - { - - // file server cluster name - string fileServerClusterName = String.Empty; - - // Share Name where home folders are created - string shareName = String.Empty; - - string[] splits = GetHomeFolder(packageId).Split('\\'); - - if (splits.Length > 4) - { - fileServerClusterName = splits[2]; - shareName = splits[3]; - } - - // disk space quota - QuotaValueInfo diskSpaceQuota = PackageController.GetPackageQuota(packageId, Quotas.OS_DISKSPACE); - - // bat file pat - string cmdFilePath = @"\\" + fileServerClusterName + @"\" + shareName + @"\" + "Process.bat"; - - #region figure Quota Unit - - // Quota Unit - string unit = String.Empty; - if (diskSpaceQuota.QuotaDescription.ToLower().Contains("gb")) - unit = "GB"; - else if (diskSpaceQuota.QuotaDescription.ToLower().Contains("mb")) - unit = "MB"; - else - unit = "KB"; - - #endregion - - OS.OperatingSystem os = GetOS(packageId); - os.SetQuotaLimitOnFolder(cmdFilePath, fileServerClusterName, path, diskSpaceQuota.QuotaAllocatedValue.ToString() + unit, 0, String.Empty, String.Empty); - - return 0; - } - catch (Exception ex) - { - //Log and return a generic error rather than throwing an exception - TaskManager.WriteError(ex); - return BusinessErrorCodes.ERROR_FILE_GENERIC_LOGGED; - } - finally - { - TaskManager.CompleteTask(); - } - - - } - - public static int DeleteDirectoryRecursive(int packageId, string rootPath) - { - - // check account - int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); - if (accountCheck < 0) return accountCheck; - - // check package - int packageCheck = SecurityContext.CheckPackage(packageId, DemandPackage.IsActive); - if (packageCheck < 0) return packageCheck; - - // place log record - TaskManager.StartTask("FILES", "DELETE_DIRECTORY_RECURSIVE", rootPath); - TaskManager.ItemId = packageId; - - try - { - - OS.OperatingSystem os = GetOS(packageId); - os.DeleteDirectoryRecursive(rootPath); - - return 0; - } - catch (Exception ex) - { - //Log and return a generic error rather than throwing an exception - TaskManager.WriteError(ex); - return BusinessErrorCodes.ERROR_FILE_GENERIC_LOGGED; - } - finally - { - TaskManager.CompleteTask(); - } - - - } - } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 8966ac3a..5ea4e114 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -157,11 +157,11 @@ namespace WebsitePanel.EnterpriseServer public static int AddWebSite(int packageId, string hostName, int domainId, int ipAddressId) { - return AddWebSite(packageId, hostName, domainId, ipAddressId, false); + return AddWebSite(packageId, hostName, domainId, ipAddressId, false, true); } public static int AddWebSite(int packageId, string hostName, int domainId, int packageAddressId, - bool addInstantAlias) + bool addInstantAlias, bool ignoreGlobalDNSRecords) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); @@ -180,12 +180,15 @@ namespace WebsitePanel.EnterpriseServer DomainInfo domain = ServerController.GetDomain(domainId); string domainName = domain.DomainName; - // check if the web site already exists - if (PackageController.GetPackageItemByName(packageId, domainName, typeof(WebSite)) != null) + string siteName = string.IsNullOrEmpty(hostName) ? domainName : hostName + "." + domainName; + + // check if the web site already exists (legacy) + if (PackageController.GetPackageItemByName(packageId, siteName, typeof(WebSite)) != null) return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; + if (DataProvider.CheckDomain(domain.PackageId, siteName, true) != 0) + return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; - string siteName = string.IsNullOrEmpty(hostName) ? domainName : hostName + "." + domainName; ; // place log record TaskManager.StartTask("WEB_SITE", "ADD", siteName); @@ -198,7 +201,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); @@ -216,7 +219,6 @@ namespace WebsitePanel.EnterpriseServer // Return generic operation failed error return BusinessErrorCodes.FAILED_EXECUTE_SERVICE_OPERATION; } - #endregion // load web settings StringDictionary webSettings = ServerController.GetServiceSettings(serviceId); @@ -240,13 +242,6 @@ namespace WebsitePanel.EnterpriseServer if (ip != null) ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; - // load domain instant alias - /* - string instantAlias = ServerController.GetDomainAlias(packageId, domainName); - DomainInfo instantDomain = ServerController.GetDomain(instantAlias); - if (instantDomain == null || instantDomain.WebSiteId > 0) - instantAlias = ""; - */ // load web DNS records List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); @@ -254,26 +249,15 @@ namespace WebsitePanel.EnterpriseServer // prepare site bindings List bindings = new List(); - if (!dedicatedIp) - { - // SHARED IP - // fill main domain bindings - /* - FillWebServerBindings(bindings, dnsRecords, ipAddr, domain.DomainName); + // SHARED IP + // fill main domain bindings + FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); - // fill alias bindings if required - if (addInstantAlias && !String.IsNullOrEmpty(instantAlias)) - { - // fill bindings from DNS "A" records - FillWebServerBindings(bindings, dnsRecords, ipAddr, instantAlias); - } - */ - bindings.Add(new ServerBinding(ipAddr, "80", siteName)); - } - else + //double check all bindings + foreach (ServerBinding b in bindings) { - // DEDICATED IP - bindings.Add(new ServerBinding(ipAddr, "80", "")); + if (DataProvider.CheckDomain(domain.PackageId, b.Host, true) != 0) + return BusinessErrorCodes.ERROR_WEB_SITE_ALREADY_EXISTS; } UserInfo user = PackageController.GetPackageOwner(packageId); @@ -327,12 +311,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); @@ -377,9 +359,6 @@ namespace WebsitePanel.EnterpriseServer // CREATE WEB SITE siteId = web.CreateSite(site); - // Set hard quota on the website content folder - FilesController.SetFolderQuota(packageId, site.DataPath); - // register item site.ServiceId = serviceId; site.PackageId = packageId; @@ -395,14 +374,9 @@ namespace WebsitePanel.EnterpriseServer // update domain // add main pointer - AddWebSitePointer(siteItemId, hostName, domain.DomainId, false); - - // add instant pointer - /* - if (addInstantAlias && !String.IsNullOrEmpty(instantAlias)) - AddWebSitePointer(siteItemId, instantDomain.DomainId, false); - */ + AddWebSitePointer(siteItemId, hostName, domain.DomainId, false, ignoreGlobalDNSRecords, false); + // add parking page // load package if (webPolicy["AddParkingPage"] != null) @@ -577,36 +551,26 @@ namespace WebsitePanel.EnterpriseServer // remove all web site pointers List pointers = GetWebSitePointers(siteItemId); foreach (DomainInfo pointer in pointers) - DeleteWebSitePointer(siteItemId, pointer.DomainId, false); + 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); + DeleteWebSitePointer(siteItemId, domain.DomainId, false, true, 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); - // Delete WebManagementAccess Account - WebServerController.RevokeWebManagementAccess(siteItemId); - - // Delete website directory from file server - // This will remove the hard quota as well - FilesController.DeleteDirectoryRecursive(siteItem.PackageId, new DirectoryInfo(siteItem.DataPath).Parent.FullName); - - // delete service item PackageController.DeletePackageItem(siteItemId); @@ -622,8 +586,119 @@ namespace WebsitePanel.EnterpriseServer } } + public static int SwitchWebSiteToDedicatedIP(int siteItemId, int ipAddressId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // load web site item + WebSite siteItem = (WebSite)PackageController.GetPackageItem(siteItemId); + 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; + + //string ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; + int addressId = 0; + PackageIPAddress packageIp = ServerController.GetPackageIPAddress(ipAddressId); + if (packageIp != null) + { + addressId = packageIp.AddressID; + } + + + // place log record + TaskManager.StartTask("WEB_SITE", "SWITCH_TO_DEDICATED_IP", siteItem.Name); + TaskManager.ItemId = siteItemId; +/* + try + { + // 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 + DomainInfo domain = ServerController.GetDomain(siteItem.Name); + if (domain != null) + DeleteWebSitePointer(siteItemId, domain.DomainId, true, true, false); + + // update site item + siteItem.SiteIPAddressId = addressId; + PackageController.UpdatePackageItem(siteItem); + + // associate IP with web site + if (addressId != 0) + ServerController.AddItemIPAddress(siteItemId, addressId); + + AddWebSitePointer(siteItemId, "", domain.DomainId, true, true, true); + + foreach (DomainInfo pointer in pointers) + AddWebSitePointer(siteItemId, "", pointer.DomainId, true, true, true); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + */ + + return 0; + } + + public static int SwitchWebSiteToSharedIP(int siteItemId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // load web site item + WebSite siteItem = (WebSite)PackageController.GetPackageItem(siteItemId); + 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); + + // get existing web site bindings + WebServer web = new WebServer(); + ServiceProviderProxy.Init(web, siteItem.ServiceId); + var bindings = web.GetSiteBindings(siteItem.SiteId); + + // TODO - what would be correct logic here? + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + */ + return 0; + + } + private static void FillWebServerBindings(List bindings, List dnsRecords, - string ipAddr, string hostName, string domainName) + string ipAddr, string hostName, string domainName, bool ignoreGlobalDNSRecords) // TODO test if IPv6 works { int bindingsCount = bindings.Count; @@ -632,36 +707,46 @@ namespace WebsitePanel.EnterpriseServer if ((dnsRecord.RecordType == "A" || dnsRecord.RecordType == "AAAA" || dnsRecord.RecordType == "CNAME") && dnsRecord.RecordName != "*") { - /* - string recordData = dnsRecord.RecordName + - ((dnsRecord.RecordName != "") ? "." : "") + domainName; + string recordData = Utils.ReplaceStringVariable(dnsRecord.RecordName, "host_name", hostName, true); - bindings.Add(new ServerBinding(ipAddr, "80", recordData)); - */ - - string tmpName = string.Empty; - if (!String.IsNullOrEmpty(hostName)) - tmpName = Utils.ReplaceStringVariable(dnsRecord.RecordName, "host_name", hostName); - - string recordData = string.Empty; - if (tmpName.Contains(".")) - recordData = hostName; + if (!string.IsNullOrEmpty(domainName)) + recordData = recordData + ((string.IsNullOrEmpty(recordData)) ? "" : ".") + domainName; + //otherwise full recordData is supplied by hostName + + if (ignoreGlobalDNSRecords) + { + //only look for the host_nanme record, ignore all others + if (dnsRecord.RecordName == "[host_name]") + { + AddBinding(bindings, new ServerBinding(ipAddr, "80", recordData)); + break; + } + } else - recordData = tmpName + ((tmpName != "") ? "." : "") + domainName; - - bindings.Add(new ServerBinding(ipAddr, "80", recordData)); + { + AddBinding(bindings, new ServerBinding(ipAddr, "80", recordData)); + } } } - - /* - if(bindings.Count == bindingsCount) + + if ((bindings.Count == bindingsCount) | (bindings.Count == 0)) { - bindings.Add(new ServerBinding(ipAddr, "80", domainName)); - bindings.Add(new ServerBinding(ipAddr, "80", "www." + domainName)); + AddBinding(bindings, new ServerBinding(ipAddr, "80", string.IsNullOrEmpty(hostName) ? domainName : hostName + "." + domainName)); } - */ } + private static void AddBinding(List bindings, ServerBinding binding) + { + foreach (ServerBinding b in bindings) + { + if (string.Compare(b.Host, binding.Host, true) == 0) + return; + } + + bindings.Add(binding); + } + + private static string GetWebSiteUsername(UserSettings webPolicy, string domainName) { UsernamePolicy policy = new UsernamePolicy(webPolicy["AnonymousAccountPolicy"]); @@ -747,10 +832,15 @@ namespace WebsitePanel.EnterpriseServer public static int AddWebSitePointer(int siteItemId, string hostName, int domainId) { - return AddWebSitePointer(siteItemId, hostName, domainId, 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, false); + } + + 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); @@ -766,6 +856,13 @@ namespace WebsitePanel.EnterpriseServer if (domain == null) return BusinessErrorCodes.ERROR_DOMAIN_PACKAGE_ITEM_NOT_FOUND; + // check if the 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); @@ -781,16 +878,62 @@ namespace WebsitePanel.EnterpriseServer try { + + // load appropriate zone DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); + if (zone != null) { // change DNS zone + List tmpDnsRecords = new List(); + string serviceIp = (ip != null) ? ip.ExternalIP : null; - List resourceRecords = DnsServerController.BuildDnsResourceRecords( - dnsRecords, hostName, domain.DomainName, serviceIp); + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(siteItem.ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + + //filter initiat GlobaDNSRecords list + if (ignoreGlobalDNSRecords) + { + //ignore all other except the host_name record + foreach (GlobalDnsRecord r in dnsRecords) + { + if (rebuild) + { + if ((r.RecordName + (string.IsNullOrEmpty(r.RecordName) ? domain.ZoneName : "." + domain.ZoneName)) == domain.DomainName) tmpDnsRecords.Add(r); + } + else + { + if (r.RecordName == "[host_name]") tmpDnsRecords.Add(r); + } + + } + } + else + tmpDnsRecords = dnsRecords; + + + List resourceRecords = rebuild ? DnsServerController.BuildDnsResourceRecords(tmpDnsRecords, "", domain.DomainName, serviceIp): + DnsServerController.BuildDnsResourceRecords(tmpDnsRecords, hostName, domain.DomainName, serviceIp); + + if (!rebuild) + { + foreach (DnsRecord r in resourceRecords) + { + 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; + } + } + } try { @@ -807,59 +950,60 @@ namespace WebsitePanel.EnterpriseServer } // update host headers - if (updateWebSite) + List bindings = new List(); + + // get existing web site bindings + WebServer web = new WebServer(); + ServiceProviderProxy.Init(web, siteItem.ServiceId); + + bindings.AddRange(web.GetSiteBindings(siteItem.SiteId)); + + // check if web site has dedicated IP assigned + bool dedicatedIp = bindings.Exists(binding => { return String.IsNullOrEmpty(binding.Host) && binding.IP != "*"; }); + + // update binding only for "shared" ip addresses + // add new host headers + string ipAddr = "*"; + if (ip != null) + ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; + + // fill bindings + if (rebuild) + FillWebServerBindings(bindings, dnsRecords, "", domain.DomainName, "", ignoreGlobalDNSRecords); + else + FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); + + //for logging purposes + foreach (ServerBinding b in bindings) { - // get existing web site bindings - WebServer web = new WebServer(); - ServiceProviderProxy.Init(web, siteItem.ServiceId); - - List bindings = new List(); - bindings.AddRange(web.GetSiteBindings(siteItem.SiteId)); - - // check if web site has dedicated IP assigned - 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; - - // fill bindings - FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName); - - foreach (ServerBinding b in bindings) - { - string header = string.Format("{0} {1} {2}", b.Host, b.IP, b.Port); - TaskManager.WriteParameter("Add Binding", b.Host); - } - - // update bindings - web.UpdateSiteBindings(siteItem.SiteId, bindings.ToArray()); - } + 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 - domain.WebSiteId = siteItemId; - //ServerController.UpdateDomain(domain); - if (!String.IsNullOrEmpty(hostName)) - domain.DomainName = hostName + "." + domain.DomainName; - else - domain.DomainName = domain.DomainName; - domain.IsDomainPointer = true; - int domainID = ServerController.AddDomain(domain); - - DomainInfo domainTmp = ServerController.GetDomain(domainID); - if (domainTmp != null) + if (!rebuild) { - domainTmp.WebSiteId = siteItemId; - domainTmp.ZoneItemId = domain.ZoneItemId; - ServerController.UpdateDomain(domainTmp); + domain.WebSiteId = siteItemId; + domain.IsDomainPointer = true; + 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) + { + domainTmp.WebSiteId = siteItemId; + domainTmp.ZoneItemId = domain.ZoneItemId; + ServerController.UpdateDomain(domainTmp); + } + } } - return 0; } catch (Exception ex) @@ -874,10 +1018,10 @@ namespace WebsitePanel.EnterpriseServer public static int DeleteWebSitePointer(int siteItemId, int domainId) { - return DeleteWebSitePointer(siteItemId, domainId, true); + return DeleteWebSitePointer(siteItemId, domainId, true, true, true); } - public static int DeleteWebSitePointer(int siteItemId, int domainId, bool updateWebSite) + public static int DeleteWebSitePointer(int siteItemId, int domainId, bool updateWebSite, bool ignoreGlobalDNSRecords, bool deleteDomainsRecord) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); @@ -906,16 +1050,36 @@ namespace WebsitePanel.EnterpriseServer TaskManager.StartTask("WEB_SITE", "DELETE_POINTER", siteItem.Name); TaskManager.ItemId = siteItemId; TaskManager.WriteParameter("Domain pointer", domain.DomainName); + TaskManager.WriteParameter("updateWebSite", updateWebSite.ToString()); try { if (zone != null) { // change DNS zone + List tmpDnsRecords = new List(); + 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) + { + if ((r.RecordName == "[host_name]") | ((r.RecordName + (string.IsNullOrEmpty(r.RecordName) ? domain.ZoneName : "." + domain.ZoneName)) == domain.DomainName)) + tmpDnsRecords.Add(r); + } + } + else tmpDnsRecords = dnsRecords; + List resourceRecords = DnsServerController.BuildDnsResourceRecords( - dnsRecords, domain.DomainName, "", serviceIp); + tmpDnsRecords, domain.DomainName, "", serviceIp); try { @@ -929,43 +1093,41 @@ namespace WebsitePanel.EnterpriseServer } } + // get existing web site bindings + WebServer web = new WebServer(); + ServiceProviderProxy.Init(web, siteItem.ServiceId); + + List bindings = new List(); + bindings.AddRange(web.GetSiteBindings(siteItem.SiteId)); + + // check if web site has dedicated IP assigned + bool dedicatedIp = bindings.Exists(binding => { return String.IsNullOrEmpty(binding.Host) && binding.IP != "*"; }); + + // update binding only for "shared" ip addresses + + // 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 bndings + bindings.RemoveAll(b => { return headersToRemove.Contains(b.Host) && b.Port == "80"; } ); + + // update bindings if (updateWebSite) - { - // get existing web site bindings - WebServer web = new WebServer(); - ServiceProviderProxy.Init(web, siteItem.ServiceId); - - List bindings = new List(); - bindings.AddRange(web.GetSiteBindings(siteItem.SiteId)); - - // check if web site has dedicated IP assigned - 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, ""); - - // fill to remove list - List headersToRemove = new List(); - foreach (ServerBinding domainBinding in domainBindings) - headersToRemove.Add(domainBinding.Host); - - // remove bndings - bindings.RemoveAll(b => { return headersToRemove.Contains(b.Host) && b.Port == "80"; } ); - - // update bindings - web.UpdateSiteBindings(siteItem.SiteId, bindings.ToArray()); - } - } + web.UpdateSiteBindings(siteItem.SiteId, bindings.ToArray(), true); // update domain domain.WebSiteId = 0; - ServerController.UpdateDomain(domain); - ServerController.DeleteDomain(domain.DomainId); - + if (deleteDomainsRecord) + { + ServerController.UpdateDomain(domain); + ServerController.DeleteDomain(domain.DomainId); + } return 0; } catch (Exception ex) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 56350e5d..a99cd490 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -1,56 +1,56 @@ - + -

+
- + - + - + - + - + - + - + - + - - - + + + - + - + - + - - + + - + - + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj index ac8ea558..52285130 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj @@ -19,11 +19,6 @@ v4.0 - false - - - - true @@ -415,7 +410,6 @@ - diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs index add15c94..fc9f3076 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs @@ -28,7 +28,6 @@ using System; using System.Collections; -using System.IO; namespace WebsitePanel.Providers.OS { @@ -82,8 +81,5 @@ namespace WebsitePanel.Providers.OS // Synchronizing FolderGraph GetFolderGraph(string path); void ExecuteSyncActions(FileSyncAction[] actions); - void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword); - void DeleteDirectoryRecursive(string rootPath); - } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index 137151d2..b8623bcf 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -80,6 +80,7 @@ + @@ -92,11 +93,6 @@ - - True - True - Settings.settings - @@ -317,10 +313,6 @@ - - SettingsSingleFileGenerator - Settings.Designer.cs - diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs index 1d37b8b3..f251bd66 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs @@ -209,17 +209,6 @@ namespace WebsitePanel.Providers.OS SecurityUtils.GrantGroupNtfsPermissions(path, users, resetChildPermissions, ServerSettings, usersOU, null); } - - public virtual void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) - { - FileUtils.SetQuotaLimitOnFolder(cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword); - } - - public virtual void DeleteDirectoryRecursive(string rootPath) - { - FileUtils.DeleteDirectoryRecursive(rootPath); - } - #endregion #region ODBC DSNs diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs index 34be86c2..f40b6d59 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs @@ -61,10 +61,6 @@ namespace WebsitePanel.Providers.OS { private System.Threading.SendOrPostCallback CreatePackageFolderOperationCompleted; private System.Threading.SendOrPostCallback FileExistsOperationCompleted; - - private System.Threading.SendOrPostCallback SetQuotaLimitOnFolderOperationCompleted; - - private System.Threading.SendOrPostCallback DeleteDirectoryRecursiveOperationCompleted; private System.Threading.SendOrPostCallback DirectoryExistsOperationCompleted; @@ -135,8 +131,7 @@ namespace WebsitePanel.Providers.OS { private System.Threading.SendOrPostCallback UpdateDSNOperationCompleted; private System.Threading.SendOrPostCallback DeleteDSNOperationCompleted; - - + /// public OperatingSystem() { this.Url = "http://localhost/Server/OperatingSystem.asmx"; @@ -147,12 +142,6 @@ namespace WebsitePanel.Providers.OS { /// public event FileExistsCompletedEventHandler FileExistsCompleted; - - /// - public event SetQuotaLimitOnFolderCompletedEventHandler SetQuotaLimitOnFolderCompleted; - - /// - public event DeleteDirectoryRecursiveCompletedEventHandler DeleteDirectoryRecursiveCompleted; /// public event DirectoryExistsCompletedEventHandler DirectoryExistsCompleted; @@ -342,107 +331,6 @@ namespace WebsitePanel.Providers.OS { this.FileExistsCompleted(this, new FileExistsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetQuotaLimitOnFolder", 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 SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) - { - object[] results = this.Invoke("SetQuotaLimitOnFolder", new object[] { - cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword}); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginSetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("SetQuotaLimitOnFolder", new object[] { - cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword}, callback, asyncState); - } - - /// - public bool EndSetQuotaLimitOnFolder(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - public void SetQuotaLimitOnFolderAsync(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) - { - this.SetQuotaLimitOnFolderAsync(cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword, null); - } - - /// - public void SetQuotaLimitOnFolderAsync(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword, object userState) - { - if ((this.SetQuotaLimitOnFolderOperationCompleted == null)) - { - this.SetQuotaLimitOnFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetQuotaLimitOnFolderOperationCompleted); - } - this.InvokeAsync("SetQuotaLimitOnFolder", new object[] { - cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword}, this.SetQuotaLimitOnFolderOperationCompleted, userState); - } - - private void OnSetQuotaLimitOnFolderOperationCompleted(object arg) - { - if ((this.SetQuotaLimitOnFolderCompleted != null)) - { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.SetQuotaLimitOnFolderCompleted(this, new SetQuotaLimitOnFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - - /// - [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteDirectoryRecursive", 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 DeleteDirectoryRecursive(string rootPath) - { - object[] results = this.Invoke("DeleteDirectoryRecursive", new object[] { - rootPath }); - return ((bool)(results[0])); - } - - /// - public System.IAsyncResult BeginDeleteDirectoryRecursive(string rootPath, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("DeleteDirectoryRecursive", new object[] { - rootPath}, callback, asyncState); - } - - /// - public bool EndDeleteDirectoryRecursive(System.IAsyncResult asyncResult) - { - object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); - } - - /// - public void DeleteDirectoryRecursiveAsync(string rootPath) - { - this.DeleteDirectoryRecursiveAsync(rootPath, null); - } - - /// - public void DeleteDirectoryRecursiveAsync(string rootPath, object userState) - { - if ((this.DeleteDirectoryRecursiveOperationCompleted == null)) - { - this.DeleteDirectoryRecursiveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteDirectoryRecursiveOperationCompleted); - } - this.InvokeAsync("DeleteDirectoryRecursive", new object[] { - rootPath}, this.DeleteDirectoryRecursiveOperationCompleted, userState); - } - - private void OnDeleteDirectoryRecursiveOperationCompleted(object arg) - { - if ((this.DeleteDirectoryRecursiveCompleted != null)) - { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.DeleteDirectoryRecursiveCompleted(this, new DeleteDirectoryRecursiveCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); - } - } - /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] @@ -2011,67 +1899,6 @@ namespace WebsitePanel.Providers.OS { } } } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] - public delegate void SetQuotaLimitOnFolderCompletedEventHandler(object sender, SetQuotaLimitOnFolderCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class SetQuotaLimitOnFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - - private object[] results; - - internal SetQuotaLimitOnFolderCompletedEventArgs(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.42")] - public delegate void DeleteDirectoryRecursiveCompletedEventHandler(object sender, DeleteDirectoryRecursiveCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class DeleteDirectoryRecursiveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - - private object[] results; - - internal DeleteDirectoryRecursiveCompletedEventArgs(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.42")] diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs b/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs index 06433897..f30354a5 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Utils/FileUtils.cs @@ -37,7 +37,6 @@ using System.Collections.Generic; using System.Reflection; using Ionic.Zip; using WebsitePanel.Providers.OS; -using System.Management; namespace WebsitePanel.Providers.Utils { @@ -845,126 +844,6 @@ namespace WebsitePanel.Providers.Utils conn, null); cat = null; } - - public static void DeleteDirectoryRecursive(string rootPath) - { - // This code is done this way to force folder deletion - // even if the folder was opened - - DirectoryInfo treeRoot = new DirectoryInfo(rootPath); - if (treeRoot.Exists) - { - - DirectoryInfo[] dirs = treeRoot.GetDirectories(); - while (dirs.Length > 0) - { - foreach (DirectoryInfo dir in dirs) - DeleteDirectoryRecursive(dir.FullName); - - dirs = treeRoot.GetDirectories(); - } - - // DELETE THE FILES UNDER THE CURRENT ROOT - string[] files = Directory.GetFiles(treeRoot.FullName); - foreach (string file in files) - { - File.SetAttributes(file, FileAttributes.Normal); - File.Delete(file); - } - - Directory.Delete(treeRoot.FullName, true); - } - - - } - - public static void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) - { - try - { - string[] splits = folderPath.Split('\\'); - if (splits.Length > 0) - { - // Creating the BAT file - FileStream fs = File.Create(cmdFilePath); - if (fs != null) - { - fs.Close(); - fs.Dispose(); - } - - StreamWriter swr = new StreamWriter(cmdFilePath); - - if (swr != null) - { - swr.WriteLine(@"cd c:\windows\system32"); - - string[] shareDrive = { }; - string sharePath = String.Empty; - - if (splits.Length > 4) - { - // Check the share name if it's not an empty string - if (splits[3].Length > 0) - shareDrive = splits[3].Split('_'); - - // Form the share physicalPath - if (shareDrive.Length == 2) - sharePath = shareDrive[1] + @":\" + splits[3]; - - if (splits.Length == 7 && !quotaLimit.Equals(String.Empty)) - { - splits[6] = "wwwroot"; - - switch (mode) - { - // Set - case 0: swr.WriteLine(@"dirquota quota add /path:" + sharePath + @"\" + splits[4] + @"\" + splits[5] + @"\" + splits[6] + @" /limit:" + quotaLimit + @" /remote:" + splits[2]); - break; - - // Modify - case 1: swr.WriteLine(@"dirquota quota modify /path:" + sharePath + @"\" + splits[4] + @"\" + splits[5] + @"\" + splits[6] + @" /limit:" + quotaLimit + @" /remote:" + splits[2]); - break; - } - } - - - } - swr.Flush(); - swr.Close(); - swr.Dispose(); - } - - ConnectionOptions connOptions = new ConnectionOptions(); - - if (wmiUserName.Length > 0) - { - connOptions.Username = wmiUserName; - connOptions.Password = wmiPassword; - } - - connOptions.Impersonation = ImpersonationLevel.Impersonate; - - connOptions.EnablePrivileges = true; - - ManagementScope manScope = - new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", virtualFileClusterName), connOptions); - manScope.Connect(); - - ObjectGetOptions objectGetOptions = new ObjectGetOptions(); - ManagementPath managementPath = new ManagementPath("Win32_Process"); - ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions); - - ManagementBaseObject inParams = processClass.GetMethodParameters("Create"); - inParams["CommandLine"] = cmdFilePath; - ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null); - - } - } - catch - { } - } - #region Advanced Delete /// /// Deletes the specified file. diff --git a/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs index d226536f..e258900a 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs @@ -533,39 +533,6 @@ namespace WebsitePanel.Server throw; } } - - - [WebMethod, SoapHeader("settings")] - public void SetQuotaLimitOnFolder(string cmdFilePath, string virtualFileClusterName, string folderPath, string quotaLimit, int mode, string wmiUserName, string wmiPassword) - { - try - { - Log.WriteStart("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName); - OsProvider.SetQuotaLimitOnFolder(cmdFilePath, virtualFileClusterName, folderPath, quotaLimit, mode, wmiUserName, wmiPassword); - Log.WriteEnd("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName); - } - catch (Exception ex) - { - Log.WriteError(String.Format("'{0}' SetQuotaLimitOnFolder", ProviderSettings.ProviderName), ex); - throw; - } - } - - [WebMethod, SoapHeader("settings")] - public void DeleteDirectoryRecursive(string rootPath) - { - try - { - Log.WriteStart("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName); - OsProvider.DeleteDirectoryRecursive(rootPath); - Log.WriteEnd("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName); - } - catch (Exception ex) - { - Log.WriteError(String.Format("'{0}' DeleteDirectoryRecursive", ProviderSettings.ProviderName), ex); - throw; - } - } #endregion #region Synchronizing diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Web.config b/WebsitePanel/Sources/WebsitePanel.Server/Web.config index f4c59fb4..48568b3a 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.Server/Web.config @@ -44,7 +44,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj index 5c4731db..890ebc21 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj @@ -20,10 +20,6 @@ v3.5 false - - - - true @@ -235,7 +231,6 @@ - diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj index e852620d..c93b1a73 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/WebsitePanel.WebPortal.csproj @@ -241,7 +241,6 @@ - From af1a156b18247aff8c090303ce3e566dbaa07aa7 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 18 Sep 2012 22:35:21 -0400 Subject: [PATCH 021/379] Added tag build-2.0.0.41 for changeset 93d247d79145 From e055d56d5f894f64dc4762867fb3114eac909707 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 20 Sep 2012 07:29:29 +0400 Subject: [PATCH 022/379] Fixed: Old mailbox plan size taken in considearion when setting new mailbox plan --- .../ExchangeServer/ExchangeServerController.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 9fe58540..d2b3da0e 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -2512,10 +2512,22 @@ namespace WebsitePanel.EnterpriseServer } ExchangeMailboxPlan plan = GetExchangeMailboxPlan(itemId, mailboxPlanId); + if (maxDiskSpace != -1) { - if ((quotaUsed + plan.MailboxSizeMB) > (maxDiskSpace)) - 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 From 3b0b6601751553dedd7fc49b49afa0c4152e806b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 19 Sep 2012 23:45:18 -0400 Subject: [PATCH 023/379] Merge --- .../WebsitePanel.Installer/Updater.exe | Bin 198144 -> 198144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index 08fe7cdcf3f29b3b4dc99f7ca361c466c00e0ae7..c3d6446396c7eebf31d450780eacc4f943ea5666 100644 GIT binary patch delta 44 zcmZqZ;c4jMnb5(+@wBn4wTp3U7t^5vf#)&tdP>uyJ?1rpxh?-KJK9HD!BDA=8p60Fs6g AvH$=8 From 3d32dada6b184a84ccfe3a070d59c0eed096d8b2 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 19 Sep 2012 23:57:16 -0400 Subject: [PATCH 024/379] Added tag build-2.0.0.42 for changeset 148f3d1ddc1c From c0276a73695d30c579f05158538af7796304faa3 Mon Sep 17 00:00:00 2001 From: feodor_fitsner Date: Thu, 20 Sep 2012 13:12:23 -0700 Subject: [PATCH 025/379] SessionValidationKey bug in update fixed --- .../Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs index 9db3a3c7..2542406b 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs @@ -346,7 +346,7 @@ namespace WebsitePanel.Setup if (appSettings != null) { var sessionKey = doc.CreateElement("add"); - sessionKey.SetAttribute("name", "SessionValidationKey"); + sessionKey.SetAttribute("key", "SessionValidationKey"); sessionKey.SetAttribute("value", StringUtils.GenerateRandomString(16)); appSettings.AppendChild(sessionKey); } From 073028f55eec94e4f15ef08a9e3165d0ccc0d4d1 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 20 Sep 2012 16:39:07 -0400 Subject: [PATCH 026/379] Added tag build-2.0.0.43 for changeset 51656fb827dc From 7b5c1e07cc9653009d26a201cb9ca9747d693bff Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 23 Sep 2012 16:03:21 +0400 Subject: [PATCH 027/379] merge commit --- WebsitePanel/Sources/WebsitePanel.EnterpriseServer.sln | 1 - .../DesktopModules/WebsitePanel/Login.ascx | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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.WebPortal/DesktopModules/WebsitePanel/Login.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Login.ascx index b964b27e..fa7f338c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Login.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Login.ascx @@ -45,6 +45,14 @@ + + + + + Click here to access your WebMail + + +
\ No newline at end of file From ace37c29f0617340541e7da2cc100d3d6e5fc232 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 23 Sep 2012 16:07:02 +0400 Subject: [PATCH 028/379] Correction on login.ascx wrongly checked in --- .../DesktopModules/WebsitePanel/Login.ascx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Login.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Login.ascx index fa7f338c..b964b27e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Login.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Login.ascx @@ -45,14 +45,6 @@ - - - - - Click here to access your WebMail - - -
\ No newline at end of file From ce760b2cb3594703e794d55fe1eaacafdf35c8b2 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 23 Sep 2012 18:25:00 +0400 Subject: [PATCH 029/379] Fixed domain pointers are not removed from meta data when detaching a website. --- WebsitePanel/Database/update_db.sql | 77 ++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 08746cc4..cd99bc7a 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5416,4 +5416,79 @@ exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @Fil RETURN -GO \ No newline at end of file +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 + + + + + + + + + + + + + + + + + From 65e2705ec578a1449750ea5a1562b3acf3b44ce7 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 12:07:01 -0400 Subject: [PATCH 030/379] Change EnterpriseServer and Server Components to display File Version instead of Informational Version to help support identify WSP Version. --- .../Sources/WebsitePanel.EnterpriseServer/Default.aspx.cs | 4 ++-- WebsitePanel/Sources/WebsitePanel.Server/Default.aspx.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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.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"; From 6acad21ae94cb79b71fbcda7204bf7e2c7369174 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 12:24:45 -0400 Subject: [PATCH 031/379] Added tag build-2.0.0.44 for changeset 1d4ca367f33e From dc4e89f98419abdccf64b729dd6f2123c635be19 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 12:28:09 -0400 Subject: [PATCH 032/379] Added tag build-2.0.0.45 for changeset a3e25f3056a9 From 147e8d764e8e94530414182ccf91d90d75d00b1d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 12:31:42 -0400 Subject: [PATCH 033/379] Added tag build-2.0.0.46 for changeset 435796d45d89 From 5d939b614d8e3bb511c6d74705b166d2b38b4c3f Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 20:29:40 -0400 Subject: [PATCH 034/379] Change Server Editor to Display Server File Version instead of Informational Version --- .../Sources/WebsitePanel.Server/Code/AutoDiscoveryHelper.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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); } From 5ab6251ab6585046de8ca46a395f6fd1743bc5d2 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 20:36:48 -0400 Subject: [PATCH 035/379] Update EnterpriseServer and Server Images with new Logo --- .../Images/logo.png | Bin 4654 -> 4712 bytes .../WebsitePanel.Server/Images/logo.png | Bin 4654 -> 4712 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png index 45f7ad782c4ab5fc27f4345807b6105fc87ffc45..35a64dd88f2c812d001c313e995f5cac7c8d1de4 100644 GIT binary patch literal 4712 zcmd^DXH-+$x${yzq#lR_)U?^KShlUH(0d5F~!aQBO;PMm{lw1g7 zGn|=@HqZ{`A`Jb75%zFFli3s$^7lN@P&+3$j>8u2fIxz{hz%`V90(YQ>%OFps16zo ze}qu?!oZEZbdBx2oa|&_T=x_>jpQbGU;prjN~Oq%1b z#zl^Xf!PBMA*z4HBF{ivk8n6NP(;Mt-CfvSTo{FM5CO=_%Kp+26B8mMgs`4S9MnSy ziRJ#S0D)ueFbFgbfkJZpQiR%~+;AW+a;E>f-V@8jCZ8|2yCRQy6RPiH3_9!m%hfj2*df_T0Zhp@Cow9Ew9>j8Q1(->0bm z2!%soAED43U?VAxyY~@D7|I>X_a|OQ2dII>;-E-7xCR8oMOF|-AYedcWw5LYL|jTm z8LSEbr~s73AhN2;(h{Pw5LJK#Sn4+yg0gdSfg^Fhxv+n8rT>xp%L*=Na%2b`gLn*w zsbWwr9Di;Zi1_DRB>qwFFD~q#bCLW*(mXcI_Gj z0#R32fBg8dqoZSBVBp1z7wfyfsj8|fC@7eim=qKgAdyHdEiErEuei9l%aEJ>gw|I^J{Bs-??+g+1Xh}Mn+0X%FN76*DIfFd?qF)3F(XTJ3Bjj2Zz(k#N6CmYinx|GR-BX1`Gy|j*d=FP9hKpK|w)9Ma9O(Mko~8 z-QBIMtbBZYtgo-XwY7D0bYyOBesXfs($WHl!-a%|3=Iu!Y;5-T_rt@(H#Rof+uQf{ z_TImLZ)C>E?oayQ5si~>4v9Z3szLk}gii!#%kvKj+J~T8mGcyw(AHTS` zSY2IxaB#4>xoKr(wY0QUTU#3y6;)VRI59E7$H!M+Uq3fD_x0=7=;&yBdwV<{pP!%q z>C>l>kdU>tH6I_Jo}Ql7)l~-vhwtCNcXoEdV6eo*#EguL)YMc@Pfu4@S3f^L3k!?g z-QDu?^7Qm{0|SGEgoKool*7Zrq@<+n?d{Ui(&6FZ_4RcUiDYMIx3I9#)YMd0S65S0 z)790LmzVeI)vL(J$dZzhfhfqKM7cbkB87Y?+u}ZyTIN$JTgc_r7Tz$$B^C6kUx=sE0*V z&8+M!t?w+ZlN8bE6HB{44v)Wm`zCImDB+N@zP-P(bMU%-);Fu8q-#L|mGNzH!#Sq< z^z_uIgE&G#afSkCsB1)?{x>%YqXVkj6cp5L8W1I8kBRkUcS~b6ws*Igu0j3r96SQT zol2H;m-^Mr#4f%^(rqgG4`1U^D!wZ4xD49X_Q=^L95lkSkBk5S46-$Z>xb5w4lIc- zJ4d}ePG7mxznqjePv1MTpQ<9hv`(r85nKd7mvEGmiqd_w|5T=S>KFMOVJPkI$g_78~qg1w`vHB zDnU72dFu}DAlxXuq>8B;#Zj@SO8O<56wkQaQ}1c_=LY9bXAT@W8O!wO1=dY|L>h-E zBwu!-?LJ)9dj|LXe&4a{4`qz;Jkj#C)5nz|>9tqh0)a``0z~U6z0VE7J6TU5VJB|! zySuh;zU5!9zVd>H&EcAQKYJm{QQ$V8D$SJegU=oZZq1YBclyj64SM6LShoAAsbb#- zy=I(L7U66=OF*Kn>q3q+%dLKDu^+;=W~{wwNB%f3l`!gchV4lKUJ$%{P?(%{u8V=# zTpW}`#oX;N*N|p~kw~+jkegJCq6)oM&z{+`r+E4kHTEU?slnS9(XNdnCR^Ucj@-Pi zOuIv*2V=^^Q$DRp{4{l|kJRixd}yp-I$g?1ZwvlFTov}h2Ladh=;e<)sGgm4Mx*+f z%Y5HgY6Mv2^Wo(K1JzAfdUha^=M4gyHEza^{Il??Hna6Jk(a?086wd`YT#;_Ms{Zq!Yr6m4 zo=K0l68_OVo3ii{!vIh1&3yiVZGlhu^?@0+x+2y&&i4CQ5l)us+olN#MVxI%+z$^r zzcieA2r=F5?p}6szI1vsvlr~yWV!M@Ta97h@&E*sNg84S`j{`gSI?I}M;D_S+p)c< z2WgKRTy%^pr#NsB z(MngnACi_vUD_v}l#;=e$#WC*F}rn7Gbte4IoraidXxvtfv(~&;7z>wj#qZT<3<`W zuX}KqxhYAHj=ri;5q7Z%a%8cfY?u?!%qX|At1h|%roTKO%*fk}V>Y+^G$?0d z53Ror)pJXCng|C!x=biwBLKF9;aY=CiA}1SYI7su0Ij-!7ceOYy_{IHHt)yyizCkk zp&xbT4_^5#vtE6^AT5FK;k5-v_(eilUhG#`_B?~bOJ}nS_^7k5R9LEpKFB`(zI`LG z>nYnGQNpFB0Mvfq`igE|R3<*|m^P^HPG$ho#tW4~py{i$+}kS=YFf;$I5UNt`|zH| zgOh@Qcv&M8s}u^fFt?b*$*;Sy7>PL3XM#XujffC=tV_=oj)lIv@yBAbYSewu{jC0R z3qPZfjwk1IIgOg}Gx5nCG^De(dGx*wGKt4;s0gw&%egceeD*7<+EkbcTvVeaxyJ_Iw%AdUy0$ZJGE4>B)I%DZ(<{BLA6ZH%!EF zGQeZa?TD=>szq-PB;{B*!P2qHUQb=oD`y&d8xuyYFRWd;{k8t&njFDo3WwA%*yhHJKbLmQ7h#@4QqVgk2Qx_Nf^CNbTgX| zP`QAk0mvO4Z_>0bM56pC_3LzoN*9_%HoEXW0#zr1dFk-((-$LiRzmN&HCT!gZ~gSh zDE66A)GRuiaerIZh&%X-ra(7J{v%zf0x9s7$t!I6M-4x)sNNb@2oAO+XWLe1~x!yW?!Q4XVQ}Z`mk@O83 zsCu$|^JL4ukbuWbsn$UDCLRFKF5BKwlP(ux3DB-8Dj(&0#Ex&HD4(!sZ+w6LYsZG~ zTkv%m%QaF-a1wFq;`&*SUA}vS48@*n7;aOxQCj_0@iBk1L)!Sf>-h)7}W$Q{lgcdp^q|%BdT*F`fWI($>ZYyd$R~bUWCm=<*gf z^B)E^DoG9|eO7k&^)#Z?^EDuP z4?3sLO3?QVQ<)EaW8=$2Kghj3MITju<4~PF=0R@0o(!eVH_5!>r6UzRgNP8dg?NVd z?U&DUtK{gP$j=5b9$)Fze`OPPdmYKYeUvQhx|R{AjX!A8R#A&{vX3oQT0UIkL*|3} z_hKltJu~}WADv`bL#JNQlWtF8=XkveM(MdO3K1`uP<}!B<8MDs8n_$J6?O5;RU(*`Fanx60YeTIdV-lkfF3{{}jY6!Rg9t3)ypsEkXBjFoADjDG!bkVQ>r$R`XKDo1Yzo-8iA!Ye z$%Zk{5G)Eo+=nxwl!dob&9BAPw%zc0bz!1Dc7~o+I;cJtQ5ZbBR=LkdAVddou$kt*g!A*l zMYKL`t8;6$zkK`A#HMl1Ex{{E&m*R5I6k1|xiM~Op*rD8MSxVLnZod*X7#hWX&N8l zhIrwP;4?|XBEY7IcISD^+^+BR0W|!;>JUZb{`ZeNJob(yBUh9pkMqTclY>t{Z_DDs zESxyOEcFdSUCF6kDKD)?zcnmt?|7!1raf%bOIHX(TplVXcA<>mE<+XrkjTMAi!aU1 zTlF+tY12uycqjK9=lg>oaaOuPN6DtrH(cf~DneZvAN#e}*YCK;@{BjKhcn0XYSbj^ z=Fvpv%BoU3B}Cs=S*|P!-{XyabG^&9Tc-AE6tL;*>>jOyxiQlJWgNv%60;ih>!{T~ z)SlTskQ=;}5*+$ezSZ>ZgJQ~&vazMG<6fOtLy8p(*GoV*ynOMy47EgtCso#abimqk zSlL&SocNA{Q|7zPrP5TK)65@F3&(Cmds{J`7M*RJ#kI`H8a*=09-P4XcGAlt60^Z| zpgyX)6}aXH_S6B{axcd8N+d&WEfug+u7h#6vNe9mn5V^KOy`4{!ZjO;7*@4D-f)(< QU;lnIRCFOF$~FQ20|W?ITL1t6 literal 4654 zcmZvgbx>PDyT&Ol1%kU3CzN8PIK_(;DMf-5FHoG~ZUqViT1apT6nBcd7Iz62Xebb@ zxO;BCx%2&X@67J(?mK7C?E5}Dzh}<*s-vY!Oh`|Nfq_A+_D1O)ddx!iSNOOX7*7&x zC@#?p0=GAy&lng2?EmRcd<*5gF)+y1)Rg4k`(_=iVnHegYw?aJ#(y_D!_iI4!0A5& zx?Kizb(UuTINFy<-eKfW8_70fTe7cfKcB(wicp6JwTEM)8jKaKD0Zn4j&TU}Kqn5xeJ`lS!sjOr}iuEv)dMH-1hXSP9XRKte=E`RfWyTsvNZMQ7gZ4zh%3 zYCLavzqhk9RCas`cYTHX_hvgsJMMX-k+Dk)a^~^wC}%6vwbS!#{1u9~E-#u{a$NFX z#f`3f*ZrwR>;38IXXUwq-@hrevskD+7cHZa;XgC!a)K^F+gv{Pcll?Na$SjskcdWf zDNr|=a}j&f`DN3yJMKqw$wOsrw|nKqbrX_6V!>_Lg1hst7jK<8;gH1mBUQBF1l zwO3xP^{=8%DNc_l!>%j%X~eVm#`G;ni0pk4&VUA> z1BKVdvU1Z#bamIGr0SQBCx@zw)4%r0%8NcvNN{%z2ht7I&uV2dqidoi2jJW9ygPhO z6pu&&RC>(a9WCa*b0-`)75 z6>qpRINfT1&Q9|R5fYOB9j$v#;OY5(-K3cR#GSVAFo(krzb%I`>H@c|bUU%EqnbXF z%;NMkrnLbE*D<0lBFbd+QkDM=QA3+o5|V} zu4%zziA2xqbtE^xDbkyBRAP~cv!cb-ySacGen(ZbzO*~V6=$mHOvxDE(AiPv zoj}*+eYVe^;XYR@^WYmKgDoyZXjW4MIl?P5Wjj^#uewW?NLd0r0Q~~_{P(HI*p#o9 zPl}oM(tzVM&Qs~*Zt&F(g}sr8y-~vt53({#q@7IX-k#d|g;sO5vN;p8 zd9&Db{%|fzdx+jnH*iwsYLh^=W>!lIDJ~GMQ?s_}wP42Z>w`$lzbLwoY4zJb0=(PE zfYt3DB!#kQessZn$r4*u@?TpuE`1yYMSF~|CIiBPPWoxUnvSjLEM~+v;%A3Y8G@0{ z%!O}m(Wk!eq!ko?YN2+5MiUZ&D=JCf?HV5IW{oay-@af>XfZR@( z=sC>Tfx>?yDYm3ZcN1Ry@s$V@ICxgfA@BXiZ@Z8^LHrr_6an&YG|PnUA2e0ciDZtu zvCf2fu=CFlfoE?YO>rADq-D_iXUu$7VZ46ym=u_C)CAm-^G444IcrmB3d&1fuSJ}F2AIWaTC+{7xv?HG(#d9X2(n5ut$K_;XP^>U z=(t=4%AAdf+%&A>#l>}_afc`+2eWUYuOBegHt!jtzamlgc1IRlN5NzAlz%V0I48Ju z*Qa5cg_adl;^a3)-Mr!lyT@OGZ1tg#1+*ARIkTUF5^wQ!ug#Ty1RaS2br7Qa(3kUeWK`FP9yc z7F=tGxj-gYi`I!1nmR7FUgV5jTh-VOuSDWbJA`x0V5~O>p*kbVH9xe8QZ)ZQXNxhR41pawN^TJr+`qb0#)!5DX=R`vN zSL2OkCG?fmC8~Nm7w$;Wu=c-8yHL1NqGOhm`hLx$IVRuIc23BTD3;*s`&Pv=Ja*Po z-6z-*rJ2H5QX@S1o2ImU_P{m6`_yVazEvpfO`vVJZG4_$ znQCxlq;v|TIm=jw>&-p7693-WA1H(i&CHwzUvqP3d(N0YlB6Q16iLVLrI(PqMVSKI zDEyjYOSii>+3cjtJ~7e{2~vk?b?xNQY~lnxyv13ydY0G%Cm>FiaHVJ9=U42QwH2b0 zqWtw4Me0!aModr`Mp?;Zxy$QI&_nWDF%We#hYfxLwO;6+tTG_TiD1#_lS==m#xC7w zL|O*kO{?A-O)DN6!Ltdo#IIJS95!nbo)KwU%>1qGBv1Z<2)bGY9|;G|Q4zO4T*A+a z5+X}vaHNc57P!Um)~fW1TRgtmA%`q6UiQ|V%DJzg5hy&qAjbL!m%iMZF6@cT4jYx^*!@ubE|DY0-!YWagOlz-5D{ zw)I!Eg(Df(7&8{YB`w8SF@VvOv}c{`3yVSG zQPv-V#gvIG|Eo+DTeOI{&qC3CD#@!A!*OknwJ^lf zSwG&3sX*j{TVt< zmtGZOYCAuHeEsZ-nE4b0*sP9^KD+}asEzX92G9Ur6l zy6I-MOoHvQ+*K|eInz{loe~fN$xIC&1>uHa#zWjH9ecYZ=Q-<(m3KfNqO1x2m7{zJkUW)ZM)iB4Yr5!=S@S|moix^q5$N8tA4Cm1P<9^xg zxEq*wuiaV8xjXEZxUr5ZLrG?0S|p7Q|3(GH;r%F~>0D{B!>Q!r(t_ zSou!h5xe}(@tp6|m-6ZI5~?bd>YoP9=%Df6Pw1e!CHRB#!GET;y_VcdW=%`WvHn!A zy}E(!vYqX^rG%8cffRn7fhG#70j=QhHJf@pcnJVSsbhJ9Tv3UF>c8_r@mf%=wL`r8 zTqtDHtWn_ChVJt8mpD-%wMC~Dp{VRw&e-*^tA(eO6f}6_V;vYSo`gLL4zL(u@Iu`9T^=&B1r%4`qo)z)A(`)iptGLy64KRbzRBKP$ zl^}+i%kX7Alro+{c5Eh zldz=4ScW|=@<7f7fpbW&{1p9(T&C`~sTZ)g?+5hJ&G#E!bYMRc9L5kRC;Oejiye!b zw7{xf_snO;95_n*#Op>F(C-UM6P54i9b`F`dAD^juAoWz?M>umJwgvU9tZInQmgJ^ z!U^wJ_TLkv9xgN30cy%XOor86xT4bOYL|ce6%lf44>1ZyS0p9t>Fn7*al^kt$kx=ZrBwD(JBk^B-i@t2Nd2UZx zA>fm>r;c4`0Qd6BBLZDUFgXK|CAp&w-&Q1_mPW8I&5Bn@B060Bm1-$jX9LuZ|E}DH zX2GH^DbEd`R!Ci_-*QZv_txcghyo2G6#wxh`?Tz@j7bP0KHgZF+sm6HtOz)SF>ufV ziGZtayln2iZQm9TV+c}U6`#ZX`c5fO^_ViY_CyOdT63HSdakXuOAMIQQP__eFu^J3 z=J2#s@NQR-R_`ImzyrEEVnrZgn?F1=Y76)6_OJBUE$|yDI)LQapvq0m{m49CmTc~6Q2J6oW4fNoX~%jj@bo7^ zJb|qUweJQePfa^pY^!jU+>!eP%PkG_5^S7xlM__ z-LKFR-c2eurKMLl zl#eR3g#$P#tAK)^@I-uPPvr1W8RrDULrl(^|1q0aliT~UU6Qa& z2)D@e2I`hDzBlm1Mo96ZQ8t%}m5QeE&f`Mb8`tlOc z)h~bOpsKJWTAjYI$3YL|3lw^6anY@xA*_KI}+L(9# zk;MZ)X52K;k&C>~;4U}t!V@}5B#|mS_X_120juaFfU2`!v_Sc8Qb$x&Mv_b__7p~c z5SD@7`E&VtKnSYRvb(Hh>5lVv>tjaGh#AkEnGtW(Ot$}vhX1<7t)}aLjpF|`l1DrN;Qp4E U7PdP22M~suvX)Ynf<^fM0Hz;FZ2$lO diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png b/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png index 45f7ad782c4ab5fc27f4345807b6105fc87ffc45..35a64dd88f2c812d001c313e995f5cac7c8d1de4 100644 GIT binary patch literal 4712 zcmd^DXH-+$x${yzq#lR_)U?^KShlUH(0d5F~!aQBO;PMm{lw1g7 zGn|=@HqZ{`A`Jb75%zFFli3s$^7lN@P&+3$j>8u2fIxz{hz%`V90(YQ>%OFps16zo ze}qu?!oZEZbdBx2oa|&_T=x_>jpQbGU;prjN~Oq%1b z#zl^Xf!PBMA*z4HBF{ivk8n6NP(;Mt-CfvSTo{FM5CO=_%Kp+26B8mMgs`4S9MnSy ziRJ#S0D)ueFbFgbfkJZpQiR%~+;AW+a;E>f-V@8jCZ8|2yCRQy6RPiH3_9!m%hfj2*df_T0Zhp@Cow9Ew9>j8Q1(->0bm z2!%soAED43U?VAxyY~@D7|I>X_a|OQ2dII>;-E-7xCR8oMOF|-AYedcWw5LYL|jTm z8LSEbr~s73AhN2;(h{Pw5LJK#Sn4+yg0gdSfg^Fhxv+n8rT>xp%L*=Na%2b`gLn*w zsbWwr9Di;Zi1_DRB>qwFFD~q#bCLW*(mXcI_Gj z0#R32fBg8dqoZSBVBp1z7wfyfsj8|fC@7eim=qKgAdyHdEiErEuei9l%aEJ>gw|I^J{Bs-??+g+1Xh}Mn+0X%FN76*DIfFd?qF)3F(XTJ3Bjj2Zz(k#N6CmYinx|GR-BX1`Gy|j*d=FP9hKpK|w)9Ma9O(Mko~8 z-QBIMtbBZYtgo-XwY7D0bYyOBesXfs($WHl!-a%|3=Iu!Y;5-T_rt@(H#Rof+uQf{ z_TImLZ)C>E?oayQ5si~>4v9Z3szLk}gii!#%kvKj+J~T8mGcyw(AHTS` zSY2IxaB#4>xoKr(wY0QUTU#3y6;)VRI59E7$H!M+Uq3fD_x0=7=;&yBdwV<{pP!%q z>C>l>kdU>tH6I_Jo}Ql7)l~-vhwtCNcXoEdV6eo*#EguL)YMc@Pfu4@S3f^L3k!?g z-QDu?^7Qm{0|SGEgoKool*7Zrq@<+n?d{Ui(&6FZ_4RcUiDYMIx3I9#)YMd0S65S0 z)790LmzVeI)vL(J$dZzhfhfqKM7cbkB87Y?+u}ZyTIN$JTgc_r7Tz$$B^C6kUx=sE0*V z&8+M!t?w+ZlN8bE6HB{44v)Wm`zCImDB+N@zP-P(bMU%-);Fu8q-#L|mGNzH!#Sq< z^z_uIgE&G#afSkCsB1)?{x>%YqXVkj6cp5L8W1I8kBRkUcS~b6ws*Igu0j3r96SQT zol2H;m-^Mr#4f%^(rqgG4`1U^D!wZ4xD49X_Q=^L95lkSkBk5S46-$Z>xb5w4lIc- zJ4d}ePG7mxznqjePv1MTpQ<9hv`(r85nKd7mvEGmiqd_w|5T=S>KFMOVJPkI$g_78~qg1w`vHB zDnU72dFu}DAlxXuq>8B;#Zj@SO8O<56wkQaQ}1c_=LY9bXAT@W8O!wO1=dY|L>h-E zBwu!-?LJ)9dj|LXe&4a{4`qz;Jkj#C)5nz|>9tqh0)a``0z~U6z0VE7J6TU5VJB|! zySuh;zU5!9zVd>H&EcAQKYJm{QQ$V8D$SJegU=oZZq1YBclyj64SM6LShoAAsbb#- zy=I(L7U66=OF*Kn>q3q+%dLKDu^+;=W~{wwNB%f3l`!gchV4lKUJ$%{P?(%{u8V=# zTpW}`#oX;N*N|p~kw~+jkegJCq6)oM&z{+`r+E4kHTEU?slnS9(XNdnCR^Ucj@-Pi zOuIv*2V=^^Q$DRp{4{l|kJRixd}yp-I$g?1ZwvlFTov}h2Ladh=;e<)sGgm4Mx*+f z%Y5HgY6Mv2^Wo(K1JzAfdUha^=M4gyHEza^{Il??Hna6Jk(a?086wd`YT#;_Ms{Zq!Yr6m4 zo=K0l68_OVo3ii{!vIh1&3yiVZGlhu^?@0+x+2y&&i4CQ5l)us+olN#MVxI%+z$^r zzcieA2r=F5?p}6szI1vsvlr~yWV!M@Ta97h@&E*sNg84S`j{`gSI?I}M;D_S+p)c< z2WgKRTy%^pr#NsB z(MngnACi_vUD_v}l#;=e$#WC*F}rn7Gbte4IoraidXxvtfv(~&;7z>wj#qZT<3<`W zuX}KqxhYAHj=ri;5q7Z%a%8cfY?u?!%qX|At1h|%roTKO%*fk}V>Y+^G$?0d z53Ror)pJXCng|C!x=biwBLKF9;aY=CiA}1SYI7su0Ij-!7ceOYy_{IHHt)yyizCkk zp&xbT4_^5#vtE6^AT5FK;k5-v_(eilUhG#`_B?~bOJ}nS_^7k5R9LEpKFB`(zI`LG z>nYnGQNpFB0Mvfq`igE|R3<*|m^P^HPG$ho#tW4~py{i$+}kS=YFf;$I5UNt`|zH| zgOh@Qcv&M8s}u^fFt?b*$*;Sy7>PL3XM#XujffC=tV_=oj)lIv@yBAbYSewu{jC0R z3qPZfjwk1IIgOg}Gx5nCG^De(dGx*wGKt4;s0gw&%egceeD*7<+EkbcTvVeaxyJ_Iw%AdUy0$ZJGE4>B)I%DZ(<{BLA6ZH%!EF zGQeZa?TD=>szq-PB;{B*!P2qHUQb=oD`y&d8xuyYFRWd;{k8t&njFDo3WwA%*yhHJKbLmQ7h#@4QqVgk2Qx_Nf^CNbTgX| zP`QAk0mvO4Z_>0bM56pC_3LzoN*9_%HoEXW0#zr1dFk-((-$LiRzmN&HCT!gZ~gSh zDE66A)GRuiaerIZh&%X-ra(7J{v%zf0x9s7$t!I6M-4x)sNNb@2oAO+XWLe1~x!yW?!Q4XVQ}Z`mk@O83 zsCu$|^JL4ukbuWbsn$UDCLRFKF5BKwlP(ux3DB-8Dj(&0#Ex&HD4(!sZ+w6LYsZG~ zTkv%m%QaF-a1wFq;`&*SUA}vS48@*n7;aOxQCj_0@iBk1L)!Sf>-h)7}W$Q{lgcdp^q|%BdT*F`fWI($>ZYyd$R~bUWCm=<*gf z^B)E^DoG9|eO7k&^)#Z?^EDuP z4?3sLO3?QVQ<)EaW8=$2Kghj3MITju<4~PF=0R@0o(!eVH_5!>r6UzRgNP8dg?NVd z?U&DUtK{gP$j=5b9$)Fze`OPPdmYKYeUvQhx|R{AjX!A8R#A&{vX3oQT0UIkL*|3} z_hKltJu~}WADv`bL#JNQlWtF8=XkveM(MdO3K1`uP<}!B<8MDs8n_$J6?O5;RU(*`Fanx60YeTIdV-lkfF3{{}jY6!Rg9t3)ypsEkXBjFoADjDG!bkVQ>r$R`XKDo1Yzo-8iA!Ye z$%Zk{5G)Eo+=nxwl!dob&9BAPw%zc0bz!1Dc7~o+I;cJtQ5ZbBR=LkdAVddou$kt*g!A*l zMYKL`t8;6$zkK`A#HMl1Ex{{E&m*R5I6k1|xiM~Op*rD8MSxVLnZod*X7#hWX&N8l zhIrwP;4?|XBEY7IcISD^+^+BR0W|!;>JUZb{`ZeNJob(yBUh9pkMqTclY>t{Z_DDs zESxyOEcFdSUCF6kDKD)?zcnmt?|7!1raf%bOIHX(TplVXcA<>mE<+XrkjTMAi!aU1 zTlF+tY12uycqjK9=lg>oaaOuPN6DtrH(cf~DneZvAN#e}*YCK;@{BjKhcn0XYSbj^ z=Fvpv%BoU3B}Cs=S*|P!-{XyabG^&9Tc-AE6tL;*>>jOyxiQlJWgNv%60;ih>!{T~ z)SlTskQ=;}5*+$ezSZ>ZgJQ~&vazMG<6fOtLy8p(*GoV*ynOMy47EgtCso#abimqk zSlL&SocNA{Q|7zPrP5TK)65@F3&(Cmds{J`7M*RJ#kI`H8a*=09-P4XcGAlt60^Z| zpgyX)6}aXH_S6B{axcd8N+d&WEfug+u7h#6vNe9mn5V^KOy`4{!ZjO;7*@4D-f)(< QU;lnIRCFOF$~FQ20|W?ITL1t6 literal 4654 zcmZvgbx>PDyT&Ol1%kU3CzN8PIK_(;DMf-5FHoG~ZUqViT1apT6nBcd7Iz62Xebb@ zxO;BCx%2&X@67J(?mK7C?E5}Dzh}<*s-vY!Oh`|Nfq_A+_D1O)ddx!iSNOOX7*7&x zC@#?p0=GAy&lng2?EmRcd<*5gF)+y1)Rg4k`(_=iVnHegYw?aJ#(y_D!_iI4!0A5& zx?Kizb(UuTINFy<-eKfW8_70fTe7cfKcB(wicp6JwTEM)8jKaKD0Zn4j&TU}Kqn5xeJ`lS!sjOr}iuEv)dMH-1hXSP9XRKte=E`RfWyTsvNZMQ7gZ4zh%3 zYCLavzqhk9RCas`cYTHX_hvgsJMMX-k+Dk)a^~^wC}%6vwbS!#{1u9~E-#u{a$NFX z#f`3f*ZrwR>;38IXXUwq-@hrevskD+7cHZa;XgC!a)K^F+gv{Pcll?Na$SjskcdWf zDNr|=a}j&f`DN3yJMKqw$wOsrw|nKqbrX_6V!>_Lg1hst7jK<8;gH1mBUQBF1l zwO3xP^{=8%DNc_l!>%j%X~eVm#`G;ni0pk4&VUA> z1BKVdvU1Z#bamIGr0SQBCx@zw)4%r0%8NcvNN{%z2ht7I&uV2dqidoi2jJW9ygPhO z6pu&&RC>(a9WCa*b0-`)75 z6>qpRINfT1&Q9|R5fYOB9j$v#;OY5(-K3cR#GSVAFo(krzb%I`>H@c|bUU%EqnbXF z%;NMkrnLbE*D<0lBFbd+QkDM=QA3+o5|V} zu4%zziA2xqbtE^xDbkyBRAP~cv!cb-ySacGen(ZbzO*~V6=$mHOvxDE(AiPv zoj}*+eYVe^;XYR@^WYmKgDoyZXjW4MIl?P5Wjj^#uewW?NLd0r0Q~~_{P(HI*p#o9 zPl}oM(tzVM&Qs~*Zt&F(g}sr8y-~vt53({#q@7IX-k#d|g;sO5vN;p8 zd9&Db{%|fzdx+jnH*iwsYLh^=W>!lIDJ~GMQ?s_}wP42Z>w`$lzbLwoY4zJb0=(PE zfYt3DB!#kQessZn$r4*u@?TpuE`1yYMSF~|CIiBPPWoxUnvSjLEM~+v;%A3Y8G@0{ z%!O}m(Wk!eq!ko?YN2+5MiUZ&D=JCf?HV5IW{oay-@af>XfZR@( z=sC>Tfx>?yDYm3ZcN1Ry@s$V@ICxgfA@BXiZ@Z8^LHrr_6an&YG|PnUA2e0ciDZtu zvCf2fu=CFlfoE?YO>rADq-D_iXUu$7VZ46ym=u_C)CAm-^G444IcrmB3d&1fuSJ}F2AIWaTC+{7xv?HG(#d9X2(n5ut$K_;XP^>U z=(t=4%AAdf+%&A>#l>}_afc`+2eWUYuOBegHt!jtzamlgc1IRlN5NzAlz%V0I48Ju z*Qa5cg_adl;^a3)-Mr!lyT@OGZ1tg#1+*ARIkTUF5^wQ!ug#Ty1RaS2br7Qa(3kUeWK`FP9yc z7F=tGxj-gYi`I!1nmR7FUgV5jTh-VOuSDWbJA`x0V5~O>p*kbVH9xe8QZ)ZQXNxhR41pawN^TJr+`qb0#)!5DX=R`vN zSL2OkCG?fmC8~Nm7w$;Wu=c-8yHL1NqGOhm`hLx$IVRuIc23BTD3;*s`&Pv=Ja*Po z-6z-*rJ2H5QX@S1o2ImU_P{m6`_yVazEvpfO`vVJZG4_$ znQCxlq;v|TIm=jw>&-p7693-WA1H(i&CHwzUvqP3d(N0YlB6Q16iLVLrI(PqMVSKI zDEyjYOSii>+3cjtJ~7e{2~vk?b?xNQY~lnxyv13ydY0G%Cm>FiaHVJ9=U42QwH2b0 zqWtw4Me0!aModr`Mp?;Zxy$QI&_nWDF%We#hYfxLwO;6+tTG_TiD1#_lS==m#xC7w zL|O*kO{?A-O)DN6!Ltdo#IIJS95!nbo)KwU%>1qGBv1Z<2)bGY9|;G|Q4zO4T*A+a z5+X}vaHNc57P!Um)~fW1TRgtmA%`q6UiQ|V%DJzg5hy&qAjbL!m%iMZF6@cT4jYx^*!@ubE|DY0-!YWagOlz-5D{ zw)I!Eg(Df(7&8{YB`w8SF@VvOv}c{`3yVSG zQPv-V#gvIG|Eo+DTeOI{&qC3CD#@!A!*OknwJ^lf zSwG&3sX*j{TVt< zmtGZOYCAuHeEsZ-nE4b0*sP9^KD+}asEzX92G9Ur6l zy6I-MOoHvQ+*K|eInz{loe~fN$xIC&1>uHa#zWjH9ecYZ=Q-<(m3KfNqO1x2m7{zJkUW)ZM)iB4Yr5!=S@S|moix^q5$N8tA4Cm1P<9^xg zxEq*wuiaV8xjXEZxUr5ZLrG?0S|p7Q|3(GH;r%F~>0D{B!>Q!r(t_ zSou!h5xe}(@tp6|m-6ZI5~?bd>YoP9=%Df6Pw1e!CHRB#!GET;y_VcdW=%`WvHn!A zy}E(!vYqX^rG%8cffRn7fhG#70j=QhHJf@pcnJVSsbhJ9Tv3UF>c8_r@mf%=wL`r8 zTqtDHtWn_ChVJt8mpD-%wMC~Dp{VRw&e-*^tA(eO6f}6_V;vYSo`gLL4zL(u@Iu`9T^=&B1r%4`qo)z)A(`)iptGLy64KRbzRBKP$ zl^}+i%kX7Alro+{c5Eh zldz=4ScW|=@<7f7fpbW&{1p9(T&C`~sTZ)g?+5hJ&G#E!bYMRc9L5kRC;Oejiye!b zw7{xf_snO;95_n*#Op>F(C-UM6P54i9b`F`dAD^juAoWz?M>umJwgvU9tZInQmgJ^ z!U^wJ_TLkv9xgN30cy%XOor86xT4bOYL|ce6%lf44>1ZyS0p9t>Fn7*al^kt$kx=ZrBwD(JBk^B-i@t2Nd2UZx zA>fm>r;c4`0Qd6BBLZDUFgXK|CAp&w-&Q1_mPW8I&5Bn@B060Bm1-$jX9LuZ|E}DH zX2GH^DbEd`R!Ci_-*QZv_txcghyo2G6#wxh`?Tz@j7bP0KHgZF+sm6HtOz)SF>ufV ziGZtayln2iZQm9TV+c}U6`#ZX`c5fO^_ViY_CyOdT63HSdakXuOAMIQQP__eFu^J3 z=J2#s@NQR-R_`ImzyrEEVnrZgn?F1=Y76)6_OJBUE$|yDI)LQapvq0m{m49CmTc~6Q2J6oW4fNoX~%jj@bo7^ zJb|qUweJQePfa^pY^!jU+>!eP%PkG_5^S7xlM__ z-LKFR-c2eurKMLl zl#eR3g#$P#tAK)^@I-uPPvr1W8RrDULrl(^|1q0aliT~UU6Qa& z2)D@e2I`hDzBlm1Mo96ZQ8t%}m5QeE&f`Mb8`tlOc z)h~bOpsKJWTAjYI$3YL|3lw^6anY@xA*_KI}+L(9# zk;MZ)X52K;k&C>~;4U}t!V@}5B#|mS_X_120juaFfU2`!v_Sc8Qb$x&Mv_b__7p~c z5SD@7`E&VtKnSYRvb(Hh>5lVv>tjaGh#AkEnGtW(Ot$}vhX1<7t)}aLjpF|`l1DrN;Qp4E U7PdP22M~suvX)Ynf<^fM0Hz;FZ2$lO From a45319e95286d2c1848041284cd4a315ed39a50c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 20:45:20 -0400 Subject: [PATCH 036/379] Added tag build-2.0.0.48 for changeset 1157fb4c3a7f From ad9d6aafdab938f7869d9d8aad1c569a9cafea8b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 21:05:39 -0400 Subject: [PATCH 037/379] Change Logo on Portal Project --- .../App_Themes/Default/Images/logo.png | Bin 4654 -> 4712 bytes 1 file changed, 0 insertions(+), 0 deletions(-) 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 45f7ad782c4ab5fc27f4345807b6105fc87ffc45..35a64dd88f2c812d001c313e995f5cac7c8d1de4 100644 GIT binary patch literal 4712 zcmd^DXH-+$x${yzq#lR_)U?^KShlUH(0d5F~!aQBO;PMm{lw1g7 zGn|=@HqZ{`A`Jb75%zFFli3s$^7lN@P&+3$j>8u2fIxz{hz%`V90(YQ>%OFps16zo ze}qu?!oZEZbdBx2oa|&_T=x_>jpQbGU;prjN~Oq%1b z#zl^Xf!PBMA*z4HBF{ivk8n6NP(;Mt-CfvSTo{FM5CO=_%Kp+26B8mMgs`4S9MnSy ziRJ#S0D)ueFbFgbfkJZpQiR%~+;AW+a;E>f-V@8jCZ8|2yCRQy6RPiH3_9!m%hfj2*df_T0Zhp@Cow9Ew9>j8Q1(->0bm z2!%soAED43U?VAxyY~@D7|I>X_a|OQ2dII>;-E-7xCR8oMOF|-AYedcWw5LYL|jTm z8LSEbr~s73AhN2;(h{Pw5LJK#Sn4+yg0gdSfg^Fhxv+n8rT>xp%L*=Na%2b`gLn*w zsbWwr9Di;Zi1_DRB>qwFFD~q#bCLW*(mXcI_Gj z0#R32fBg8dqoZSBVBp1z7wfyfsj8|fC@7eim=qKgAdyHdEiErEuei9l%aEJ>gw|I^J{Bs-??+g+1Xh}Mn+0X%FN76*DIfFd?qF)3F(XTJ3Bjj2Zz(k#N6CmYinx|GR-BX1`Gy|j*d=FP9hKpK|w)9Ma9O(Mko~8 z-QBIMtbBZYtgo-XwY7D0bYyOBesXfs($WHl!-a%|3=Iu!Y;5-T_rt@(H#Rof+uQf{ z_TImLZ)C>E?oayQ5si~>4v9Z3szLk}gii!#%kvKj+J~T8mGcyw(AHTS` zSY2IxaB#4>xoKr(wY0QUTU#3y6;)VRI59E7$H!M+Uq3fD_x0=7=;&yBdwV<{pP!%q z>C>l>kdU>tH6I_Jo}Ql7)l~-vhwtCNcXoEdV6eo*#EguL)YMc@Pfu4@S3f^L3k!?g z-QDu?^7Qm{0|SGEgoKool*7Zrq@<+n?d{Ui(&6FZ_4RcUiDYMIx3I9#)YMd0S65S0 z)790LmzVeI)vL(J$dZzhfhfqKM7cbkB87Y?+u}ZyTIN$JTgc_r7Tz$$B^C6kUx=sE0*V z&8+M!t?w+ZlN8bE6HB{44v)Wm`zCImDB+N@zP-P(bMU%-);Fu8q-#L|mGNzH!#Sq< z^z_uIgE&G#afSkCsB1)?{x>%YqXVkj6cp5L8W1I8kBRkUcS~b6ws*Igu0j3r96SQT zol2H;m-^Mr#4f%^(rqgG4`1U^D!wZ4xD49X_Q=^L95lkSkBk5S46-$Z>xb5w4lIc- zJ4d}ePG7mxznqjePv1MTpQ<9hv`(r85nKd7mvEGmiqd_w|5T=S>KFMOVJPkI$g_78~qg1w`vHB zDnU72dFu}DAlxXuq>8B;#Zj@SO8O<56wkQaQ}1c_=LY9bXAT@W8O!wO1=dY|L>h-E zBwu!-?LJ)9dj|LXe&4a{4`qz;Jkj#C)5nz|>9tqh0)a``0z~U6z0VE7J6TU5VJB|! zySuh;zU5!9zVd>H&EcAQKYJm{QQ$V8D$SJegU=oZZq1YBclyj64SM6LShoAAsbb#- zy=I(L7U66=OF*Kn>q3q+%dLKDu^+;=W~{wwNB%f3l`!gchV4lKUJ$%{P?(%{u8V=# zTpW}`#oX;N*N|p~kw~+jkegJCq6)oM&z{+`r+E4kHTEU?slnS9(XNdnCR^Ucj@-Pi zOuIv*2V=^^Q$DRp{4{l|kJRixd}yp-I$g?1ZwvlFTov}h2Ladh=;e<)sGgm4Mx*+f z%Y5HgY6Mv2^Wo(K1JzAfdUha^=M4gyHEza^{Il??Hna6Jk(a?086wd`YT#;_Ms{Zq!Yr6m4 zo=K0l68_OVo3ii{!vIh1&3yiVZGlhu^?@0+x+2y&&i4CQ5l)us+olN#MVxI%+z$^r zzcieA2r=F5?p}6szI1vsvlr~yWV!M@Ta97h@&E*sNg84S`j{`gSI?I}M;D_S+p)c< z2WgKRTy%^pr#NsB z(MngnACi_vUD_v}l#;=e$#WC*F}rn7Gbte4IoraidXxvtfv(~&;7z>wj#qZT<3<`W zuX}KqxhYAHj=ri;5q7Z%a%8cfY?u?!%qX|At1h|%roTKO%*fk}V>Y+^G$?0d z53Ror)pJXCng|C!x=biwBLKF9;aY=CiA}1SYI7su0Ij-!7ceOYy_{IHHt)yyizCkk zp&xbT4_^5#vtE6^AT5FK;k5-v_(eilUhG#`_B?~bOJ}nS_^7k5R9LEpKFB`(zI`LG z>nYnGQNpFB0Mvfq`igE|R3<*|m^P^HPG$ho#tW4~py{i$+}kS=YFf;$I5UNt`|zH| zgOh@Qcv&M8s}u^fFt?b*$*;Sy7>PL3XM#XujffC=tV_=oj)lIv@yBAbYSewu{jC0R z3qPZfjwk1IIgOg}Gx5nCG^De(dGx*wGKt4;s0gw&%egceeD*7<+EkbcTvVeaxyJ_Iw%AdUy0$ZJGE4>B)I%DZ(<{BLA6ZH%!EF zGQeZa?TD=>szq-PB;{B*!P2qHUQb=oD`y&d8xuyYFRWd;{k8t&njFDo3WwA%*yhHJKbLmQ7h#@4QqVgk2Qx_Nf^CNbTgX| zP`QAk0mvO4Z_>0bM56pC_3LzoN*9_%HoEXW0#zr1dFk-((-$LiRzmN&HCT!gZ~gSh zDE66A)GRuiaerIZh&%X-ra(7J{v%zf0x9s7$t!I6M-4x)sNNb@2oAO+XWLe1~x!yW?!Q4XVQ}Z`mk@O83 zsCu$|^JL4ukbuWbsn$UDCLRFKF5BKwlP(ux3DB-8Dj(&0#Ex&HD4(!sZ+w6LYsZG~ zTkv%m%QaF-a1wFq;`&*SUA}vS48@*n7;aOxQCj_0@iBk1L)!Sf>-h)7}W$Q{lgcdp^q|%BdT*F`fWI($>ZYyd$R~bUWCm=<*gf z^B)E^DoG9|eO7k&^)#Z?^EDuP z4?3sLO3?QVQ<)EaW8=$2Kghj3MITju<4~PF=0R@0o(!eVH_5!>r6UzRgNP8dg?NVd z?U&DUtK{gP$j=5b9$)Fze`OPPdmYKYeUvQhx|R{AjX!A8R#A&{vX3oQT0UIkL*|3} z_hKltJu~}WADv`bL#JNQlWtF8=XkveM(MdO3K1`uP<}!B<8MDs8n_$J6?O5;RU(*`Fanx60YeTIdV-lkfF3{{}jY6!Rg9t3)ypsEkXBjFoADjDG!bkVQ>r$R`XKDo1Yzo-8iA!Ye z$%Zk{5G)Eo+=nxwl!dob&9BAPw%zc0bz!1Dc7~o+I;cJtQ5ZbBR=LkdAVddou$kt*g!A*l zMYKL`t8;6$zkK`A#HMl1Ex{{E&m*R5I6k1|xiM~Op*rD8MSxVLnZod*X7#hWX&N8l zhIrwP;4?|XBEY7IcISD^+^+BR0W|!;>JUZb{`ZeNJob(yBUh9pkMqTclY>t{Z_DDs zESxyOEcFdSUCF6kDKD)?zcnmt?|7!1raf%bOIHX(TplVXcA<>mE<+XrkjTMAi!aU1 zTlF+tY12uycqjK9=lg>oaaOuPN6DtrH(cf~DneZvAN#e}*YCK;@{BjKhcn0XYSbj^ z=Fvpv%BoU3B}Cs=S*|P!-{XyabG^&9Tc-AE6tL;*>>jOyxiQlJWgNv%60;ih>!{T~ z)SlTskQ=;}5*+$ezSZ>ZgJQ~&vazMG<6fOtLy8p(*GoV*ynOMy47EgtCso#abimqk zSlL&SocNA{Q|7zPrP5TK)65@F3&(Cmds{J`7M*RJ#kI`H8a*=09-P4XcGAlt60^Z| zpgyX)6}aXH_S6B{axcd8N+d&WEfug+u7h#6vNe9mn5V^KOy`4{!ZjO;7*@4D-f)(< QU;lnIRCFOF$~FQ20|W?ITL1t6 literal 4654 zcmZvgbx>PDyT&Ol1%kU3CzN8PIK_(;DMf-5FHoG~ZUqViT1apT6nBcd7Iz62Xebb@ zxO;BCx%2&X@67J(?mK7C?E5}Dzh}<*s-vY!Oh`|Nfq_A+_D1O)ddx!iSNOOX7*7&x zC@#?p0=GAy&lng2?EmRcd<*5gF)+y1)Rg4k`(_=iVnHegYw?aJ#(y_D!_iI4!0A5& zx?Kizb(UuTINFy<-eKfW8_70fTe7cfKcB(wicp6JwTEM)8jKaKD0Zn4j&TU}Kqn5xeJ`lS!sjOr}iuEv)dMH-1hXSP9XRKte=E`RfWyTsvNZMQ7gZ4zh%3 zYCLavzqhk9RCas`cYTHX_hvgsJMMX-k+Dk)a^~^wC}%6vwbS!#{1u9~E-#u{a$NFX z#f`3f*ZrwR>;38IXXUwq-@hrevskD+7cHZa;XgC!a)K^F+gv{Pcll?Na$SjskcdWf zDNr|=a}j&f`DN3yJMKqw$wOsrw|nKqbrX_6V!>_Lg1hst7jK<8;gH1mBUQBF1l zwO3xP^{=8%DNc_l!>%j%X~eVm#`G;ni0pk4&VUA> z1BKVdvU1Z#bamIGr0SQBCx@zw)4%r0%8NcvNN{%z2ht7I&uV2dqidoi2jJW9ygPhO z6pu&&RC>(a9WCa*b0-`)75 z6>qpRINfT1&Q9|R5fYOB9j$v#;OY5(-K3cR#GSVAFo(krzb%I`>H@c|bUU%EqnbXF z%;NMkrnLbE*D<0lBFbd+QkDM=QA3+o5|V} zu4%zziA2xqbtE^xDbkyBRAP~cv!cb-ySacGen(ZbzO*~V6=$mHOvxDE(AiPv zoj}*+eYVe^;XYR@^WYmKgDoyZXjW4MIl?P5Wjj^#uewW?NLd0r0Q~~_{P(HI*p#o9 zPl}oM(tzVM&Qs~*Zt&F(g}sr8y-~vt53({#q@7IX-k#d|g;sO5vN;p8 zd9&Db{%|fzdx+jnH*iwsYLh^=W>!lIDJ~GMQ?s_}wP42Z>w`$lzbLwoY4zJb0=(PE zfYt3DB!#kQessZn$r4*u@?TpuE`1yYMSF~|CIiBPPWoxUnvSjLEM~+v;%A3Y8G@0{ z%!O}m(Wk!eq!ko?YN2+5MiUZ&D=JCf?HV5IW{oay-@af>XfZR@( z=sC>Tfx>?yDYm3ZcN1Ry@s$V@ICxgfA@BXiZ@Z8^LHrr_6an&YG|PnUA2e0ciDZtu zvCf2fu=CFlfoE?YO>rADq-D_iXUu$7VZ46ym=u_C)CAm-^G444IcrmB3d&1fuSJ}F2AIWaTC+{7xv?HG(#d9X2(n5ut$K_;XP^>U z=(t=4%AAdf+%&A>#l>}_afc`+2eWUYuOBegHt!jtzamlgc1IRlN5NzAlz%V0I48Ju z*Qa5cg_adl;^a3)-Mr!lyT@OGZ1tg#1+*ARIkTUF5^wQ!ug#Ty1RaS2br7Qa(3kUeWK`FP9yc z7F=tGxj-gYi`I!1nmR7FUgV5jTh-VOuSDWbJA`x0V5~O>p*kbVH9xe8QZ)ZQXNxhR41pawN^TJr+`qb0#)!5DX=R`vN zSL2OkCG?fmC8~Nm7w$;Wu=c-8yHL1NqGOhm`hLx$IVRuIc23BTD3;*s`&Pv=Ja*Po z-6z-*rJ2H5QX@S1o2ImU_P{m6`_yVazEvpfO`vVJZG4_$ znQCxlq;v|TIm=jw>&-p7693-WA1H(i&CHwzUvqP3d(N0YlB6Q16iLVLrI(PqMVSKI zDEyjYOSii>+3cjtJ~7e{2~vk?b?xNQY~lnxyv13ydY0G%Cm>FiaHVJ9=U42QwH2b0 zqWtw4Me0!aModr`Mp?;Zxy$QI&_nWDF%We#hYfxLwO;6+tTG_TiD1#_lS==m#xC7w zL|O*kO{?A-O)DN6!Ltdo#IIJS95!nbo)KwU%>1qGBv1Z<2)bGY9|;G|Q4zO4T*A+a z5+X}vaHNc57P!Um)~fW1TRgtmA%`q6UiQ|V%DJzg5hy&qAjbL!m%iMZF6@cT4jYx^*!@ubE|DY0-!YWagOlz-5D{ zw)I!Eg(Df(7&8{YB`w8SF@VvOv}c{`3yVSG zQPv-V#gvIG|Eo+DTeOI{&qC3CD#@!A!*OknwJ^lf zSwG&3sX*j{TVt< zmtGZOYCAuHeEsZ-nE4b0*sP9^KD+}asEzX92G9Ur6l zy6I-MOoHvQ+*K|eInz{loe~fN$xIC&1>uHa#zWjH9ecYZ=Q-<(m3KfNqO1x2m7{zJkUW)ZM)iB4Yr5!=S@S|moix^q5$N8tA4Cm1P<9^xg zxEq*wuiaV8xjXEZxUr5ZLrG?0S|p7Q|3(GH;r%F~>0D{B!>Q!r(t_ zSou!h5xe}(@tp6|m-6ZI5~?bd>YoP9=%Df6Pw1e!CHRB#!GET;y_VcdW=%`WvHn!A zy}E(!vYqX^rG%8cffRn7fhG#70j=QhHJf@pcnJVSsbhJ9Tv3UF>c8_r@mf%=wL`r8 zTqtDHtWn_ChVJt8mpD-%wMC~Dp{VRw&e-*^tA(eO6f}6_V;vYSo`gLL4zL(u@Iu`9T^=&B1r%4`qo)z)A(`)iptGLy64KRbzRBKP$ zl^}+i%kX7Alro+{c5Eh zldz=4ScW|=@<7f7fpbW&{1p9(T&C`~sTZ)g?+5hJ&G#E!bYMRc9L5kRC;Oejiye!b zw7{xf_snO;95_n*#Op>F(C-UM6P54i9b`F`dAD^juAoWz?M>umJwgvU9tZInQmgJ^ z!U^wJ_TLkv9xgN30cy%XOor86xT4bOYL|ce6%lf44>1ZyS0p9t>Fn7*al^kt$kx=ZrBwD(JBk^B-i@t2Nd2UZx zA>fm>r;c4`0Qd6BBLZDUFgXK|CAp&w-&Q1_mPW8I&5Bn@B060Bm1-$jX9LuZ|E}DH zX2GH^DbEd`R!Ci_-*QZv_txcghyo2G6#wxh`?Tz@j7bP0KHgZF+sm6HtOz)SF>ufV ziGZtayln2iZQm9TV+c}U6`#ZX`c5fO^_ViY_CyOdT63HSdakXuOAMIQQP__eFu^J3 z=J2#s@NQR-R_`ImzyrEEVnrZgn?F1=Y76)6_OJBUE$|yDI)LQapvq0m{m49CmTc~6Q2J6oW4fNoX~%jj@bo7^ zJb|qUweJQePfa^pY^!jU+>!eP%PkG_5^S7xlM__ z-LKFR-c2eurKMLl zl#eR3g#$P#tAK)^@I-uPPvr1W8RrDULrl(^|1q0aliT~UU6Qa& z2)D@e2I`hDzBlm1Mo96ZQ8t%}m5QeE&f`Mb8`tlOc z)h~bOpsKJWTAjYI$3YL|3lw^6anY@xA*_KI}+L(9# zk;MZ)X52K;k&C>~;4U}t!V@}5B#|mS_X_120juaFfU2`!v_Sc8Qb$x&Mv_b__7p~c z5SD@7`E&VtKnSYRvb(Hh>5lVv>tjaGh#AkEnGtW(Ot$}vhX1<7t)}aLjpF|`l1DrN;Qp4E U7PdP22M~suvX)Ynf<^fM0Hz;FZ2$lO From c75064fb6d19332a436025c4dd5118f2a9013a58 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 21:15:28 -0400 Subject: [PATCH 038/379] Added tag build-2.0.0.49 for changeset 4d3fbc14b4f8 From 18b1efdb23f82145481ceff75261f16971d5438c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 21:29:31 -0400 Subject: [PATCH 039/379] Added tag build-2.0.0.50 for changeset 02a210a1504a From 806bf10eb59e7729c0eeff99b0cc8f3bb5377210 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 21:46:44 -0400 Subject: [PATCH 040/379] Update Date in Build.xml --- WebsitePanel/build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index a5b571a3..b7232d9a 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -5,7 +5,7 @@ 2.0.0 $(BUILD_NUMBER) $(BUILD_NUMBER) - 2012-09-09 + 2012-09-23 .. $(RootFolder)\WebsitePanel From 92ed97f4560a17023e08706c08b951bfc6b98fc4 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 23 Sep 2012 21:56:02 -0400 Subject: [PATCH 041/379] Added tag build-2.0.0.53 for changeset aab6a6474ffd From cb9b5b04b6ff1ad60a9ea27fa9148f6bdf519710 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 24 Sep 2012 08:23:07 +0400 Subject: [PATCH 042/379] Fixed listing more OCS objects than page counter result in object not found --- .../WebsitePanel_SharedResources.ascx.resx | 3 +++ .../WebsitePanel/Code/Helpers/OCSHelper.cs | 3 ++- .../DesktopModules/WebsitePanel/OCS/OCSUsers.ascx | 12 ++++-------- .../DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.cs | 6 +++++- .../WebsitePanel/OCS/OCSUsers.ascx.designer.cs | 9 --------- 5 files changed, 14 insertions(+), 19 deletions(-) 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..389e3b58 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 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/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..e708f509 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 @@ -155,14 +155,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; } } From 4bc50e9f409cda964848209245b2e2790a049ac1 Mon Sep 17 00:00:00 2001 From: ruslanht Date: Mon, 24 Sep 2012 14:22:06 +0300 Subject: [PATCH 043/379] Web App Gallery: Setting of DB policies for multiply databases fixed --- .../WebApplicationGalleryParams.ascx.cs | 43 +++++++++++++++---- 1 file changed, 35 insertions(+), 8 deletions(-) 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) From 2130407c2d0a9d0413af6d65488521a1c78c2106 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 24 Sep 2012 07:27:14 -0400 Subject: [PATCH 044/379] Added tag build-2.0.0.54 for changeset d320167dd62e From 2e02654376afc394d5d81b2fc9ad3211af0901d8 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 24 Sep 2012 16:31:16 +0400 Subject: [PATCH 045/379] Switch shared IP to dedicated IP and vice versa Ensure the server component for IIS global dns definitions contain at least the following: An "A" record with name "[host_name]" and IP Addres "[ip]" This is regardless if DNS is implemented. Ensure also the IIS server component configuration contains the Public Shared IP address, this will be the "external" ip as to be configured in the dns records Note: * records as part of the global dns records are not taken care of so they will need to changed manually. Main reason is that they are not bound to a website as such and for DNS purposes only. This change has impacted quite some areas, any testing is welcome --- .../Code/WebServers/WebServerController.cs | 89 +++++++++++-------- 1 file changed, 53 insertions(+), 36 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 5ea4e114..8cb32b80 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -143,14 +143,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; } @@ -224,7 +223,7 @@ namespace WebsitePanel.EnterpriseServer StringDictionary webSettings = ServerController.GetServiceSettings(serviceId); int addressId = Utils.ParseInt(webSettings["SharedIP"], 0); - bool dedicatedIp = false; + if (packageAddressId != 0) { // dedicated IP @@ -232,7 +231,6 @@ namespace WebsitePanel.EnterpriseServer if (packageIp != null) { addressId = packageIp.AddressID; - dedicatedIp = true; } } @@ -597,12 +595,7 @@ 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; - - //string ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; + int addressId = 0; PackageIPAddress packageIp = ServerController.GetPackageIPAddress(ipAddressId); if (packageIp != null) @@ -614,7 +607,7 @@ namespace WebsitePanel.EnterpriseServer // place log record TaskManager.StartTask("WEB_SITE", "SWITCH_TO_DEDICATED_IP", siteItem.Name); TaskManager.ItemId = siteItemId; -/* + try { // remove all web site pointers @@ -635,10 +628,21 @@ namespace WebsitePanel.EnterpriseServer if (addressId != 0) ServerController.AddItemIPAddress(siteItemId, addressId); - AddWebSitePointer(siteItemId, "", domain.DomainId, true, true, true); + + DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName); + + AddWebSitePointer(siteItemId, + (domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "": domain.DomainName.Replace("." + domain.ZoneName,"") + , ZoneInfo.DomainId, true, true, true); foreach (DomainInfo pointer in pointers) - AddWebSitePointer(siteItemId, "", pointer.DomainId, true, true, true); + { + ZoneInfo = ServerController.GetDomain(domain.ZoneName); + + AddWebSitePointer(siteItemId, + (pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "") + , ZoneInfo.DomainId, true, true, true); + } return 0; } @@ -650,7 +654,6 @@ namespace WebsitePanel.EnterpriseServer { TaskManager.CompleteTask(); } - */ return 0; } @@ -669,18 +672,40 @@ namespace WebsitePanel.EnterpriseServer // 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); + // remove all web site pointers + List pointers = GetWebSitePointers(siteItemId); + foreach (DomainInfo pointer in pointers) + DeleteWebSitePointer(siteItemId, pointer.DomainId, true, true, false); - // get existing web site bindings - WebServer web = new WebServer(); - ServiceProviderProxy.Init(web, siteItem.ServiceId); - var bindings = web.GetSiteBindings(siteItem.SiteId); + // remove web site main pointer + DomainInfo domain = ServerController.GetDomain(siteItem.Name); + if (domain != null) + DeleteWebSitePointer(siteItemId, domain.DomainId, true, true, false); - // TODO - what would be correct logic here? + //Deallocate IP Address + ServerController.DeleteItemIPAddress(siteItemId, siteItem.SiteIPAddressId); + + // update site item + siteItem.SiteIPAddressId = 0; + PackageController.UpdatePackageItem(siteItem); + + DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName); + + AddWebSitePointer(siteItemId, + (domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : domain.DomainName.Replace("." + domain.ZoneName, "") + , ZoneInfo.DomainId, true, true, true); + + foreach (DomainInfo pointer in pointers) + { + ZoneInfo = ServerController.GetDomain(domain.ZoneName); + + AddWebSitePointer(siteItemId, + (pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "") + , ZoneInfo.DomainId, true, true, true); + } return 0; } @@ -692,7 +717,7 @@ namespace WebsitePanel.EnterpriseServer { TaskManager.CompleteTask(); } - */ + return 0; } @@ -904,23 +929,18 @@ namespace WebsitePanel.EnterpriseServer //ignore all other except the host_name record foreach (GlobalDnsRecord r in dnsRecords) { - if (rebuild) + if (r.RecordName == "[host_name]") { - if ((r.RecordName + (string.IsNullOrEmpty(r.RecordName) ? domain.ZoneName : "." + domain.ZoneName)) == domain.DomainName) tmpDnsRecords.Add(r); + tmpDnsRecords.Add(r); + break; } - else - { - if (r.RecordName == "[host_name]") tmpDnsRecords.Add(r); - } - } } else tmpDnsRecords = dnsRecords; - List resourceRecords = rebuild ? DnsServerController.BuildDnsResourceRecords(tmpDnsRecords, "", domain.DomainName, serviceIp): - DnsServerController.BuildDnsResourceRecords(tmpDnsRecords, hostName, domain.DomainName, serviceIp); + List resourceRecords = DnsServerController.BuildDnsResourceRecords(tmpDnsRecords, hostName, domain.DomainName, serviceIp); if (!rebuild) { @@ -968,10 +988,7 @@ namespace WebsitePanel.EnterpriseServer ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; // fill bindings - if (rebuild) - FillWebServerBindings(bindings, dnsRecords, "", domain.DomainName, "", ignoreGlobalDNSRecords); - else - FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); + FillWebServerBindings(bindings, dnsRecords, ipAddr, hostName, domain.DomainName, ignoreGlobalDNSRecords); //for logging purposes foreach (ServerBinding b in bindings) From 366fd7412e04d4a5ec78e94296178180f6932ed7 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 24 Sep 2012 16:48:40 +0400 Subject: [PATCH 046/379] Fixed GetOCSUsers and GetCRMUsers failed with accountnames > 20 char. --- WebsitePanel/Database/update_db.sql | 238 ++++++++++++++++++++++++++++ 1 file changed, 238 insertions(+) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index cd99bc7a..36e69bb6 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5485,6 +5485,244 @@ 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 + + + + + + +CREATE 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 + + + + + + + + + + + + + + + + + From 34e566e7d14af65e870dd891bcffac3455dd6c25 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 24 Sep 2012 16:25:59 +0300 Subject: [PATCH 047/379] checkbox galleryAppsAlwaysIgnoreDependencies --- .../Code/WebAppGallery/WebAppGalleryController.cs | 13 +++++++++++++ .../App_LocalResources/IIS60_Settings.ascx.resx | 4 ++++ .../App_LocalResources/IIS70_Settings.ascx.resx | 3 +++ .../ProviderControls/IIS60_Settings.ascx | 5 +++++ .../ProviderControls/IIS60_Settings.ascx.cs | 2 ++ .../IIS60_Settings.ascx.designer.cs | 9 +++++++++ .../ProviderControls/IIS70_Settings.ascx | 10 ++++++++++ .../ProviderControls/IIS70_Settings.ascx.cs | 4 ++++ .../IIS70_Settings.ascx.designer.cs | 9 +++++++++ 9 files changed, 59 insertions(+) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs index 3ba7ed7c..f076cc89 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs @@ -487,6 +487,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.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..09d656ce 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: 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 652755df..385036f5 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 @@ -219,6 +219,9 @@ Click to create a filter... + + Always ignore dependencies + Gallery feed filter: 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..8224cfdf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx @@ -135,6 +135,11 @@ + + + + +
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..69e30d79 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 @@ -132,6 +132,7 @@ namespace WebsitePanel.Portal.ProviderControls ActiveDirectoryIntegration.BindSettings(settings); // FilteredAppIds = settings["GalleryAppsFilter"]; + chkGalleryAppsAlwaysIgnoreDependencies.Checked = Utils.ParseBool(settings["GalleryAppsAlwaysIgnoreDependencies"], false); } public void SaveSettings(StringDictionary settings) @@ -166,6 +167,7 @@ namespace WebsitePanel.Portal.ProviderControls ActiveDirectoryIntegration.SaveSettings(settings); // settings["GalleryAppsFilter"] = GetAppsCatalogFilter(); + 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..4eb363b2 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 @@ -255,6 +255,15 @@ namespace WebsitePanel.Portal.ProviderControls { /// protected global::System.Web.UI.WebControls.LinkButton 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; + /// /// FilterDialogPanel 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 7358411d..52198e79 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx @@ -214,9 +214,19 @@ --%> + + + +
+ + + + + +
-
- -
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 @@

-
- -
From 3955e5ae190f1b4eb9966ca0e1634d28ed1ed4b9 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 10 Oct 2012 20:09:41 -0400 Subject: [PATCH 150/379] Added tag build-2.0.0.99 for changeset 9d7622918bc3 From 6795a0feb1ed0e46f3a64dc5f05d3a7a789a0f30 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 11 Oct 2012 13:57:54 +0400 Subject: [PATCH 151/379] Fixed: Upon migration ensured that Domain and Pointers are configured as required for the new version. The website pointer added as a dedicated record. The domain alias made visible as a top-level or sub-domain. Fixed duplicate pointers when reconstructing pointers for legacy sites. Legacy sites do not have all their hostheaders stored within the domains table --- WebsitePanel/Database/update_db.sql | 52 +++++++++++++++++++ .../Code/WebServers/WebServerController.cs | 17 +++--- 2 files changed, 63 insertions(+), 6 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 5f90a7e7..6003e329 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5853,3 +5853,55 @@ WHERE RETURN' END GO + + + + + +BEGIN TRAN +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, +) + + +INSERT INTO #TempDomains SELECT PackageID, +ZoneItemID, +DomainName, +HostingAllowed, +WebSiteID, +IsSubDomain, +IsInstantAlias, +IsDomainPointer FROM Domains WHERE IsDomainPointer = 1 + + +UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL WHERE IsDomainPointer = 1 AND DomainName IN (SELECT DomainName FROM Domains AS D WHERE +D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) +Group BY DOmainName +HAVING (COUNT(DomainName) = 1)) + + +INSERT INTO Domains SELECT PackageID, +ZoneItemID, +DomainName, +HostingAllowed, +WebSiteID, +NULL, +IsSubDomain, +IsInstantAlias, +IsDomainPointer + FROM #TempDomains As T WHERE DomainName IN (SELECT DomainName FROM Domains AS D WHERE +D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) +Group BY DOmainName +HAVING (COUNT(DomainName) = 1)) + +DROP TABLE #TempDomains +COMMIT TRAN +GO \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 84d173f3..bdc623f1 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -1143,13 +1143,18 @@ namespace WebsitePanel.EnterpriseServer if (!string.IsNullOrEmpty(b.Host)) { domain.DomainName = b.Host; - int domainID = ServerController.AddDomain(domain, domain.IsInstantAlias, false); - DomainInfo domainTmp = ServerController.GetDomain(domainID); - if (domainTmp != null) + + DomainInfo domainTmp = ServerController.GetDomain(domain.DomainName); + if (!((domainTmp != null) && (domainTmp.WebSiteId == siteItemId))) { - domainTmp.WebSiteId = siteItemId; - domainTmp.ZoneItemId = domain.ZoneItemId; - ServerController.UpdateDomain(domainTmp); + int domainID = ServerController.AddDomain(domain, domain.IsInstantAlias, false); + domainTmp = ServerController.GetDomain(domainID); + if (domainTmp != null) + { + domainTmp.WebSiteId = siteItemId; + domainTmp.ZoneItemId = domain.ZoneItemId; + ServerController.UpdateDomain(domainTmp); + } } } } From 4dc71b04d3826276bab64f7ffc255c3ad1c80f31 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 11 Oct 2012 07:09:13 -0400 Subject: [PATCH 152/379] Added tag build-2.0.0.100 for changeset 4ff2ce0ffae5 From 144392dcc8552c314c68dedfa8953f5e1bc540f7 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 11 Oct 2012 21:51:48 -0400 Subject: [PATCH 153/379] Add HyperVUtils/VMconfig to Build.XML --- WebsitePanel/build.xml | 160 ++++++++++++++++------------------------- 1 file changed, 61 insertions(+), 99 deletions(-) diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index 9501aa64..14465a74 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -31,7 +31,9 @@ $(TrunkFolder)\Sources\WebsitePanel.Server $(TrunkFolder)\Sources\WebsitePanel.EnterpriseServer $(TrunkFolder)\Sources\Tools\WebsitePanel.Import.CsvBulk\bin\$(BuildConfiguration) - $(TrunkFolder)\Sources\Tools\WebsitePanel.Import.Enterprise\bin\$(BuildConfiguration) + $(RootFolder)\WebsitePanel.HyperV.Utils\Sources\WebsitePanel.HyperV.Utils\bin\$(BuildConfiguration) + $(RootFolder)\WebsitePanel.VmConfig\Sources\WebsitePanel.VmConfig\bin\$(BuildConfiguration) + $(TrunkFolder)\Sources\Tools\WebsitePanel.Import.Enterprise\bin\$(BuildConfiguration) $(TrunkFolder)\Sources\Tools\WebsitePanel.AWStats.Viewer $(TrunkFolder)\Sources\Tools\WSPTransportAgent @@ -39,7 +41,9 @@ $(BuildFolder)\EnterpriseServer $(BuildFolder)\Portal $(BuildFolder)\Import.CsvBulk - $(BuildFolder)\Import.Enterprise + $(BuildFolder)\HyperVUtils + $(BuildFolder)\VMConfig + $(BuildFolder)\Import.Enterprise $(BuildFolder)\AWStats.Viewer $(BuildFolder)\WSPTransportAgent $(BuildFolder)\LocalizationToolkit @@ -71,6 +75,8 @@ + + @@ -83,6 +89,8 @@ + + @@ -93,6 +101,8 @@ + + @@ -176,7 +186,25 @@ - + + + + + + + + + + + + + + + + + + + @@ -289,6 +317,8 @@ $(DeployFolder)\Tools $(ToolsFolder)\Import.CsvBulk + $(ToolsFolder)\HyperVUtils + $(ToolsFolder)\VMconfig $(ToolsFolder)\Import.Enterprise $(ToolsFolder)\AWStats.Viewer $(ToolsFolder)\WSPTransportAgent @@ -349,8 +379,28 @@ + + + + + + + + + + + + + + + + + + + + - + @@ -510,6 +560,8 @@ + + @@ -549,11 +601,12 @@ + + - @@ -566,7 +619,9 @@ - + + + @@ -574,97 +629,4 @@ - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - RuntimeBinary - - - - - - - - From dfb65d2cac44cf96fcba6c1f72a314672b59bee6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 11 Oct 2012 22:02:04 -0400 Subject: [PATCH 154/379] Added tag build-2.0.0.101 for changeset 625ab8f1a0bc From eaeab87910bc8ec5f680349fc50814b3a3a581f6 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 12 Oct 2012 09:27:42 +0400 Subject: [PATCH 155/379] Fixed: When provisioning a new hosting space the domain does not show up in the domains list. Ensure the domain is not tagged as an instantalias. The createinstancealias setting set to false by default. --- .../Code/Packages/PackageController.cs | 8 ++++++-- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++++++++++---- .../WebsitePanel/UserCreateSpace.ascx.cs | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs index 164ad64f..11336783 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs @@ -460,13 +460,17 @@ 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; } + + if (createInstantAlias) + ServerController.CreateDomainInstantAlias("", domainId); + } catch (Exception ex) { @@ -481,7 +485,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/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..7d97bfb9 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,12 +5,18 @@ - + + - - - + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs index 12e24ee2..5bc7b0c6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs @@ -133,7 +133,7 @@ namespace WebsitePanel.Portal spaceName, Utils.ParseInt(ddlStatus.SelectedValue, 0), chkPackageLetter.Checked, - chkCreateResources.Checked, domainName, true, chkCreateWebSite.Checked, + chkCreateResources.Checked, domainName, false, chkCreateWebSite.Checked, chkCreateFtpAccount.Checked, ftpAccount, chkCreateMailAccount.Checked, ""); if (result.Result < 0) From c567984d57d52e76ea5279bcbafed86b81a4ce56 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 12 Oct 2012 07:32:34 -0400 Subject: [PATCH 156/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 7d97bfb9..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,18 +5,12 @@ - - + - - + + + From c087e5c40ac53fa6f91030987b4a9bd29913fb57 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 12 Oct 2012 07:42:07 -0400 Subject: [PATCH 157/379] Added tag build-2.0.0.102 for changeset a71281794842 From d0bd263bbd6cbbcfff757fedc0bc8cbe5cfa1df5 Mon Sep 17 00:00:00 2001 From: feodor_fitsner Date: Fri, 12 Oct 2012 09:34:55 -0700 Subject: [PATCH 158/379] MySQL username length policy increased to 40 characters --- .../DesktopModules/WebsitePanel/SettingsEditor.ascx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsEditor.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsEditor.ascx.cs index a365da9f..784d7962 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsEditor.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsEditor.ascx.cs @@ -267,7 +267,7 @@ namespace WebsitePanel.Portal } parts = settings["UserNamePolicy"].Split(';'); - if (Utils.ParseInt(parts[3]) > 16) + if (Utils.ParseInt(parts[3]) > 40) { ShowWarningMessage("MySQL_USERNAME_MAX_LENGTH"); return; From 24c63ffce9946e9c5e86726679ceafa99621b811 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 12 Oct 2012 12:44:17 -0400 Subject: [PATCH 159/379] Added tag build-2.0.0.103 for changeset 7740fbc20c3a From b4a760f6eca8f90f9f87d8b581b82991d40c485e Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 13 Oct 2012 10:54:24 +0400 Subject: [PATCH 160/379] Added: WebHosting: Moved hostname support enablement to hosting plan to enable closer compatibility with legacy approach. Default hostname set within webpolicy settings --- WebsitePanel/Database/update_db.sql | 11 ++++- .../Packages/Quotas.cs | 3 +- .../WebsitePanel.EnterpriseServer/Web.config | 4 +- .../WebsitePanel_SharedResources.ascx.resx | 3 ++ .../DomainsAddDomain.ascx.resx | 7 ++- .../SettingsWebPolicy.ascx.resx | 6 +++ .../WebSitesAddPointer.ascx.resx | 3 ++ .../WebSitesAddSite.ascx.resx | 3 ++ .../WebsitePanel/Code/Framework/Utils.cs | 8 ++++ .../WebsitePanel/DomainsAddDomain.ascx | 22 +++++++-- .../WebsitePanel/DomainsAddDomain.ascx.cs | 16 ++++++- .../DomainsAddDomain.ascx.designer.cs | 46 ++++++++----------- .../WebsitePanel/SettingsWebPolicy.ascx | 13 ++++++ .../WebsitePanel/SettingsWebPolicy.ascx.cs | 5 ++ .../SettingsWebPolicy.ascx.designer.cs | 36 +++++++++++++++ .../WebsitePanel/UserCreateSpace.ascx | 7 +++ .../WebsitePanel/UserCreateSpace.ascx.cs | 17 ++++++- .../UserCreateSpace.ascx.designer.cs | 18 ++++++++ .../WebsitePanel/WebSitesAddPointer.ascx | 2 +- .../WebsitePanel/WebSitesAddPointer.ascx.cs | 15 ++++++ .../WebSitesAddPointer.ascx.designer.cs | 9 ++++ .../WebsitePanel/WebSitesAddSite.ascx | 2 +- .../WebsitePanel/WebSitesAddSite.ascx.cs | 12 +++++ .../WebSitesAddSite.ascx.designer.cs | 9 ++++ 24 files changed, 235 insertions(+), 42 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 6003e329..9e8262f5 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5904,4 +5904,13 @@ HAVING (COUNT(DomainName) = 1)) DROP TABLE #TempDomains COMMIT TRAN -GO \ No newline at end of file +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 + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs index e8a6fcc0..8090dd31 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs @@ -79,7 +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"; //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 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 7d97bfb9..a3bcbce3 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,14 +9,14 @@ --> - + - + 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 0270d53b..d73ac512 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -4861,6 +4861,9 @@ Allow IP Address Mode Switch + + Enable Hostname Support + Exchange Organization 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..537240f1 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 @@ -180,4 +180,7 @@ * + + Hostname: + \ No newline at end of file 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/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 fd1eabe9..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 @@ -144,6 +144,9 @@ 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/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/DomainsAddDomain.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx index 9fc7ade2..f99eeaa6 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" %> @@ -35,10 +36,23 @@
-
-
- Description... -
+ + + + + + + + +
+
+
+ Description... +
+
+ + +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs index 39d42feb..89a62ceb 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs @@ -41,6 +41,20 @@ 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; + + + } catch (Exception ex) { @@ -179,7 +193,7 @@ namespace WebsitePanel.Portal { domainId = ES.Services.Servers.AddDomainWithProvisioning(PanelSecurity.PackageId, domainName.ToLower(), type, CreateWebSite.Checked, pointWebSiteId, pointMailDomainId, - EnableDns.Checked, CreateInstantAlias.Checked, AllowSubDomains.Checked, ""); + EnableDns.Checked, CreateInstantAlias.Checked, AllowSubDomains.Checked, txtHostName.Text); 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..bfd6a8b4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs @@ -1,31 +1,3 @@ -// 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. @@ -184,6 +156,24 @@ 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; + /// /// PointMailDomainPanel control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx index da64e4be..78d35a1b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx @@ -28,6 +28,19 @@ + + + + + + + +
+
+
+ + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.cs index 7ba14fd0..73fdb051 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.cs @@ -52,6 +52,9 @@ namespace WebsitePanel.Portal PublishingProfileTextBox.Text = settings["PublishingProfile"]; chkEnableParkingPageTokens.Checked = Utils.ParseBool(settings["EnableParkingPageTokens"], false); + // HostName + txtHostName.Text = settings["HostName"]; + // default documents if (!String.IsNullOrEmpty(settings["DefaultDocuments"])) txtDefaultDocs.Text = String.Join("\n", settings["DefaultDocuments"].Split(',', ';')); @@ -105,6 +108,8 @@ namespace WebsitePanel.Portal settings["PublishingProfile"] = PublishingProfileTextBox.Text; settings["EnableParkingPageTokens"] = chkEnableParkingPageTokens.Checked.ToString(); + settings["HostName"] = txtHostName.Text.Trim(); + // default documents settings["DefaultDocuments"] = String.Join(",", Utils.ParseDelimitedString(txtDefaultDocs.Text, '\n', '\r', ';', ',')); ; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.designer.cs index 117307fc..79dd695c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.designer.cs @@ -84,6 +84,42 @@ namespace WebsitePanel.Portal { /// protected global::System.Web.UI.WebControls.CheckBox chkEnableParkingPageTokens; + /// + /// secHostNamePanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.CollapsiblePanel secHostNamePanel; + + /// + /// HostNamePanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel HostNamePanel; + + /// + /// 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; + /// /// WebPublishingProfile control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx index 8a538579..52e6606c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx @@ -1,6 +1,7 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserCreateSpace.ascx.cs" Inherits="WebsitePanel.Portal.UserCreateSpace" %> <%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="UserControls/CollapsiblePanel.ascx" %> <%@ Register Src="UserControls/UsernameControl.ascx" TagName="UsernameControl" TagPrefix="uc4" %> +<%@ Register Src="DomainsSelectDomainControl.ascx" TagName="DomainsSelectDomainControl" TagPrefix="uc1" %> <%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> @@ -97,6 +98,12 @@ Text="Create Web Site" Checked="True" /> + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs index 5bc7b0c6..0888d06f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs @@ -44,6 +44,9 @@ namespace WebsitePanel.Portal ftpAccountName.SetUserPolicy(PanelSecurity.SelectedUserId, UserSettings.FTP_POLICY, "UserNamePolicy"); BindHostingPlans(PanelSecurity.SelectedUserId); BindHostingPlan(); + + + } } catch (Exception ex) @@ -92,6 +95,17 @@ namespace WebsitePanel.Portal { systemEnabled = cntx.Groups.ContainsKey(ResourceGroups.Os); webEnabled = cntx.Groups.ContainsKey(ResourceGroups.Web); + + 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; + ftpEnabled = cntx.Groups.ContainsKey(ResourceGroups.Ftp); mailEnabled = cntx.Groups.ContainsKey(ResourceGroups.Mail); } @@ -102,6 +116,7 @@ namespace WebsitePanel.Portal fsWeb.Visible = webEnabled; chkCreateWebSite.Checked &= webEnabled; + fsFtp.Visible = ftpEnabled; chkCreateFtpAccount.Checked &= ftpEnabled; @@ -134,7 +149,7 @@ namespace WebsitePanel.Portal Utils.ParseInt(ddlStatus.SelectedValue, 0), chkPackageLetter.Checked, chkCreateResources.Checked, domainName, false, chkCreateWebSite.Checked, - chkCreateFtpAccount.Checked, ftpAccount, chkCreateMailAccount.Checked, ""); + chkCreateFtpAccount.Checked, ftpAccount, chkCreateMailAccount.Checked, txtHostName.Text); if (result.Result < 0) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.designer.cs index e41d8992..1429ed53 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.designer.cs @@ -210,6 +210,24 @@ namespace WebsitePanel.Portal { /// protected global::System.Web.UI.WebControls.CheckBox chkCreateWebSite; + /// + /// 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; + /// /// fsFtp control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx index 4acbd503..78691c8e 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 3dffe364..7c973b98 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx @@ -11,7 +11,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. /// From cdb3883d9af30aa18714a10894a21610cd112e94 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 13 Oct 2012 11:19:09 +0400 Subject: [PATCH 161/379] Fixed: Switch to dedicated fails when externalip is null --- .../Code/WebServers/WebServerController.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index bdc623f1..4b441ca8 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -271,7 +271,10 @@ namespace WebsitePanel.EnterpriseServer { foreach (GlobalDnsRecord d in dnsRecords) { - if (regIP.IsMatch(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; + if (!string.IsNullOrEmpty(d.ExternalIP)) + { + if (regIP.IsMatch(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; + } } } @@ -653,7 +656,10 @@ namespace WebsitePanel.EnterpriseServer foreach (GlobalDnsRecord d in dnsRecords) { - if (regIP.IsMatch(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; + if (!string.IsNullOrEmpty(d.ExternalIP)) + { + if (regIP.IsMatch(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; + } } // place log record From 4462f34aee968fee09f919086d1708a32779aa2d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 13 Oct 2012 08:37:19 -0400 Subject: [PATCH 162/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++------- .../DomainsAddDomain.ascx.designer.cs | 28 +++++++++++++++++++ .../SettingsWebPolicy.ascx.designer.cs | 28 +++++++++++++++++++ 3 files changed, 60 insertions(+), 10 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index a3bcbce3..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,18 +5,12 @@ - - + - - + + + 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 bfd6a8b4..2f7dfd8c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.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/SettingsWebPolicy.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.designer.cs index 79dd695c..3da7f0d6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsWebPolicy.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. From e9bc29c56364bc5920d3b667bd13f760d449fcf8 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 13 Oct 2012 08:46:34 -0400 Subject: [PATCH 163/379] Added tag build-2.0.0.104 for changeset 6b4ca8f63ab9 From 79c9279c8ac8cefc109cb7b61bb51f49265de299 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 13 Oct 2012 19:48:57 +0400 Subject: [PATCH 164/379] Ensured the hostname text box is visible within add pointers --- .../WebsitePanel/WebSitesAddPointer.ascx.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.cs index 1b4c6018..cd9a05fa 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.cs @@ -49,14 +49,14 @@ namespace WebsitePanel.Portal PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); - if (Utils.CheckQouta(Quotas.WEB_ENABLEHOSTNAMESUPPORT, cntx)) - { + //if (Utils.CheckQouta(Quotas.WEB_ENABLEHOSTNAMESUPPORT, cntx)) + //{ txtHostName.Visible = lblTheDotInTheMiddle.Visible = true; UserSettings settings = ES.Services.Users.GetUserSettings(PanelSecurity.LoggedUserId, UserSettings.WEB_POLICY); txtHostName.Text = String.IsNullOrEmpty(settings["HostName"]) ? "" : settings["HostName"]; - } - else - txtHostName.Visible = lblTheDotInTheMiddle.Visible = false; + //} + //else + //txtHostName.Visible = lblTheDotInTheMiddle.Visible = false; } From 8fae3c1998ac45867324c146de4888b9614c1723 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 13 Oct 2012 16:49:45 -0400 Subject: [PATCH 165/379] Added tag build-2.0.0.105 for changeset 3d3351c65ecb From 6987940e59b40d9fc3f3b67c1fe921f5c708f3ba Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 14 Oct 2012 14:55:34 +0400 Subject: [PATCH 166/379] Fixed: In disabled hostheader mode site was created with default hostheader value --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++++++++++---- .../WebsitePanel/DomainsAddDomain.ascx.cs | 5 ++++- .../WebsitePanel/UserCreateSpace.ascx.cs | 3 +++ .../WebsitePanel/WebSitesAddSite.ascx.cs | 3 +++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..a3bcbce3 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,12 +5,18 @@ - + + - - - + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs index 89a62ceb..541cc0bf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs @@ -51,7 +51,10 @@ namespace WebsitePanel.Portal txtHostName.Text = String.IsNullOrEmpty(settings["HostName"]) ? "" : settings["HostName"]; } else - lblHostName.Visible= txtHostName.Visible = false; + { + lblHostName.Visible = txtHostName.Visible = false; + txtHostName.Text = ""; + } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs index 0888d06f..ddd4a058 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs @@ -104,7 +104,10 @@ namespace WebsitePanel.Portal } else + { lblHostName.Visible = txtHostName.Visible = false; + txtHostName.Text = ""; + } ftpEnabled = cntx.Groups.ContainsKey(ResourceGroups.Ftp); mailEnabled = cntx.Groups.ContainsKey(ResourceGroups.Mail); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs index 5fced083..7d7acc04 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs @@ -73,7 +73,10 @@ namespace WebsitePanel.Portal txtHostName.Text = String.IsNullOrEmpty(settings["HostName"]) ? "" : settings["HostName"]; } else + { txtHostName.Visible = chkIgnoreGlobalDNSRecords.Visible = lblIgnoreGlobalDNSRecords.Visible = lblTheDotInTheMiddle.Visible = false; + txtHostName.Text = ""; + } } From 981d7e7ddcda3329332c0ec500fe40cbd5121ad6 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 14 Oct 2012 15:59:18 +0400 Subject: [PATCH 167/379] Fixed: Webinstaller was not loading. Web component was wrongly detected. --- .../OperatingSystemController.cs | 45 +++++++++++++------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs index 37e70846..2e6bc7bb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs @@ -412,33 +412,52 @@ namespace WebsitePanel.EnterpriseServer public static bool CheckLoadUserProfile(int serverId) { - int packageId = getIISPackageId(); - if (packageId != -1) + int serviceId = getWebServiceId(serverId); + if (serviceId != -1) { - int serviceId = DataProvider.GetServiceIdByProviderForServer(packageId, serverId); return WebServerController.GetWebServer(serviceId).CheckLoadUserProfile(); } return false; } - private static int getIISPackageId() + private static int getWebServiceId(int serverId) { - int packageId = DataProvider.GetPackageIdByName("IIS80"); - if (packageId == -1) - packageId = DataProvider.GetPackageIdByName("IIS70"); - if (packageId == -1) - packageId = DataProvider.GetPackageIdByName("IIS60"); + DataSet dsServices = ServerController.GetRawServicesByServerId(serverId); + int webGroup = -1; + + if (dsServices.Tables.Count < 1) return -1; - return packageId; + 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 = getIISPackageId(); - if (packageId != -1) + int serviceId = getWebServiceId(serverId); + if (serviceId != -1) { - int serviceId = DataProvider.GetServiceIdByProviderForServer(packageId, serverId); WebServerController.GetWebServer(serviceId).EnableLoadUserProfile(); } } From 698873f4b6a1568cca14d8bb4dba4b419d03dc16 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 14 Oct 2012 08:34:59 -0400 Subject: [PATCH 168/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index a3bcbce3..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,18 +5,12 @@ - - + - - + + + From e880f712dad3e1667b83001068bd535c93afdac8 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 14 Oct 2012 08:44:48 -0400 Subject: [PATCH 169/379] Added tag build-2.0.0.106 for changeset cb5f71889d8f From 44e3953c85511637b67bf3f964d390c7982b3f24 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 14 Oct 2012 20:04:50 +0400 Subject: [PATCH 170/379] Fixed: AddWebsitePointer: Postback was not handled, resetting the input values to default --- .../WebsitePanel/WebSitesAddPointer.ascx | 2 +- .../WebsitePanel/WebSitesAddPointer.ascx.cs | 14 ++++++++------ .../WebsitePanel/WebSitesAddSite.ascx.cs | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx index 78691c8e..26a9ba7f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx @@ -7,7 +7,7 @@ - + Date: Sun, 14 Oct 2012 13:49:12 -0400 Subject: [PATCH 171/379] Added tag build-2.0.0.107 for changeset dfb9693ec515 From d323eeb4dfb97587af876243d8ddf035aaa517a6 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 15 Oct 2012 07:16:24 +0400 Subject: [PATCH 172/379] Adjusted: Webhosting: In webhosting hostname support disabledmode, used domainnames by a site are not shown when creating a site. --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++++++--- .../DomainsSelectDomainControl.ascx.cs | 29 +++++++++++++++++-- .../WebsitePanel/WebSitesAddSite.ascx.cs | 5 ++-- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..a3bcbce3 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,12 +5,18 @@ - + + - - - + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs index c5ebfe6b..8e8be38f 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 { @@ -108,6 +109,10 @@ namespace WebsitePanel.Portal { DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PackageId); + WebSite[] sites = null; + if (HideWebSites) + sites = ES.Services.WebServers.GetWebSites(PackageId, false); + ddlDomains.Items.Clear(); // add "select" item @@ -115,10 +120,28 @@ namespace WebsitePanel.Portal foreach (DomainInfo domain in domains) { - if (HideWebSites && domain.WebSiteId > 0) - continue; + if (HideWebSites) + { + if (domain.WebSiteId > 0) + { + continue; + } + else + { + bool bFound = false; + foreach (WebSite w in sites) + { + if (w.Name.ToLower() == domain.DomainName.ToLower()) + { + bFound = true; + break; + } + } + if (bFound) continue; + } + } else if (HideInstantAlias && domain.IsInstantAlias) - continue; + continue; else if (HideMailDomains && domain.MailDomainId > 0) continue; else if (HideDomainPointers && (domain.IsDomainPointer)) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs index 17c4c3e3..27f2224c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs @@ -62,10 +62,10 @@ namespace WebsitePanel.Portal private void ToggleControls() { - rowDedicatedIP.Visible = rbDedicatedIP.Checked; - 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; @@ -78,6 +78,7 @@ namespace WebsitePanel.Portal txtHostName.Visible = chkIgnoreGlobalDNSRecords.Visible = lblIgnoreGlobalDNSRecords.Visible = lblTheDotInTheMiddle.Visible = false; chkIgnoreGlobalDNSRecords.Checked = true; txtHostName.Text = ""; + domainsSelectDomainControl.HideWebSites = true; } } From cad88fef367524caeacc997ff1a8c1af1002c32b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 15 Oct 2012 07:45:53 -0400 Subject: [PATCH 173/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index a3bcbce3..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,18 +5,12 @@ - - + - - + + + From a178d56c171f69549ae87c079f19a9fdaf5f7de4 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 15 Oct 2012 07:59:28 -0400 Subject: [PATCH 174/379] Added tag build-2.0.0.108 for changeset e2c05170ce1d From 2d4bac10ae535557c07f389a7a3b84b6f5a7d077 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 15 Oct 2012 16:16:59 +0400 Subject: [PATCH 175/379] Fixed: Clean up pending certificate request when switching IP Mode --- .../Code/WebServers/WebServerController.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 4b441ca8..8f5e439e 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -682,6 +682,11 @@ namespace WebsitePanel.EnterpriseServer DeleteCertificate(siteItemId, c); } + certificates = GetPendingCertificates(siteItemId); + foreach (SSLCertificate c in certificates) + { + DeleteCertificateRequest(siteItemId, c.id); + } List pointers = GetWebSitePointers(siteItemId); foreach (DomainInfo pointer in pointers) @@ -790,6 +795,12 @@ namespace WebsitePanel.EnterpriseServer 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) From 0390a0f6121a23a03022b7a8791a914f219054f8 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 16 Oct 2012 08:45:58 -0400 Subject: [PATCH 176/379] Added tag build-2.0.0.109 for changeset deba3b4cc6de From b8055e44923a1917c0b62af15466721c10f07518 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 17 Oct 2012 01:03:17 +1100 Subject: [PATCH 177/379] Update compatible version information for MailEnable --- WebsitePanel/Database/update_db.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 9e8262f5..9875cd23 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -4873,7 +4873,8 @@ 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 From 2916309eab052dbabb4e5f382f4fe32aacf8a506 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 17 Oct 2012 01:12:29 +1100 Subject: [PATCH 178/379] MailEnable compatible versions updated. --- WebsitePanel/Database/install_db.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Database/install_db.sql b/WebsitePanel/Database/install_db.sql index 48e12019..8eb8ed16 100644 --- a/WebsitePanel/Database/install_db.sql +++ b/WebsitePanel/Database/install_db.sql @@ -23551,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 From ac5b8312b4e95f03dc69114f1038d5fa5a05ba81 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 16 Oct 2012 13:12:11 -0400 Subject: [PATCH 179/379] Added tag build-2.0.0.110 for changeset 94871761bd88 From 97e4dce0e529cb78bb92ac91fdb3fda974fde491 Mon Sep 17 00:00:00 2001 From: robvde Date: Wed, 17 Oct 2012 09:15:11 +0400 Subject: [PATCH 180/379] Fixed: Create InstantAlias creates pointer records for all websites, Create InstantAlias only crate pointer records for sites within the specific domain Fixed: delete instant alias to be ran twice to remove alias Fixed: Webhosting: Hostname support not enabled: only to show unallocated domains --- WebsitePanel/Database/update_db.sql | 55 +++++++++++++++++++ .../Code/Data/DataProvider.cs | 10 ++++ .../Code/Servers/ServerController.cs | 26 ++++++--- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++-- .../WebsitePanel/DomainsAddDomain.ascx | 2 +- .../DomainsAddDomain.ascx.designer.cs | 28 ---------- .../DomainsSelectDomainControl.ascx.cs | 24 +++++--- 7 files changed, 111 insertions(+), 48 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 9e8262f5..c4b83238 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5855,6 +5855,61 @@ END 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].[GetDomainByNameByPointer] +( + @ActorID int, + @DomainName nvarchar(100), + @IsDomainPointer bit +) +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.DomainName = @DomainName + AND D.IsDomainPointer = @IsDomainPointer + AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1 +RETURN' +END +GO + + + + + + + + + + + + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index 0c7a84c2..648e387f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -793,6 +793,16 @@ namespace WebsitePanel.EnterpriseServer new SqlParameter("@domainName", domainName)); } + public static IDataReader GetDomainByNameByPointer(int actorId, string domainName, bool isDomainPointer) + { + return SqlHelper.ExecuteReader(ConnectionString, CommandType.StoredProcedure, + ObjectQualifier + "GetDomainByNameByPointer", + new SqlParameter("@ActorId", actorId), + new SqlParameter("@domainName", domainName), + new SqlParameter("@isDomainPointer", isDomainPointer)); + } + + public static DataSet GetDomainsByZoneId(int actorId, int zoneId) { return SqlHelper.ExecuteDataset(ConnectionString, CommandType.StoredProcedure, diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index 7fc22adb..9d4afd59 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -1677,6 +1677,13 @@ namespace WebsitePanel.EnterpriseServer DataProvider.GetDomainByName(SecurityContext.User.UserId, domainName)); } + public static DomainInfo GetDomainItem(string domainName, bool IsDomainPointer) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetDomainByNameByPointer(SecurityContext.User.UserId, domainName, IsDomainPointer)); + } + + public static string GetDomainAlias(int packageId, string domainName) { // load package settings @@ -2212,14 +2219,19 @@ namespace WebsitePanel.EnterpriseServer } // add web site pointer if required - List sites = WebServerController.GetWebSites(domain.PackageId, false); - foreach (WebSite w in sites) + List domains = GetDomainsByZoneId(domain.ZoneItemId); + foreach (DomainInfo d in domains) { - WebServerController.AddWebSitePointer( w.Id, - (w.Name.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : w.Name.Replace("." + domain.ZoneName, ""), - instantAlias.DomainId); + if (d.WebSiteId > 0) + { + WebSite w = WebServerController.GetWebSite(d.WebSiteId); + + WebServerController.AddWebSitePointer(d.WebSiteId, + (w.Name.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : w.Name.Replace("." + domain.ZoneName, ""), + instantAlias.DomainId); + + } } - // add mail domain pointer if (domain.MailDomainId > 0 && instantAlias.MailDomainId == 0) @@ -2259,7 +2271,7 @@ namespace WebsitePanel.EnterpriseServer try { // load instant alias domain - DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName); + DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName, false); if (instantAlias == null) return 0; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..7d97bfb9 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,12 +5,18 @@ - + + - - - + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx index f99eeaa6..5addb5b8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx @@ -19,7 +19,7 @@

- + . // This code was generated by a tool. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs index 8e8be38f..5678f285 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs @@ -110,9 +110,23 @@ namespace WebsitePanel.Portal DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PackageId); WebSite[] sites = null; + Hashtable htSites = 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); + } + } + } + ddlDomains.Items.Clear(); // add "select" item @@ -128,16 +142,10 @@ namespace WebsitePanel.Portal } else { - bool bFound = false; - foreach (WebSite w in sites) + if (htSites != null) { - if (w.Name.ToLower() == domain.DomainName.ToLower()) - { - bFound = true; - break; - } + if (htSites[domain.DomainName.ToLower()] != null) continue; } - if (bFound) continue; } } else if (HideInstantAlias && domain.IsInstantAlias) From 48a954032e40e69fdb090ff051a00469b762e20a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 17 Oct 2012 07:42:59 -0400 Subject: [PATCH 181/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++------- .../DomainsAddDomain.ascx.designer.cs | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 7d97bfb9..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,18 +5,12 @@ - - + - - + + + 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 bfd6a8b4..2f7dfd8c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.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. From 0b256d83de9e71ba791b5795d13197d1dadecd9a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 17 Oct 2012 07:54:55 -0400 Subject: [PATCH 182/379] Added tag build-2.0.0.111 for changeset 7942a08b575d From cc6277c8d74d66ba4e855f6b4cc128a5ca217a29 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 18 Oct 2012 09:37:39 +0400 Subject: [PATCH 183/379] Fixed: DomainItemId field added to the Domains table to register the relationship between a domain pointer and domain. Updated depended procedures and methods --- WebsitePanel/Database/update_db.sql | 237 ++++++++++++------ .../Servers/DomainInfo.cs | 8 + .../Code/Data/DataProvider.cs | 14 +- .../Code/Servers/ServerController.cs | 32 ++- .../Code/WebServers/WebServerController.cs | 2 + 5 files changed, 212 insertions(+), 81 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 919aa5d9..f5a5317d 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5856,7 +5856,101 @@ END GO -IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetExchangeOrganization') + + + + + + + + + + + + + + + + + +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 + + + + + +BEGIN TRAN +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 IsDomainPointer = 1 + + +UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL, DomainItemID=NULL WHERE IsDomainPointer = 1 AND DomainName IN (SELECT DomainName FROM Domains AS D WHERE +D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) +Group BY DOmainName +HAVING (COUNT(DomainName) = 1)) + + +INSERT INTO Domains SELECT PackageID, +ZoneItemID, +DomainName, +HostingAllowed, +WebSiteID, +NULL, +IsSubDomain, +IsInstantAlias, +IsDomainPointer, +DomainItemID + FROM #TempDomains As T WHERE DomainName IN (SELECT DomainName FROM Domains AS D WHERE +D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) +Group BY DOmainName +HAVING (COUNT(DomainName) = 1)) + + +UPDATE Domains SET DomainItemID = null WHERE IsDomainPointer=0 + +DROP TABLE #TempDomains +COMMIT TRAN +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'GetDomainByNameByPointer') BEGIN EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetDomainByNameByPointer] ( @@ -5897,76 +5991,79 @@ GO - - - - - - - - - - - - - - - - - -BEGIN TRAN -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, -) - - -INSERT INTO #TempDomains SELECT PackageID, -ZoneItemID, -DomainName, -HostingAllowed, -WebSiteID, -IsSubDomain, -IsInstantAlias, -IsDomainPointer FROM Domains WHERE IsDomainPointer = 1 - - -UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL WHERE IsDomainPointer = 1 AND DomainName IN (SELECT DomainName FROM Domains AS D WHERE -D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) -Group BY DOmainName -HAVING (COUNT(DomainName) = 1)) - - -INSERT INTO Domains SELECT PackageID, -ZoneItemID, -DomainName, -HostingAllowed, -WebSiteID, -NULL, -IsSubDomain, -IsInstantAlias, -IsDomainPointer - FROM #TempDomains As T WHERE DomainName IN (SELECT DomainName FROM Domains AS D WHERE -D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) -Group BY DOmainName -HAVING (COUNT(DomainName) = 1)) - -DROP TABLE #TempDomains -COMMIT TRAN -GO - - - -IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Web.EnableHostNameSupport') +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetDomainsByDomainItemID') 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) +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 \ No newline at end of file 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/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index 648e387f..2673bc80 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -811,6 +811,15 @@ namespace WebsitePanel.EnterpriseServer 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) { @@ -851,7 +860,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", @@ -860,7 +869,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) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index 9d4afd59..b7c1e49c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -1609,7 +1609,14 @@ namespace WebsitePanel.EnterpriseServer 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( @@ -1908,7 +1915,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; } @@ -1959,7 +1966,7 @@ namespace WebsitePanel.EnterpriseServer } - List domains = GetDomainsByZoneId(domain.ZoneItemId); + List domains = GetDomainsByDomainItemId(domain.DomainId); foreach (DomainInfo d in domains) { if (d.WebSiteId > 0) @@ -2030,7 +2037,7 @@ namespace WebsitePanel.EnterpriseServer if (!domain.IsDomainPointer) { - List domains = GetDomainsByZoneId(domain.ZoneItemId); + List domains = GetDomainsByDomainItemId(domain.DomainId); foreach (DomainInfo d in domains) { if (d.WebSiteId > 0) @@ -2218,16 +2225,22 @@ namespace WebsitePanel.EnterpriseServer instantAlias = GetDomainItem(instantAliasId); } + if (domain.WebSiteId > 0) + { + WebServerController.AddWebSitePointer(domain.WebSiteId, + (domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : domain.DomainName.Replace("." + domain.ZoneName, ""), + instantAlias.DomainId); + } + + // add web site pointer if required - List domains = GetDomainsByZoneId(domain.ZoneItemId); + List domains = GetDomainsByDomainItemId(domain.DomainId); foreach (DomainInfo d in domains) { if (d.WebSiteId > 0) { - WebSite w = WebServerController.GetWebSite(d.WebSiteId); - WebServerController.AddWebSitePointer(d.WebSiteId, - (w.Name.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : w.Name.Replace("." + domain.ZoneName, ""), + (d.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : d.DomainName.Replace("." + domain.ZoneName, ""), instantAlias.DomainId); } @@ -2283,7 +2296,8 @@ namespace WebsitePanel.EnterpriseServer return webRes; } - List domains = GetDomainsByZoneId(instantAlias.ZoneItemId); + List domains = GetDomainsByDomainItemId(instantAlias.DomainId); + foreach (DomainInfo d in domains) { if (d.WebSiteId > 0) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 8f5e439e..26066feb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -1170,6 +1170,8 @@ namespace WebsitePanel.EnterpriseServer { domainTmp.WebSiteId = siteItemId; domainTmp.ZoneItemId = domain.ZoneItemId; + domainTmp.DomainItemId = domainId; + ServerController.UpdateDomain(domainTmp); } } From 2408accc045233c4eb3ef9661bfa2869ac54d074 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 18 Oct 2012 09:57:34 +0400 Subject: [PATCH 184/379] Fixed: Domains table affected when running update script a second time --- WebsitePanel/Database/update_db.sql | 3 ++- .../WebsitePanel.EnterpriseServer/Web.config | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index f5a5317d..f53f17b4 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5898,7 +5898,7 @@ CREATE TABLE #TempDomains [DomainItemID] [int] NULL, ) -UPDATE Domains SET DomainItemID = DomainID +UPDATE Domains SET DomainItemID = DomainID WHERE DomainItemID IS NULL INSERT INTO #TempDomains SELECT PackageID, ZoneItemID, @@ -5913,6 +5913,7 @@ DomainItemID FROM Domains WHERE IsDomainPointer = 1 UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL, DomainItemID=NULL WHERE IsDomainPointer = 1 AND DomainName IN (SELECT DomainName FROM Domains AS D WHERE D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) +AND DomainItemID IS NULL Group BY DOmainName HAVING (COUNT(DomainName) = 1)) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..7419631a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,12 +5,19 @@ - + + - - + + From 0137fe60d0cc2a31dd521153814b89a6ff5ac532 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 18 Oct 2012 04:36:01 -0400 Subject: [PATCH 185/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 7419631a..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,12 @@ - - + + + - - From 7c4bb1ae9fea6b6f2c4ae75d1335f32998ceadc5 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 18 Oct 2012 04:55:55 -0400 Subject: [PATCH 186/379] Added tag build-2.0.0.115 for changeset 350ad8f3e288 From fdbda91cdd0827171e6d1dee9bbf0be556c25fd5 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 19 Oct 2012 08:34:05 +0400 Subject: [PATCH 187/379] =?UTF-8?q?Fixed:=207.=09Lync=20=E2=80=93=20MeetMe?= =?UTF-8?q?etingMax=20set=20to=20unlimited=20errors=20out=20lots=20of=20th?= =?UTF-8?q?ings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 8. Hosted Organization – When creating an organization manually, the Org Name is taken as the first accepted domain for exchange, if this org name is not a domain it creates the org incorrectly. This should take normal names and not take this as a domain name for the accepted list, we have a good use for non-domain org names --- .../OrganizationProxy.cs | 109 +++++++++++++++--- .../HostedSolution/OrganizationController.cs | 10 +- .../WebsitePanel.EnterpriseServer/Web.config | 5 +- .../esOrganizations.asmx.cs | 4 +- .../Lync2010.cs | 3 +- .../OrganizationCreateOrganization.ascx.resx | 3 + .../ExchangeAddDomainName.ascx.cs | 15 ++- .../OrganizationCreateOrganization.ascx | 6 + .../OrganizationCreateOrganization.ascx.cs | 44 ++++++- ...izationCreateOrganization.ascx.designer.cs | 27 +++-- .../WebsitePanel/UserCreateSpace.ascx.cs | 2 +- WebsitePanel/Sources/generate_es_proxies.bat | 8 +- 12 files changed, 193 insertions(+), 43 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs index 8cf5ab0d..fe8a4b6e 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs @@ -54,6 +54,7 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { using WebsitePanel.Providers.ResultObjects; + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] @@ -85,6 +86,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; @@ -145,6 +148,9 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { /// public event AddOrganizationDomainCompletedEventHandler AddOrganizationDomainCompleted; + /// + public event ChangeOrganizationDomainTypeCompletedEventHandler ChangeOrganizationDomainTypeCompleted; + /// public event GetOrganizationDomainsCompletedEventHandler GetOrganizationDomainsCompleted; @@ -180,20 +186,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 +211,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 +695,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) { @@ -735,17 +791,6 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { domainId}); return ((int)(results[0])); } - - /// - [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 BeginDeleteOrganizationDomain(int itemId, int domainId, System.AsyncCallback callback, object asyncState) { @@ -1721,6 +1766,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); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 13057b80..e86c6d8d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -281,7 +281,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 +291,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 +312,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)) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 7419631a..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,8 @@ --> - + + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs index f81ad8cf..38acbebf 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); } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs index 21887292..26c14e00 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs @@ -199,7 +199,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); 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..0f6fe988 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 @@ -156,4 +156,7 @@ * + + Domain Name: + \ No newline at end of file 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 cbdb9b0a..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,7 +42,16 @@ 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) { 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().ToLower(), txtOrganizationName.Text.Trim().ToLower()); + 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..9aca7c7a 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 @@ -120,6 +120,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 +155,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/UserCreateSpace.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs index ddd4a058..bfec236e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs @@ -171,7 +171,7 @@ namespace WebsitePanel.Portal if (user.Role != UserRole.Reseller) { - ES.Services.Organizations.CreateOrganization(result.Result, domainName.ToLower(), domainName.ToLower()); + ES.Services.Organizations.CreateOrganization(result.Result, domainName.ToLower(), domainName.ToLower(), domainName.ToLower()); if (result.Result < 0) { 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 From b9161581b002fb570b399e31e99bcf769253d145 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 19 Oct 2012 10:44:21 +0400 Subject: [PATCH 188/379] Fixed: Domain Aliases removed from SpaceQuota from Fixed: Alignment of "Create Website" check box on AddDomains Fixed: Lync Organization Creation remote access and enterprise voice properties not properly set --- .../Code/HostedSolution/LyncController.cs | 23 +++++++++++---- .../WebsitePanel.EnterpriseServer.csproj | 4 +++ .../WebsitePanel/DomainsAddDomain.ascx | 14 ++++------ .../DomainsAddDomain.ascx.designer.cs | 28 ------------------- .../WebsitePanel/SpaceQuotas.ascx | 2 ++ .../WebsitePanel/SpaceQuotas.ascx.cs | 2 +- .../WebsitePanel/SpaceQuotas.ascx.designer.cs | 28 ------------------- 7 files changed, 30 insertions(+), 71 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs index d1ff3d37..012946e5 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)) { @@ -837,8 +837,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)) { @@ -851,7 +851,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/WebsitePanel.EnterpriseServer.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj index 52285130..daa3547c 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 + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx index 5addb5b8..3632e3db 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx @@ -36,16 +36,12 @@
+
+
+ Description... +
+ - - - - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.cs index 3099eae0..5dc822e6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.cs @@ -57,7 +57,7 @@ namespace WebsitePanel.Portal { "quotaBandwidth", "pnlBandwidth" }, { "quotaDomains", "pnlDomains" }, { "quotaSubDomains", "pnlSubDomains" }, - { "quotaDomainPointers", "pnlDomainPointers" }, + //{ "quotaDomainPointers", "pnlDomainPointers" }, { "quotaOrganizations", "pnlOrganizations" }, { "quotaUserAccounts", "pnlUserAccounts" }, { "quotaMailAccounts", "pnlMailAccounts" }, diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs index e699da6f..3d49896c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs @@ -1,31 +1,3 @@ -// 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. From fce709e9ba971f9faffda47cb5e3dab943676e7d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 19 Oct 2012 06:52:51 -0400 Subject: [PATCH 189/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++-------- .../DomainsAddDomain.ascx.designer.cs | 28 +++++++++++++++++++ ...izationCreateOrganization.ascx.designer.cs | 28 +++++++++++++++++++ .../WebsitePanel/SpaceQuotas.ascx.designer.cs | 28 +++++++++++++++++++ 4 files changed, 87 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + 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 bfd6a8b4..2f7dfd8c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.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/ExchangeServer/OrganizationCreateOrganization.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx.designer.cs index 9aca7c7a..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. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs index 3d49896c..e699da6f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.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. From 1a22126766917ec88700c0f1f65bb405ae076774 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 19 Oct 2012 07:02:56 -0400 Subject: [PATCH 190/379] Added tag build-2.0.0.116 for changeset b202bd71b0d8 From adb06fc9055b6037a468569f94410c89d3f7b0b8 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 20 Oct 2012 11:52:34 +0400 Subject: [PATCH 191/379] Added: add a new domain to an existing website, not just create a new website. --- .../DomainsAddDomain.ascx.resx | 2 +- .../DomainsAddDomainSelectType.ascx.resx | 6 +-- .../WebsitePanel/DomainsAddDomain.ascx | 19 ++++--- .../WebsitePanel/DomainsAddDomain.ascx.cs | 49 +++++++++++++++---- .../DomainsAddDomain.ascx.designer.cs | 27 ++++++++++ 5 files changed, 81 insertions(+), 22 deletions(-) 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 537240f1..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 @@ -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. 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/DomainsAddDomain.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx index 3632e3db..b84c69b0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx @@ -40,15 +40,18 @@
Description...
+
+ + +
+ -
-
-
- Description... -
-
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 2f7dfd8c..bfd6a8b4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs @@ -1,31 +1,3 @@ -// 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/SpaceQuotas.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx index e24a9891..70a6bb26 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx @@ -22,10 +22,12 @@
- - - -
- - -
+ +
+
+ +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs index 541cc0bf..ff7be2f4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs @@ -99,19 +99,40 @@ 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].QuotaAllocatedValue == 0)) && !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)) @@ -184,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].QuotaAllocatedValue == 0)) + { + 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.ToLower(), type, CreateWebSite.Checked, pointWebSiteId, pointMailDomainId, - EnableDns.Checked, CreateInstantAlias.Checked, AllowSubDomains.Checked, txtHostName.Text); + EnableDns.Checked, CreateInstantAlias.Checked, AllowSubDomains.Checked, (PointWebSite.Checked && WebSitesList.Items.Count > 0) ? string.Empty : txtHostName.Text); 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 bfd6a8b4..0b33b63b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs @@ -174,6 +174,33 @@ namespace WebsitePanel.Portal { /// 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. /// From 2922886ded5c2c91883aefa45fafccfba7018e6d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 08:20:20 -0400 Subject: [PATCH 192/379] Added tag build-2.0.0.117 for changeset d4ddfa5a2568 From 755cb84da426facb56315fdf9d14cac7247798a9 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 20 Oct 2012 20:46:59 +0400 Subject: [PATCH 193/379] Fixed: When creating a domain and binding it as a pointer, global dns record to be used as template for pointer creation --- .../Code/Servers/ServerController.cs | 2 +- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index b7c1e49c..99c9d599 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -1763,7 +1763,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 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + From f59c392583386e91595295083c1004ebb575ea43 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 13:05:30 -0400 Subject: [PATCH 194/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 62cca516f808e5df81e2f9975bcb6eb1d6dc21de Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 13:12:11 -0400 Subject: [PATCH 195/379] Added tag build-2.0.0.118 for changeset 645b5cb63648 From e06f058382eadd8c87cae9ba53afbeced95e7f23 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 13:17:23 -0400 Subject: [PATCH 196/379] Added tag build-2.0.0.119 for changeset f439741d2ff0 From 16c40cf9acfdca9f1b06f9d0b187a076efecce0e Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 20 Oct 2012 21:22:36 +0400 Subject: [PATCH 197/379] Added: Company Name added to search capabilities on user customer page --- .../App_LocalResources/UserCustomersSummary.ascx.resx | 7 +++++-- .../DesktopModules/WebsitePanel/UserCustomersSummary.ascx | 1 + .../WebsitePanel/UserCustomersSummary.ascx.designer.cs | 3 +-- 3 files changed, 7 insertions(+), 4 deletions(-) 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/UserCustomersSummary.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx index e0a05519..fe1a5b17 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx @@ -12,6 +12,7 @@ Username E-mail FullName + CompanyName diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx.designer.cs index 676c50a1..7da2f54e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx.designer.cs @@ -1,10 +1,9 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.3053 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ From bf180d7fdc651dded8a800b1a3d2e2c821bba372 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 14:34:12 -0400 Subject: [PATCH 198/379] Added tag build-2.0.0.121 for changeset 912efeb854c9 From 317653269f86ae3486541357a7900aa11bb4d5ec Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 20 Oct 2012 22:49:19 +0400 Subject: [PATCH 199/379] Fixed: Lync unable to delete federation domain Adjusted: certain input items forced to lower case --- .../Lync2010.cs | 18 ++++++++++++++++-- .../WebsitePanel/DomainsAddDomain.ascx.cs | 2 +- .../ExchangeMailboxEmailAddresses.ascx.cs | 2 +- .../OrganizationCreateUser.ascx.cs | 4 ++-- .../WebsitePanel/WebSitesAddPointer.ascx.cs | 2 +- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs index 26c14e00..09968caf 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs @@ -162,6 +162,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); @@ -839,6 +840,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 { @@ -926,9 +930,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.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs index ff7be2f4..4a2dab6d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs @@ -225,7 +225,7 @@ namespace WebsitePanel.Portal { domainId = ES.Services.Servers.AddDomainWithProvisioning(PanelSecurity.PackageId, domainName.ToLower(), type, CreateWebSite.Checked, pointWebSiteId, pointMailDomainId, - EnableDns.Checked, CreateInstantAlias.Checked, AllowSubDomains.Checked, (PointWebSite.Checked && WebSitesList.Items.Count > 0) ? string.Empty : txtHostName.Text); + 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/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.cs index eb6eb688..816e6d19 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) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.cs index 245da91f..cf72b9c8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.cs @@ -92,8 +92,8 @@ namespace WebsitePanel.Portal.HostedSolution try { int accountId = ES.Services.Organizations.CreateUser(PanelRequest.ItemID, txtDisplayName.Text.Trim(), - email.AccountName, - email.DomainName, + email.AccountName.ToLower(), + email.DomainName.ToLower(), password.Password, txtSubscriberNumber.Text.Trim(), false, diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.cs index 1c139793..42038324 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx.cs @@ -67,7 +67,7 @@ namespace WebsitePanel.Portal { try { - int result = ES.Services.WebServers.AddWebSitePointer(PanelRequest.ItemID, txtHostName.Text, domainsSelectDomainControl.DomainId); + int result = ES.Services.WebServers.AddWebSitePointer(PanelRequest.ItemID, txtHostName.Text.ToLower(), domainsSelectDomainControl.DomainId); if (result < 0) { ShowResultMessage(result); From cbc04872214465d7a014e89f4102ef3f6aef5e74 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 16:49:57 -0400 Subject: [PATCH 200/379] Added tag build-2.0.0.122 for changeset 17f3839ef373 From ee6923aee8b367356315118cb7c59d2c20833cce Mon Sep 17 00:00:00 2001 From: Christopher York Date: Sat, 20 Oct 2012 16:33:12 -0500 Subject: [PATCH 201/379] [ip] variable replacer fixed --- .../Code/DnsServers/DnsServerController.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs index 4dd29dc7..2bb662ee 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs @@ -281,6 +281,9 @@ namespace WebsitePanel.EnterpriseServer foreach (GlobalDnsRecord record in records) { + if (String.IsNullOrEmpty(serviceIP) && String.IsNullOrEmpty(record.ExternalIP)) + continue; + DnsRecord rr = new DnsRecord(); rr.RecordType = (DnsRecordType)Enum.Parse(typeof(DnsRecordType), record.RecordType, true); rr.RecordName = Utils.ReplaceStringVariable(record.RecordName, "host_name", hostName, true); From 3689584b7f56a2cf6d151141f4150f3dba79ebda Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 18:36:29 -0400 Subject: [PATCH 202/379] Added tag build-2.0.0.123 for changeset 5173178310b4 From 5b6a52544cbd2134dffed085f82b07c930ed8ad1 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 19:05:46 -0400 Subject: [PATCH 203/379] Add DNS Srv Records to SimpleDNS 5 Provider --- .../SimpleDNS5.cs | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs index d654e515..45309d39 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; @@ -190,10 +192,20 @@ namespace WebsitePanel.Providers.DNS 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; } - // - return dnsRecord; - } ///
/// Setups connection with the Simple DNS instance @@ -663,6 +675,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) From 2061e6ab6caa7fc0ba23cd3fd42e6957a7817e1b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 19:19:18 -0400 Subject: [PATCH 204/379] Updated Simple DNS 5 SRV Missing Terminator --- .../SimpleDNS5.cs | 148 +++++++++--------- 1 file changed, 75 insertions(+), 73 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs index 45309d39..1f94a189 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.DNS.SimpleDNS50/SimpleDNS5.cs @@ -99,8 +99,8 @@ namespace WebsitePanel.Providers.DNS { DnsRecordType.MX, new BuildDnsRecordDataEventHandler(BuildRecordData_MXRecord) }, // TXT { DnsRecordType.TXT, new BuildDnsRecordDataEventHandler(BuildRecordData_TXTRecord) }, - // SRV - { DnsRecordType.SRV, new BuildDnsRecordDataEventHandler(BuildRecordData_SRVRecord) }, + // SRV + { DnsRecordType.SRV, new BuildDnsRecordDataEventHandler(BuildRecordData_SRVRecord) }, }; #endregion @@ -137,77 +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; - 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; - } - - /// + 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 /// /// From a28776f9e222527c41d442a8740dc7ef9c283c6f Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 19:29:18 -0400 Subject: [PATCH 205/379] Added tag build-2.0.0.125 for changeset b4f779fd3c76 From 9ad490671d5e1f652aca1b26150e4c908a8dab75 Mon Sep 17 00:00:00 2001 From: Christopher York Date: Sat, 20 Oct 2012 18:54:33 -0500 Subject: [PATCH 206/379] Fix for previous patch for [ip] variable replace Fix should only apply to A and AAAA record values --- .../Code/DnsServers/DnsServerController.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs index 2bb662ee..85c5eb6b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs @@ -281,15 +281,16 @@ namespace WebsitePanel.EnterpriseServer foreach (GlobalDnsRecord record in records) { - if (String.IsNullOrEmpty(serviceIP) && String.IsNullOrEmpty(record.ExternalIP)) - continue; - DnsRecord rr = new DnsRecord(); rr.RecordType = (DnsRecordType)Enum.Parse(typeof(DnsRecordType), record.RecordType, true); rr.RecordName = Utils.ReplaceStringVariable(record.RecordName, "host_name", hostName, true); 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)) + continue; + rr.RecordData = String.IsNullOrEmpty(record.RecordData) ? record.ExternalIP : record.RecordData; rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "ip", string.IsNullOrEmpty(serviceIP) ? record.ExternalIP : serviceIP); @@ -322,7 +323,6 @@ namespace WebsitePanel.EnterpriseServer zoneRecords.Add(rr); } } - return zoneRecords; } From 18bd22dc1c01cc52b68e9f617d52926d2324dce6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 20 Oct 2012 20:07:52 -0400 Subject: [PATCH 207/379] Added tag build-2.0.0.126 for changeset 0e5465e3327a From b8c6bc50e4013065f9f193c7db7cfb9a6f65e711 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 21 Oct 2012 18:40:08 +0400 Subject: [PATCH 208/379] merge commit Fixed: Simple Url configuration for Lync, refactored --- .../WebsitePanel.EnterpriseServer/Web.config | 17 ++++++++++++----- .../Lync2010.cs | 5 +---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..d0debaae 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + @@ -18,8 +26,7 @@ - - + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs index 09968caf..33c56efe 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs @@ -407,7 +407,7 @@ namespace WebsitePanel.Providers.HostedSolution if (tmp.Length > 0) { string Url = SimpleUrlRoot + tmp[1]; - ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-BaseSimpleUrl", Url); + ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-BaseSimpleUrl", Url.ToLower()); } user.CommitChanges(); @@ -643,9 +643,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"); From 45ecaa9410bbdfdfbd9ea766c3a912bdc767c8c6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 21 Oct 2012 12:59:36 -0400 Subject: [PATCH 209/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index d0debaae..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + @@ -26,7 +18,8 @@ - + + From 83220532db66b45eb2526e211ca1f02fca9d0f49 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 21 Oct 2012 13:16:09 -0400 Subject: [PATCH 210/379] Added tag build-2.0.0.128 for changeset d50217e62606 From 2907c27592afb3699853a0656189194de3b937cb Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 22 Oct 2012 23:36:03 +0400 Subject: [PATCH 211/379] Fixed: Domains update routine to get aligned with 2.0 --- WebsitePanel/Database/update_db.sql | 117 +++++++----------- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++- 2 files changed, 55 insertions(+), 76 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index f53f17b4..cbfae558 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5858,86 +5858,57 @@ 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 +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 - - -BEGIN TRAN -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 WHERE DomainItemID IS NULL - -INSERT INTO #TempDomains SELECT PackageID, -ZoneItemID, -DomainName, -HostingAllowed, -WebSiteID, -IsSubDomain, -IsInstantAlias, -IsDomainPointer, -DomainItemID FROM Domains WHERE IsDomainPointer = 1 - - -UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL, DomainItemID=NULL WHERE IsDomainPointer = 1 AND DomainName IN (SELECT DomainName FROM Domains AS D WHERE -D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) -AND DomainItemID IS NULL -Group BY DOmainName -HAVING (COUNT(DomainName) = 1)) - - -INSERT INTO Domains SELECT PackageID, -ZoneItemID, -DomainName, -HostingAllowed, -WebSiteID, -NULL, -IsSubDomain, -IsInstantAlias, -IsDomainPointer, -DomainItemID - FROM #TempDomains As T WHERE DomainName IN (SELECT DomainName FROM Domains AS D WHERE -D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId ) -Group BY DOmainName -HAVING (COUNT(DomainName) = 1)) - - -UPDATE Domains SET DomainItemID = null WHERE IsDomainPointer=0 - -DROP TABLE #TempDomains -COMMIT TRAN + DROP TABLE #TempDomains +END GO diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c3c87e5 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + From 6233e5da124faa65a18fc4b478aefd14c33975d0 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 22 Oct 2012 21:57:15 -0400 Subject: [PATCH 212/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c3c87e5..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 47ba8449ad31bae3560d84ec3cfab06db112a5ae Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 22 Oct 2012 22:07:22 -0400 Subject: [PATCH 213/379] Added tag build-2.0.0.129 for changeset a443d2d3e039 From 75ca39ea5f9789ef2f9f6c892835b35b5b5d24b5 Mon Sep 17 00:00:00 2001 From: robvde Date: Wed, 24 Oct 2012 13:05:14 +0400 Subject: [PATCH 214/379] Fixed: When onboarding a tenant with resources all globaldnsrecords are interpreted and created, even when service offering is not subscribed or not used yet. Service globaldnsrecords are ignored when onboarding a tenant. Virtual Server and Server globaldnsrecords are applied when onboarding a user Service globaldns records are now applied when service is applied/activated DNS record definitions removed for those services where no globaldnsrecords are user TaskManager unhandled exception handled --- WebsitePanel/Database/update_db.sql | 132 +++++++++++- .../Code/DnsServers/DnsServerController.cs | 6 +- .../ExchangeServerController.cs | 38 +++- .../Code/HostedSolution/LyncController.cs | 12 ++ .../HostedSolution/OrganizationController.cs | 66 ++---- .../Code/MailServers/MailServerController.cs | 12 +- .../Code/Packages/PackageController.cs | 10 + .../Code/Servers/ServerController.cs | 195 ++++++++++++++++++ .../HostedSharePointServerController.cs | 54 ++--- .../Code/Tasks/TaskManager.cs | 16 +- .../Code/WebServers/WebServerController.cs | 4 +- .../WebsitePanel.EnterpriseServer/Web.config | 4 +- .../WebsitePanel/ServersEditService.ascx.cs | 18 ++ 13 files changed, 458 insertions(+), 109 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index cbfae558..d290281b 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6038,4 +6038,134 @@ SET WHERE DomainID = @DomainID RETURN -GO \ No newline at end of file +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 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs index 85c5eb6b..de9aa5fd 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs @@ -194,7 +194,7 @@ namespace WebsitePanel.EnterpriseServer return zoneItemId; } - + private static int RegisterZoneItems(int spaceId, int serviceId, string zoneName, bool primaryZone) { // zone item @@ -206,6 +206,7 @@ namespace WebsitePanel.EnterpriseServer return zoneItemId; } + public static int DeleteZone(int zoneItemId) { // delete DNS zone if applicable @@ -288,11 +289,12 @@ 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)) + 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", 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; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index c66a4b34..ad963108 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -455,6 +455,22 @@ namespace WebsitePanel.EnterpriseServer 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 // @@ -1414,7 +1430,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; } @@ -1534,6 +1559,17 @@ namespace WebsitePanel.EnterpriseServer } + //Add the service records + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.RemoveServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, ""); + } + } + + + return 0; } catch (Exception ex) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs index 012946e5..dbbdb260 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs @@ -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; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index e86c6d8d..3cf73181 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -40,6 +40,7 @@ using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.ResultObjects; using WebsitePanel.Providers.SharePoint; using WebsitePanel.Providers.Common; +using WebsitePanel.Providers.DNS; using System.IO; using System.Xml; @@ -335,6 +336,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); @@ -367,60 +379,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) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs index c4914931..89301534 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs @@ -1202,7 +1202,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 +1231,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); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs index 11336783..a77f65cd 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs @@ -468,6 +468,16 @@ namespace WebsitePanel.EnterpriseServer 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, ""); + } + } + if (createInstantAlias) ServerController.CreateDomainInstantAlias("", domainId); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index 99c9d599..baf98a47 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -38,6 +38,7 @@ using WebsitePanel.Providers.DNS; using WebsitePanel.Server; using WebsitePanel.Providers.ResultObjects; using WebsitePanel.Providers.Web; +using WebsitePanel.Providers.HostedSolution; namespace WebsitePanel.EnterpriseServer { @@ -1732,6 +1733,16 @@ 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, ""); + } + } + // add instant alias createInstantAlias &= (domainType != DomainType.DomainPointer); if (createInstantAlias) @@ -1900,6 +1911,86 @@ 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) + { + int serviceId = PackageController.GetPackageServiceId(packageId, groupName); + if (serviceId > 0) + { + List tmpZoneRecords = new List(); + List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); + + 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) + { + int serviceId = PackageController.GetPackageServiceId(packageId, groupName); + if (serviceId > 0) + { + List zoneRecords = new List(); + List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); + + 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 @@ -2159,6 +2250,110 @@ 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.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) + { + WebServerController.AddWebSitePointer(w.Id, 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) + { + WebServerController.AddWebSitePointer(w.Id, pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), ""), domain.DomainId, false, true, true); + } + } + } + + break; + } + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } + } + } + } // add web site DNS records 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/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/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 26066feb..2e3eb2b2 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -723,7 +723,7 @@ namespace WebsitePanel.EnterpriseServer foreach (DomainInfo pointer in pointers) { - ZoneInfo = ServerController.GetDomain(domain.ZoneName); + ZoneInfo = ServerController.GetDomain(pointer.ZoneName); AddWebSitePointer(siteItemId, (pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "") @@ -851,7 +851,7 @@ namespace WebsitePanel.EnterpriseServer foreach (DomainInfo pointer in pointers) { - ZoneInfo = ServerController.GetDomain(domain.ZoneName); + ZoneInfo = ServerController.GetDomain(pointer.ZoneName); AddWebSitePointer(siteItemId, (pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "") diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c3c87e5..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditService.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditService.ascx.cs index d9c63285..60fad092 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditService.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditService.ascx.cs @@ -66,6 +66,7 @@ namespace WebsitePanel.Portal BindService(); BindServiceProperties(); BindServiceQuota(); + ToggleGlobalDNS(); } } catch (Exception ex) @@ -151,6 +152,23 @@ namespace WebsitePanel.Portal ctrl.BindSettings(ConvertArrayToDictionary(settings)); } + + private void ToggleGlobalDNS() + { + DnsRecrodsPanel.Visible = DnsRecrodsHeader.Visible = ((resourceGroup.GroupName == ResourceGroups.BlackBerry) | + (resourceGroup.GroupName == ResourceGroups.OCS)| + (resourceGroup.GroupName == ResourceGroups.HostedCRM)| + (resourceGroup.GroupName == ResourceGroups.Os)| + (resourceGroup.GroupName == ResourceGroups.HostedOrganizations) | + (resourceGroup.GroupName == ResourceGroups.HostedSharePoint) | + (resourceGroup.GroupName == ResourceGroups.Mail)| + (resourceGroup.GroupName == ResourceGroups.Lync)| + (resourceGroup.GroupName == ResourceGroups.Exchange)| + (resourceGroup.GroupName == ResourceGroups.Web)| + (resourceGroup.GroupName == ResourceGroups.Dns)); + } + + private void SaveServiceProperties() { // find control From 3fd1999aa095a888c504e6967e8b6e43c4fe2a5e Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 24 Oct 2012 07:17:26 -0400 Subject: [PATCH 215/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 6455a2489e418b90b0550e3dc33a2aadc0976a27 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 24 Oct 2012 07:26:38 -0400 Subject: [PATCH 216/379] Added tag build-2.0.0.130 for changeset 2f0ffe8224a0 From eae02e25ca294a51120350225c5afa33b5c1a99f Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 25 Oct 2012 00:40:38 +0400 Subject: [PATCH 217/379] Creating a SmarterMail account for the first time does not create the MX --- .../Code/MailServers/MailServerController.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs index 89301534..946c9cbc 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs @@ -1056,6 +1056,9 @@ namespace WebsitePanel.EnterpriseServer { 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 From a4df1294b802db893777a4756ccf18d382a7703b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 24 Oct 2012 22:08:11 -0400 Subject: [PATCH 218/379] Added tag build-2.0.0.131 for changeset b07ad3c67770 From aafb82015ba9a17ca73954c1fe1456755d9f78fc Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 25 Oct 2012 13:35:07 +0400 Subject: [PATCH 219/379] Added: Support for "@" and "*" records for enabled/disable dns and ip mode switch. Only when only one site exists. Fixed: Smartermail domain retrieval to handle records with same domain name Fixed: Added not-domain dependendent services globaldnssupport upon space or domain creation --- WebsitePanel/Database/update_db.sql | 319 +++++++++-- .../ServersProxy.cs | 530 ++++++++++-------- .../Code/Data/DataProvider.cs | 13 +- .../ExchangeServerController.cs | 2 +- .../Code/MailServers/MailServerController.cs | 8 +- .../Code/Packages/PackageController.cs | 10 + .../Code/Servers/ServerController.cs | 109 +++- ...lizationServerControllerForPrivateCloud.cs | 6 +- .../Code/WebServers/WebServerController.cs | 104 +++- .../WebsitePanel.EnterpriseServer/Web.config | 14 +- .../esServers.asmx.cs | 6 + .../WebsitePanel/DomainsEditDomain.ascx.cs | 11 +- .../WebsitePanel/ServersEditService.ascx.cs | 12 +- WebsitePanel/Sources/generate_es_proxies.bat | 8 +- 14 files changed, 839 insertions(+), 313 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index d290281b..2482e5ff 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5922,42 +5922,6 @@ GO -IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetDomainByNameByPointer') -BEGIN -EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetDomainByNameByPointer] -( - @ActorID int, - @DomainName nvarchar(100), - @IsDomainPointer bit -) -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.DomainName = @DomainName - AND D.IsDomainPointer = @IsDomainPointer - AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1 -RETURN' -END -GO @@ -6169,3 +6133,286 @@ 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 \ No newline at end of file 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/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index 2673bc80..892546ea 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -785,21 +785,14 @@ 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)); - } - - public static IDataReader GetDomainByNameByPointer(int actorId, string domainName, bool isDomainPointer) - { - return SqlHelper.ExecuteReader(ConnectionString, CommandType.StoredProcedure, - ObjectQualifier + "GetDomainByNameByPointer", - new SqlParameter("@ActorId", actorId), new SqlParameter("@domainName", domainName), - new SqlParameter("@isDomainPointer", isDomainPointer)); + new SqlParameter("@SearchOnDomainPointer", searchOnDomainPointer), + new SqlParameter("@IsDomainPointer", isDomainPointer)); } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index ad963108..22be24bb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -1564,7 +1564,7 @@ namespace WebsitePanel.EnterpriseServer { if (domain.ZoneItemId != 0) { - ServerController.RemoveServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, ""); + ServerController.RemoveServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, "", false); } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs index 946c9cbc..a911b077 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/MailServers/MailServerController.cs @@ -1051,7 +1051,7 @@ 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; @@ -1065,7 +1065,7 @@ namespace WebsitePanel.EnterpriseServer 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); @@ -1164,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; @@ -1487,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/Packages/PackageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs index a77f65cd..fd61926f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs @@ -475,6 +475,16 @@ namespace WebsitePanel.EnterpriseServer { 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, ""); } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index baf98a47..3b856795 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -1651,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 @@ -1666,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; @@ -1681,17 +1684,16 @@ namespace WebsitePanel.EnterpriseServer public static DomainInfo GetDomainItem(string domainName) { - return ObjectUtils.FillObjectFromDataReader( - DataProvider.GetDomainByName(SecurityContext.User.UserId, domainName)); + return GetDomainItem(domainName, false, false); } - public static DomainInfo GetDomainItem(string domainName, bool IsDomainPointer) + + public static DomainInfo GetDomainItem(string domainName, bool searchOnDomainPointer, bool isDomainPointer) { return ObjectUtils.FillObjectFromDataReader( - DataProvider.GetDomainByNameByPointer(SecurityContext.User.UserId, domainName, IsDomainPointer)); + DataProvider.GetDomainByName(SecurityContext.User.UserId, domainName, searchOnDomainPointer, isDomainPointer)); } - public static string GetDomainAlias(int packageId, string domainName) { // load package settings @@ -1740,6 +1742,16 @@ namespace WebsitePanel.EnterpriseServer { 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, ""); } } @@ -1912,6 +1924,11 @@ namespace WebsitePanel.EnterpriseServer } 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) @@ -1919,6 +1936,19 @@ namespace WebsitePanel.EnterpriseServer 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)); @@ -1949,13 +1979,25 @@ namespace WebsitePanel.EnterpriseServer - public static void RemoveServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP) + 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)); @@ -2266,6 +2308,16 @@ namespace WebsitePanel.EnterpriseServer 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: @@ -2329,21 +2381,44 @@ namespace WebsitePanel.EnterpriseServer List sites = WebServerController.GetWebSites(domain.PackageId, false); foreach (WebSite w in sites) { - if (w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1) + if ((w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1) || + (w.SiteId.ToLower() == domain.DomainName.ToLower())) { - WebServerController.AddWebSitePointer(w.Id, w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), ""), domain.DomainId, false, true, true); + 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) + if ((pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1)|| + (pointer.DomainName.ToLower() == domain.DomainName.ToLower())) { - WebServerController.AddWebSitePointer(w.Id, pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), ""), domain.DomainId, false, true, true); + 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; } } @@ -2479,7 +2554,7 @@ namespace WebsitePanel.EnterpriseServer try { // load instant alias domain - DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName, false); + DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName, true, false); if (instantAlias == null) return 0; 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/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 2e3eb2b2..92492464 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -651,7 +651,6 @@ namespace WebsitePanel.EnterpriseServer addressId = packageIp.AddressID; } - List dnsRecords = ServerController.GetDnsRecordsByService(siteItem.ServiceId); foreach (GlobalDnsRecord d in dnsRecords) @@ -668,6 +667,8 @@ namespace WebsitePanel.EnterpriseServer try { + IPAddressInfo ip; + // remove all web site pointers DomainInfo domain = ServerController.GetDomain(siteItem.Name); DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName); @@ -709,6 +710,27 @@ namespace WebsitePanel.EnterpriseServer } + 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 item siteItem.SiteIPAddressId = addressId; PackageController.UpdatePackageItem(siteItem); @@ -731,7 +753,7 @@ namespace WebsitePanel.EnterpriseServer } // load web site IP address - IPAddressInfo ip = ServerController.GetIPAddress(siteItem.SiteIPAddressId); + ip = ServerController.GetIPAddress(siteItem.SiteIPAddressId); string ipAddr = "*"; if (ip != null) ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; @@ -748,10 +770,27 @@ namespace WebsitePanel.EnterpriseServer (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; } @@ -782,6 +821,8 @@ namespace WebsitePanel.EnterpriseServer try { + IPAddressInfo ip; + DomainInfo domain = ServerController.GetDomain(siteItem.Name); DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName); @@ -825,6 +866,27 @@ namespace WebsitePanel.EnterpriseServer } + 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); @@ -858,6 +920,26 @@ namespace WebsitePanel.EnterpriseServer , 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); + } + + return 0; } catch (Exception ex) @@ -1171,13 +1253,25 @@ namespace WebsitePanel.EnterpriseServer 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); + } + } + } return 0; } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + 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.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs index 8a03ef2a..c9a1f443 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsEditDomain.ascx.cs @@ -121,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); } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditService.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditService.ascx.cs index 60fad092..b65aa885 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditService.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditService.ascx.cs @@ -165,7 +165,17 @@ namespace WebsitePanel.Portal (resourceGroup.GroupName == ResourceGroups.Lync)| (resourceGroup.GroupName == ResourceGroups.Exchange)| (resourceGroup.GroupName == ResourceGroups.Web)| - (resourceGroup.GroupName == ResourceGroups.Dns)); + (resourceGroup.GroupName == ResourceGroups.Dns)| + (resourceGroup.GroupName == ResourceGroups.Ftp)| + (resourceGroup.GroupName == ResourceGroups.MsSql2000)| + (resourceGroup.GroupName == ResourceGroups.MsSql2005)| + (resourceGroup.GroupName == ResourceGroups.MsSql2008)| + (resourceGroup.GroupName == ResourceGroups.MsSql2012)| + (resourceGroup.GroupName == ResourceGroups.MySql4)| + (resourceGroup.GroupName == ResourceGroups.MySql5)| + (resourceGroup.GroupName == ResourceGroups.Statistics)| + (resourceGroup.GroupName == ResourceGroups.VPS)| + (resourceGroup.GroupName == ResourceGroups.VPSForPC)); } diff --git a/WebsitePanel/Sources/generate_es_proxies.bat b/WebsitePanel/Sources/generate_es_proxies.bat index 5a4fbd8d..a6c063c5 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 -%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%/esOrganizations.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient +REM %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 @@ -65,8 +65,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs REM %WSDL% %SERVER_URL%/esScheduler.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SchedulerProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SchedulerProxy.cs -REM %WSDL% %SERVER_URL%/esServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient -REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs +%WSDL% %SERVER_URL%/esServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs REM %WSDL% %SERVER_URL%/esSharePointServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SharePointServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SharePointServersProxy.cs From b19350e64da7d825c4405dc0f14511e8288a41d3 Mon Sep 17 00:00:00 2001 From: Sergey Date: Thu, 25 Oct 2012 13:10:11 +0300 Subject: [PATCH 220/379] WPI: Check if the WebDeploy is installed WPI: Check if download is completed successfully WPI: LoadUserProfile on Windows 2003 --- .../WebAppGallery/WebAppGalleryController.cs | 3 + .../WebAppGallery/GalleryApplication.cs | 1 + .../WebsitePanel.Providers.Web.IIs60/IIs60.cs | 34 +++-- .../WebsitePanel.Server/Code/WPIHelper.cs | 132 +++++++++--------- .../WebsitePanel_SharedResources.ascx.resx | 3 + .../WebApplicationGalleryInstall.ascx.cs | 6 + 6 files changed, 103 insertions(+), 76 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs index db0481d5..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); 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.Web.IIs60/IIs60.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs index 7c960f4a..4aa4e55b 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs @@ -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.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.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index d73ac512..1476f2eb 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -4627,6 +4627,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: 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) From ff5aeda5f7e6cde282297854f181903ca6530162 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 25 Oct 2012 15:28:40 +0400 Subject: [PATCH 221/379] Fixed: Web => wildcard identifiers removed from dns when deleting website when removing last website --- .../Code/WebServers/WebServerController.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 92492464..368ad65c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -604,6 +604,29 @@ namespace WebsitePanel.EnterpriseServer if(domain != null) 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); From 4e92b479c96cbc7eb5ce062a979d8b67f4e5eb37 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 25 Oct 2012 09:05:46 -0400 Subject: [PATCH 222/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 8f76b926d2bea7e59b548a38d36f61140932a4f9 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 25 Oct 2012 09:23:54 -0400 Subject: [PATCH 223/379] Added tag build-2.0.0.132 for changeset 537943c5aafe From 2f42401a737a3fca4b1c3cc6e4e4b45a1d9cc8de Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 26 Oct 2012 12:11:44 +0400 Subject: [PATCH 224/379] Added: HostHeader import. To ensure all pointers/hostheaders are within the domains table. This is mandatory to ensure a proper dns provisioning --- .../Code/Provisioning/ImportController.cs | 189 ++++++++++++------ .../Code/WebServers/WebServerController.cs | 91 +++++++++ .../WebsitePanel.EnterpriseServer/Web.config | 4 +- .../WebsitePanel_SharedResources.ascx.resx | 4 + .../WebsitePanel/SpaceImportResources.ascx | 35 +++- .../WebsitePanel/SpaceImportResources.ascx.cs | 100 ++++++++- .../SpaceImportResources.ascx.designer.cs | 44 +++- .../WebsitePanel/SpaceTools.ascx.cs | 2 +- 8 files changed, 401 insertions(+), 68 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs index 13d53b8a..7ca6f938 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 GetImportableCustomerItems(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 GetImportableCustomerItems(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/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 368ad65c..6df74480 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -3689,6 +3689,97 @@ 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; + + 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; + newDomain.IsDomainPointer = true; + 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; + + while (header.IndexOf(".") != -1) + { + header = header.Substring(header.IndexOf(".") + 1); + + foreach (DomainInfo d in domains) + { + if ((header == d.DomainName.ToLower()) && (!d.IsDomainPointer)) + { + domainId = d.DomainId; + break; + } + } + } + + return domainId; + } + + + #endregion #region IBackupController Members diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..27a5f82b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index d73ac512..49bba505 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -2118,6 +2118,10 @@ Web Site + + Web Site Host Header + + Applications Installer diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx index 812aaf2a..3f1074af 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx @@ -1,9 +1,42 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SpaceImportResources.ascx.cs" Inherits="WebsitePanel.Portal.SpaceImportResources" %> <%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> + + +
+ showexpandcollapse="true" expanddepth="0" ontreenodepopulate="tree_TreeNodePopulate" OnTreeNodeCheckChanged="tree_TreeNodeCheckChanged" > diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.cs index cf6752f6..5e2c5b07 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.cs @@ -45,6 +45,8 @@ namespace WebsitePanel.Portal { public partial class SpaceImportResources : WebsitePanelModuleBase { + private static TreeNode rootNode; + protected void Page_Load(object sender, EventArgs e) { // enable async tasks @@ -52,6 +54,8 @@ namespace WebsitePanel.Portal if (!IsPostBack) { + tree.Attributes.Add("onClick", "TreeViewCheckBoxClicked(event)"); + PrepareTree(); } } @@ -64,7 +68,7 @@ namespace WebsitePanel.Portal tree.NoExpandImageUrl = PortalUtils.GetThemedImage("empty.gif"); tree.Nodes.Clear(); - TreeNode rootNode = new TreeNode(); + rootNode = new TreeNode(); rootNode.ImageUrl = PortalUtils.GetThemedImage("folder.png"); rootNode.Text = GetLocalizedString("Text.Resources"); rootNode.Value = "Root"; @@ -72,16 +76,28 @@ namespace WebsitePanel.Portal tree.Nodes.Add(rootNode); // populate root node + TreeNode node; ServiceProviderItemType[] types = ES.Services.Import.GetImportableItemTypes(PanelSecurity.PackageId); foreach (ServiceProviderItemType type in types) { - TreeNode node = new TreeNode(); + node = new TreeNode(); node.Value = "-" + type.ItemTypeId.ToString(); node.Text = GetSharedLocalizedString("ServiceItemType." + type.DisplayName); node.PopulateOnDemand = true; node.ImageUrl = PortalUtils.GetThemedImage("folder.png"); rootNode.ChildNodes.Add(node); } + + // Add Import HostHeaders + node = new TreeNode(); + node.Value = "+100"; + node.Text = GetSharedLocalizedString("ServiceItemType.HostHeader"); + node.PopulateOnDemand = true; + node.ImageUrl = PortalUtils.GetThemedImage("folder.png"); + rootNode.ChildNodes.Add(node); + + + } protected void tree_TreeNodePopulate(object sender, TreeNodeEventArgs e) @@ -100,6 +116,58 @@ namespace WebsitePanel.Portal e.Node.ChildNodes.Add(node); } } + + if (e.Node.Value.StartsWith("+")) + { + int itemTypeId = Utils.ParseInt(e.Node.Value.Substring(1), 0); + string[] items = ES.Services.Import.GetImportableItems(PanelSecurity.PackageId, itemTypeId * -1); + + switch (itemTypeId) + { + case 100: + + TreeNode headerNode = new TreeNode(); + headerNode.Text = GetSharedLocalizedString("ServiceItemType.HostHeader"); + headerNode.Value = "+" + itemTypeId.ToString(); + headerNode.ShowCheckBox = true; + e.Node.ChildNodes.Add(headerNode); + + foreach (string item in items) + { + string[] objectData = item.Split('|'); + + TreeNode userNode = null; + foreach (TreeNode n in headerNode.ChildNodes) + { + if (n.Value == "+" + itemTypeId.ToString() + "|" + objectData[1]) ; + { + userNode = n; + break; + } + } + + if (userNode == null) + { + userNode = new TreeNode(); + userNode.Text = objectData[0]; + userNode.Value = "+" + itemTypeId.ToString() + "|" + objectData[1]; + userNode.ShowCheckBox = true; + headerNode.ChildNodes.Add(userNode); + } + + TreeNode siteNode = new TreeNode(); + siteNode.Text = objectData[3]; + siteNode.Value = "+" + itemTypeId.ToString() + "|" + item; + siteNode.ShowCheckBox = true; + userNode.ChildNodes.Add(siteNode); + + headerNode.Expand(); + } + break; + } + + } + } protected void btnImport_Click(object sender, EventArgs e) @@ -142,5 +210,33 @@ namespace WebsitePanel.Portal { RedirectSpaceHomePage(); } + + + void checkChildNodes(TreeNodeCollection ptnChildren, bool isChecked) + { + foreach (TreeNode childNode in ptnChildren) + { + childNode.Checked = isChecked; + + + if (childNode.ChildNodes.Count > 0) + { + this.checkChildNodes(childNode.ChildNodes, isChecked); + } + } + } + + protected void tree_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e) + { + foreach (TreeNode childNode in e.Node.ChildNodes) + { + childNode.Checked = e.Node.Checked; + + if (childNode.ChildNodes.Count > 0) + { + this.checkChildNodes(childNode.ChildNodes, e.Node.Checked); + } + } + } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.designer.cs index 306b3112..d0b42d71 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.designer.cs @@ -1,19 +1,51 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.42 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ namespace WebsitePanel.Portal { + public partial class SpaceImportResources { - protected WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; - protected System.Web.UI.WebControls.TreeView tree; - protected System.Web.UI.WebControls.Button btnImport; - protected System.Web.UI.WebControls.Button btnCancel; + + /// + /// asyncTasks control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; + + /// + /// tree control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TreeView tree; + + /// + /// btnImport control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnImport; + + /// + /// 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/SpaceTools.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceTools.ascx.cs index 45c708bf..00027267 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceTools.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceTools.ascx.cs @@ -50,7 +50,7 @@ namespace WebsitePanel.Portal lnkImportResources.NavigateUrl = EditUrl(PortalUtils.SPACE_ID_PARAM, PanelSecurity.PackageId.ToString(), "import"); lnkBackup.Visible = lnkRestore.Visible = PortalUtils.PageExists("Backup"); - lnkImportResources.Visible = (PanelSecurity.PackageId > 1 && + lnkImportResources.Visible = (PanelSecurity.PackageId >= 1 && PanelSecurity.LoggedUser.Role == UserRole.Administrator); if (PanelSecurity.SelectedUser.RoleId.Equals(1)) From 8ed07a507d287a9b2f606bc3c13db9e4e93d6d15 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 26 Oct 2012 12:47:34 +0400 Subject: [PATCH 225/379] Fixed: Typo in import procedure --- .../Code/Provisioning/ImportController.cs | 4 ++-- .../Sources/WebsitePanel.EnterpriseServer/Web.config | 4 ++-- .../WebsitePanel/SpaceImportResources.ascx.cs | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs index 7ca6f938..fef786d4 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Provisioning/ImportController.cs @@ -136,7 +136,7 @@ namespace WebsitePanel.EnterpriseServer catch { /* do nothing */ } } else - return GetImportableCustomerItems(packageId, itemTypeId); + return GetImportableCustomItems(packageId, itemTypeId); return items; } @@ -278,7 +278,7 @@ namespace WebsitePanel.EnterpriseServer return 0; } - private static List GetImportableCustomerItems(int packageId, int itemTypeId) + private static List GetImportableCustomItems(int packageId, int itemTypeId) { List items = new List(); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 27a5f82b..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.cs index 5e2c5b07..a6f55326 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.cs @@ -139,7 +139,7 @@ namespace WebsitePanel.Portal TreeNode userNode = null; foreach (TreeNode n in headerNode.ChildNodes) { - if (n.Value == "+" + itemTypeId.ToString() + "|" + objectData[1]) ; + if (n.Value == "+" + itemTypeId.ToString() + "|" + objectData[1]) { userNode = n; break; @@ -160,9 +160,9 @@ namespace WebsitePanel.Portal siteNode.Value = "+" + itemTypeId.ToString() + "|" + item; siteNode.ShowCheckBox = true; userNode.ChildNodes.Add(siteNode); - - headerNode.Expand(); } + + headerNode.Expand(); break; } From 39424a4a4adbd92bab4e5c77a32686cbbd60f630 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 26 Oct 2012 08:22:02 -0400 Subject: [PATCH 226/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++-------- .../SpaceImportResources.ascx.designer.cs | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.designer.cs index d0b42d71..10396736 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceImportResources.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. From b22d3e9f40c2d196ae999d55cd052f4696e8a1e0 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 26 Oct 2012 08:37:51 -0400 Subject: [PATCH 227/379] Added tag build-2.0.0.133 for changeset ee622f63e097 From ed235b6ddedffe38be7ca97f2d0babe032e0bbc3 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 26 Oct 2012 15:27:24 -0400 Subject: [PATCH 228/379] Added tag build-2.0.0.134 for changeset 44079fc30df0 From d4d51eeb0953d9a622df949aec721e294ead7232 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 26 Oct 2012 15:46:42 -0400 Subject: [PATCH 229/379] Added tag build-2.0.0.135 for changeset e61f7e71c9e2 From 0d0b1d2ff80ed656b5f04851321d8c230501b640 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 26 Oct 2012 16:12:21 -0400 Subject: [PATCH 230/379] Added tag build-2.0.0.137 for changeset a219109dad67 From ace6802ceefdd678d897429a384a8abc70e6a9a3 Mon Sep 17 00:00:00 2001 From: feodor_fitsner Date: Fri, 26 Oct 2012 14:33:55 -0700 Subject: [PATCH 231/379] Zip task in build.xml replaced with VB script --- WebsitePanel/build.xml | 36 ++++++++++++-- WebsitePanel/zip.vbs | 104 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 WebsitePanel/zip.vbs diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index 14465a74..5683b5c2 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -559,12 +559,14 @@ + @@ -573,18 +575,26 @@ - + + + + + + + - + + + + + + + - + + + + + + + + diff --git a/WebsitePanel/zip.vbs b/WebsitePanel/zip.vbs new file mode 100644 index 00000000..3cf0711b --- /dev/null +++ b/WebsitePanel/zip.vbs @@ -0,0 +1,104 @@ +If WScript.Arguments.Count <> 2 Then + WScript.Echo "Usage: cscript zip.vbs " +Else + CreateZip WScript.Arguments(0), WScript.Arguments(1) +End If + +Sub NewZip(pathToZipFile) + + 'WScript.Echo "Newing up a zip file (" & pathToZipFile & ") " + + Dim fso + Set fso = CreateObject("Scripting.FileSystemObject") + Dim file + Set file = fso.CreateTextFile(pathToZipFile) + + file.Write Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, 0) + + file.Close + Set fso = Nothing + Set file = Nothing + + WScript.Sleep 500 + +End Sub + +Sub CreateZip(pathToZipFile, dirToZip) + + 'WScript.Echo "Creating zip (" & pathToZipFile & ") from (" & dirToZip & ")" + + Dim fso + Set fso= Wscript.CreateObject("Scripting.FileSystemObject") + + pathToZipFile = fso.GetAbsolutePathName(pathToZipFile) + dirToZip = fso.GetAbsolutePathName(dirToZip) + + If fso.FileExists(pathToZipFile) Then + 'WScript.Echo "That zip file already exists - deleting it." + fso.DeleteFile pathToZipFile + End If + + If Not fso.FolderExists(dirToZip) Then + 'WScript.Echo "The directory to zip does not exist." + Exit Sub + End If + + NewZip pathToZipFile + + dim sa + set sa = CreateObject("Shell.Application") + + Dim zip + Set zip = sa.NameSpace(pathToZipFile) + + 'WScript.Echo "opening dir (" & dirToZip & ")" + + Dim d + Set d = sa.NameSpace(dirToZip) + + ' Look at http://msdn.microsoft.com/en-us/library/bb787866(VS.85).aspx + ' for more information about the CopyHere function. + zip.CopyHere d.items, 4 + + Do Until d.Items.Count <= zip.Items.Count + Wscript.Sleep(200) + Loop + +End Sub + +Sub ExtractFilesFromZip(pathToZipFile, dirToExtractFiles) + + Dim fso + Set fso = CreateObject("Scripting.FileSystemObject") + + pathToZipFile = fso.GetAbsolutePathName(pathToZipFile) + dirToExtractFiles = fso.GetAbsolutePathName(dirToExtractFiles) + + If (Not fso.FileExists(pathToZipFile)) Then + WScript.Echo "Zip file does not exist: " & pathToZipFile + Exit Sub + End If + + If Not fso.FolderExists(dirToExtractFiles) Then + WScript.Echo "Directory does not exist: " & dirToExtractFiles + Exit Sub + End If + + dim sa + set sa = CreateObject("Shell.Application") + + Dim zip + Set zip = sa.NameSpace(pathToZipFile) + + Dim d + Set d = sa.NameSpace(dirToExtractFiles) + + ' Look at http://msdn.microsoft.com/en-us/library/bb787866(VS.85).aspx + ' for more information about the CopyHere function. + d.CopyHere zip.items, 4 + + Do Until zip.Items.Count <= d.Items.Count + Wscript.Sleep(200) + Loop + +End Sub \ No newline at end of file From 6cc1f1e8cc1e4b8715242b72cf6d50864f66fb22 Mon Sep 17 00:00:00 2001 From: feodor_fitsner Date: Fri, 26 Oct 2012 15:31:39 -0700 Subject: [PATCH 232/379] Zip utility changed to 7z --- WebsitePanel/build.xml | 31 ++++++------ WebsitePanel/zip.vbs | 104 ----------------------------------------- 2 files changed, 16 insertions(+), 119 deletions(-) delete mode 100644 WebsitePanel/zip.vbs diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index 5683b5c2..ec9ee300 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -20,6 +20,7 @@ $(TrunkFolder)\Tools\Diff.exe "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe" -S (local)\SQLEXPRESS -E + "C:\Program Files\7-Zip\7z.exe" "$(ProgramFiles)\IIS\Microsoft Web Deploy\msdeploy.exe" "$(ProgramFiles)\IIS\Microsoft Web Deploy V3\msdeploy.exe" @@ -588,10 +589,10 @@ --> - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + diff --git a/WebsitePanel/zip.vbs b/WebsitePanel/zip.vbs deleted file mode 100644 index 3cf0711b..00000000 --- a/WebsitePanel/zip.vbs +++ /dev/null @@ -1,104 +0,0 @@ -If WScript.Arguments.Count <> 2 Then - WScript.Echo "Usage: cscript zip.vbs " -Else - CreateZip WScript.Arguments(0), WScript.Arguments(1) -End If - -Sub NewZip(pathToZipFile) - - 'WScript.Echo "Newing up a zip file (" & pathToZipFile & ") " - - Dim fso - Set fso = CreateObject("Scripting.FileSystemObject") - Dim file - Set file = fso.CreateTextFile(pathToZipFile) - - file.Write Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, 0) - - file.Close - Set fso = Nothing - Set file = Nothing - - WScript.Sleep 500 - -End Sub - -Sub CreateZip(pathToZipFile, dirToZip) - - 'WScript.Echo "Creating zip (" & pathToZipFile & ") from (" & dirToZip & ")" - - Dim fso - Set fso= Wscript.CreateObject("Scripting.FileSystemObject") - - pathToZipFile = fso.GetAbsolutePathName(pathToZipFile) - dirToZip = fso.GetAbsolutePathName(dirToZip) - - If fso.FileExists(pathToZipFile) Then - 'WScript.Echo "That zip file already exists - deleting it." - fso.DeleteFile pathToZipFile - End If - - If Not fso.FolderExists(dirToZip) Then - 'WScript.Echo "The directory to zip does not exist." - Exit Sub - End If - - NewZip pathToZipFile - - dim sa - set sa = CreateObject("Shell.Application") - - Dim zip - Set zip = sa.NameSpace(pathToZipFile) - - 'WScript.Echo "opening dir (" & dirToZip & ")" - - Dim d - Set d = sa.NameSpace(dirToZip) - - ' Look at http://msdn.microsoft.com/en-us/library/bb787866(VS.85).aspx - ' for more information about the CopyHere function. - zip.CopyHere d.items, 4 - - Do Until d.Items.Count <= zip.Items.Count - Wscript.Sleep(200) - Loop - -End Sub - -Sub ExtractFilesFromZip(pathToZipFile, dirToExtractFiles) - - Dim fso - Set fso = CreateObject("Scripting.FileSystemObject") - - pathToZipFile = fso.GetAbsolutePathName(pathToZipFile) - dirToExtractFiles = fso.GetAbsolutePathName(dirToExtractFiles) - - If (Not fso.FileExists(pathToZipFile)) Then - WScript.Echo "Zip file does not exist: " & pathToZipFile - Exit Sub - End If - - If Not fso.FolderExists(dirToExtractFiles) Then - WScript.Echo "Directory does not exist: " & dirToExtractFiles - Exit Sub - End If - - dim sa - set sa = CreateObject("Shell.Application") - - Dim zip - Set zip = sa.NameSpace(pathToZipFile) - - Dim d - Set d = sa.NameSpace(dirToExtractFiles) - - ' Look at http://msdn.microsoft.com/en-us/library/bb787866(VS.85).aspx - ' for more information about the CopyHere function. - d.CopyHere zip.items, 4 - - Do Until zip.Items.Count <= d.Items.Count - Wscript.Sleep(200) - Loop - -End Sub \ No newline at end of file From 73a4c53cd5646ea4c99024a5ad8b283593f0f717 Mon Sep 17 00:00:00 2001 From: feodor_fitsner Date: Fri, 26 Oct 2012 16:35:10 -0700 Subject: [PATCH 233/379] Wrong zip names fixed. --- WebsitePanel/build.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index ec9ee300..eb4129a0 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -627,12 +627,12 @@ --> - - - - - - + + + + + + From d1beebf32a5bc9927182fdd8b8330ff92428ad44 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 26 Oct 2012 20:04:50 -0400 Subject: [PATCH 234/379] Fix Tools Upload --- WebsitePanel/build.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index eb4129a0..c138cd72 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -627,12 +627,12 @@ --> - - - - - - + + + + + + From 50f0d4f2c03244fc90438f5762cdebb914e10d86 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 26 Oct 2012 20:15:21 -0400 Subject: [PATCH 235/379] Added tag build-2.0.0.141 for changeset abc0e1430995 From d38f6180721d004f565eddaa44f93633618c4c7c Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 27 Oct 2012 22:28:22 +0400 Subject: [PATCH 236/379] Server component fails to install with ASPNET 4.5: Verification for ASP.NET 4.5 updated --- .../WebsitePanel.Setup/Wizard/ConfigurationCheckPage.cs | 4 ++++ 1 file changed, 4 insertions(+) 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; } } From 98bab06e96db034029da47fe2a52d1ad724d57c3 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 27 Oct 2012 19:43:47 -0400 Subject: [PATCH 237/379] Added tag build-2.0.0.142 for changeset 1f0ea8a82ca2 From 2a7d298dfc02e338fae69476d45ed1acdba0ab83 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 28 Oct 2012 23:28:22 +0400 Subject: [PATCH 238/379] exchange 2013 provider id added --- .../WebsitePanel.EnterpriseServer/Web.config | 10 +++++++--- .../ProviderControls/Exchange_Settings.ascx.cs | 13 ++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..97a76d2a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,15 @@ - + - - + + + 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..a5e829c2 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 const int EXCHANGE2013_PROVIDER_ID = 91; public string HubTransports { @@ -101,6 +102,16 @@ namespace WebsitePanel.Portal.ProviderControls locMailboxDatabase.Visible = false; break; + case EXCHANGE2013_PROVIDER_ID: + clusteredMailboxServer.Visible = false; + txtMailboxClusterName.Text = ""; + + storageGroup.Visible = false; + txtStorageGroup.Text = ""; + + locMailboxDatabase.Visible = false; + break; + default: storageGroup.Visible = true; From 41ab5f43462e7ef23145acece3650a9de251b64a Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 29 Oct 2012 08:30:11 +0400 Subject: [PATCH 239/379] Fixed: HostHeaders are not registered as domainpointer when importing --- .../Code/WebServers/WebServerController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 6df74480..5b29543a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -3716,6 +3716,7 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and 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) @@ -3726,7 +3727,6 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and newDomain.WebSiteId = siteId; newDomain.ZoneItemId = domain.ZoneItemId; newDomain.DomainItemId = domain.DomainId; - newDomain.IsDomainPointer = true; ServerController.UpdateDomain(newDomain); } } From 1d3c5a8a2982d4367b676b33284b3a68df88472d Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 29 Oct 2012 15:05:28 +0400 Subject: [PATCH 240/379] Undo 2013 preparation --- .../ProviderControls/Exchange_Settings.ascx.cs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) 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 a5e829c2..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 @@ -43,7 +43,7 @@ namespace WebsitePanel.Portal.ProviderControls public const int EXCHANGE2010_PROVIDER_ID = 32; public const int EXCHANGE2010SP2_PROVIDER_ID = 90; - public const int EXCHANGE2013_PROVIDER_ID = 91; + public string HubTransports { @@ -102,17 +102,6 @@ namespace WebsitePanel.Portal.ProviderControls locMailboxDatabase.Visible = false; break; - case EXCHANGE2013_PROVIDER_ID: - clusteredMailboxServer.Visible = false; - txtMailboxClusterName.Text = ""; - - storageGroup.Visible = false; - txtStorageGroup.Text = ""; - - locMailboxDatabase.Visible = false; - break; - - default: storageGroup.Visible = true; txtStorageGroup.Text = settings["StorageGroup"]; From 837892e68993902a8280d4f096797557176f96d4 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 29 Oct 2012 11:43:37 -0400 Subject: [PATCH 241/379] Merge --- WebsitePanel.Installer/Sources/VersionInfo.cs | 2 +- .../WebsitePanel.Installer/Updater.exe | Bin 198144 -> 198144 bytes WebsitePanel/Sources/VersionInfo.cs | 2 +- WebsitePanel/Sources/VersionInfo.vb | 2 +- .../Code/WebServers/WebServerController.cs | 12 ++++++++++++ .../WebsitePanel.EnterpriseServer/Web.config | 10 +++------- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/WebsitePanel.Installer/Sources/VersionInfo.cs b/WebsitePanel.Installer/Sources/VersionInfo.cs index ee7d4a52..bc5f49ca 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.17929 +// Runtime Version:4.0.30319.18010 // // 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/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index c3d6446396c7eebf31d450780eacc4f943ea5666..7812a3351959a200ec9db5483fc79d69acf87508 100644 GIT binary patch delta 45 zcmZqZ;c4jMnb5)Pv9znPyS1BfYd6!u0s+Ir$*m85{&Z<@fDFDZZ B6te&T delta 45 zcmZqZ;c4jMnb5(^@id~byS1BfYd6!u0)gi-@p?+rqdn#|gt;yME#$mCrjTjL6ac37 B63hSq diff --git a/WebsitePanel/Sources/VersionInfo.cs b/WebsitePanel/Sources/VersionInfo.cs index ee7d4a52..bc5f49ca 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.17929 +// Runtime Version:4.0.30319.18010 // // 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 ded96cbd..d2c94d8f 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.17929 +' Runtime Version:4.0.30319.18010 ' ' Changes to this file may cause incorrect behavior and will be lost if ' the code is regenerated. diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 5b29543a..c80f4edb 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; @@ -1213,6 +1214,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()); } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 97a76d2a..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,15 +5,11 @@ - + - - - + + From 1615095fc2322cbbd178ed7e9feb72ba83cc7431 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 29 Oct 2012 11:54:58 -0400 Subject: [PATCH 242/379] Added tag build-2.0.0.143 for changeset 2c29a2d24954 From dbab36dbd900433e71739f08531cd69edf00d521 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 29 Oct 2012 20:55:52 +0400 Subject: [PATCH 243/379] fixed hostheader import: subdomain pointer gets assigned to parent instead of subdomain --- .../Code/WebServers/WebServerController.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 5b29543a..4cc1373f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -3760,19 +3760,21 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and private static int FindDomainForHeader(string header, List domains) { int domainId = 0; - - while (header.IndexOf(".") != -1) + int counter = 0; + while ((header.IndexOf(".") != -1) & (counter < 2)) { - header = header.Substring(header.IndexOf(".") + 1); foreach (DomainInfo d in domains) { if ((header == d.DomainName.ToLower()) && (!d.IsDomainPointer)) { - domainId = d.DomainId; - break; + return d.DomainId; } } + + header = header.Substring(header.IndexOf(".") + 1); + counter++; + } return domainId; From 9dd9348dfb4778eb9626fe9283bbc6a7231256c4 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 29 Oct 2012 14:10:04 -0400 Subject: [PATCH 244/379] Added tag build-2.0.0.144 for changeset 934ebcbb6c51 From 7c85eb643f66ff9fba8d1979151fd45a4d8219c7 Mon Sep 17 00:00:00 2001 From: VoosW Date: Mon, 29 Oct 2012 19:35:27 +0100 Subject: [PATCH 245/379] change "Getdatabase" code for Exchange 2010SP2 so that it accepts a database group name of DAG\MailboxDatabase to turn off the load-balancing and instead use a fixed database. The default behaviour of load-balancing mailboxes between all Provsioning-Enabled mailbox databases of the DAG-Group is still present and functioning. --- .../Exchange2010SP2.cs | 94 ++++++++++++++----- 1 file changed, 71 insertions(+), 23 deletions(-) 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); } } } From 14dfe450ff2f6a62cf3ddbebc097eef8aa426b3b Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 30 Oct 2012 09:11:35 +0400 Subject: [PATCH 246/379] Readded the organization user summary tab --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++++++++++--- .../ExchangeServer/UserControls/UserTabs.ascx.cs | 5 ++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..27a5f82b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + 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; From 344ea5e4bd1666bf5bf6901112e548b990dc08e5 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 08:11:05 -0400 Subject: [PATCH 247/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 27a5f82b..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 4b457fc8c6dd3a7e8865dd7a98f6e7b6edd0d2ac Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 08:20:39 -0400 Subject: [PATCH 248/379] Added tag build-2.0.0.145 for changeset c0c9007136a5 From 90a746bc3c7fe52020b72a066041808834c9c95d Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 30 Oct 2012 22:30:22 +0400 Subject: [PATCH 249/379] Added: Added Lync to the Scheduled Enterprise HOsting report ReAdded: ability to send summary email when create an user account or a mailbox --- WebsitePanel/Database/update_db.sql | 10 +- .../Code/HostedSolution/LyncController.cs | 7 +- .../HostedSolution/OrganizationController.cs | 2 +- .../Code/HostedSolution/ReportController.cs | 125 ++++++++++++++++-- .../SchedulerTasks/HostedSolutionReport.cs | 10 +- .../WebsitePanel.EnterpriseServer/Web.config | 4 +- .../esLync.asmx.cs | 2 +- .../EnterpriseSolutionStatisticsReport.cs | 2 +- .../ExchangeMailboxStatistics.cs | 1 + .../ExchangeStatisticsReport.cs | 3 +- .../OrganizationStatisticsReport.cs | 4 +- .../OrganizationStatisticsRepotItem.cs | 13 ++ .../WebsitePanel.Providers.Base.csproj | 3 + .../ExchangeServer/ExchangeCreateMailbox.ascx | 10 +- .../ExchangeCreateMailbox.ascx.cs | 25 +++- .../ExchangeCreateMailbox.ascx.designer.cs | 18 +++ .../OrganizationCreateUser.ascx | 9 ++ .../OrganizationCreateUser.ascx.cs | 23 +++- .../OrganizationCreateUser.ascx.designer.cs | 18 +++ .../HostedSolutionReport.ascx.resx | 7 +- .../HostedSolutionReport.ascx | 5 + .../HostedSolutionReport.ascx.cs | 5 +- .../HostedSolutionReport.ascx.designer.cs | 12 +- 23 files changed, 278 insertions(+), 40 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 2482e5ff..4059e0db 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6415,4 +6415,12 @@ exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @Fil RETURN -GO \ No newline at end of file +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 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs index dbbdb260..b7bf20f1 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs @@ -431,7 +431,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"); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 3cf73181..d1904c88 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -517,7 +517,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) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs index 3692a9c6..fb322d30 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs @@ -123,8 +123,22 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution delegate(CRMOrganizationStatistics stats) { return stats.OrganizationID == org.OrganizationId; }); item.TotalCRMUsers = crmOrganizationStatistics.Count; + } + + 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); } @@ -308,7 +322,20 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution { TaskManager.WriteError(ex); } + } + + if (report.LyncReport != null) + { + try + { + PopulateLyncReportItems(org, report, topReseller); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } } + } private static int GetExchangeServiceID(int packageId) @@ -316,6 +343,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) @@ -422,7 +453,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 +473,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.PrimaryEmailAddress; + 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; + + } + 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 +594,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 +619,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution GetUsersData(report, user.UserId, generateExchangeReport, generateSharePointReport, generateCRMReport, generateOrganizationReport, + generateLyncReport, string.IsNullOrEmpty(topReseller) ? user.Username : topReseller); } } @@ -523,8 +629,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 +640,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/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/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 27a5f82b..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs index 9996fb3d..16c4328b 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] 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/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/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/OrganizationStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs index 3d94d8be..a6ee3d78 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs @@ -57,6 +57,8 @@ namespace WebsitePanel.Providers.HostedSolution 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.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/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index e13eb0be..f65c7c25 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -88,6 +88,9 @@ + + + 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 @@ - + + + + + +
+ +
+
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/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 @@ + + + + + + +
+ +
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/ScheduleTaskControls/App_LocalResources/HostedSolutionReport.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/HostedSolutionReport.ascx.resx index f7088cc4..211bf742 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/HostedSolutionReport.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/HostedSolutionReport.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 CRM Report @@ -123,6 +123,9 @@ Exchange Report + + Lync Report + Organization Report diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx index 58374f7b..4dd58eaa 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx @@ -19,6 +19,11 @@ + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.cs index 56ae7708..d458ebce 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.cs @@ -37,6 +37,7 @@ namespace WebsitePanel.Portal.ScheduleTaskControls 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"; @@ -51,6 +52,7 @@ namespace WebsitePanel.Portal.ScheduleTaskControls base.SetParameters(parameters); SetParameter(cbExchange, EXCHANGE_REPORT); SetParameter(cbSharePoint, SHAREPOINT_REPORT); + SetParameter(cbLync, LYNC_REPORT); SetParameter(cbCRM, CRM_REPORT); SetParameter(cbOrganization, ORGANIZATION_REPORT); SetParameter(txtMail, EMAIL); @@ -61,12 +63,13 @@ namespace WebsitePanel.Portal.ScheduleTaskControls { ScheduleTaskParameterInfo exchange = GetParameter(cbExchange, EXCHANGE_REPORT); ScheduleTaskParameterInfo sharepoint = GetParameter(cbSharePoint, SHAREPOINT_REPORT); + ScheduleTaskParameterInfo lync = GetParameter(cbLync, LYNC_REPORT); ScheduleTaskParameterInfo crm = GetParameter(cbCRM, CRM_REPORT); ScheduleTaskParameterInfo organization = GetParameter(cbOrganization, ORGANIZATION_REPORT); ScheduleTaskParameterInfo email = GetParameter(txtMail, EMAIL); - return new ScheduleTaskParameterInfo[5] { exchange, sharepoint, crm , organization, email}; + return new ScheduleTaskParameterInfo[6] { exchange, sharepoint, lync, crm , organization, email}; } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs index 7ecf5644..f2f81ab4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs @@ -1,10 +1,9 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.1433 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -49,6 +48,15 @@ namespace WebsitePanel.Portal.ScheduleTaskControls { /// protected global::System.Web.UI.WebControls.CheckBox cbSharePoint; + /// + /// cbLync control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox cbLync; + /// /// cbCRM control. /// From c6d40aedb84cf20b714716bd2a8ead0f17d5cf75 Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 30 Oct 2012 22:40:03 +0400 Subject: [PATCH 250/379] New files for lync reporting --- .../LyncOrganizationStatistics.cs | 72 +++++++++++++++++ .../HostedSolution/LyncStatisticsReport.cs | 78 +++++++++++++++++++ .../HostedSolution/LyncUserStatistics.cs | 49 ++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncOrganizationStatistics.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncUserStatistics.cs 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..f62e4def --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs @@ -0,0 +1,78 @@ +// 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.AccountCreated)); + + 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,Account Created,SipAddress,PhoneNumber,Conferencing,EnterpriseVoice,Federation,InstantMessaging,MobileAccess"); + } + } +} 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; } + } +} From daa87697937f542f5809e6e9d735b077c718c4a6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 15:39:28 -0400 Subject: [PATCH 251/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++------- .../ExchangeCreateMailbox.ascx.designer.cs | 28 +++++++++++++++++ .../OrganizationCreateUser.ascx.designer.cs | 28 +++++++++++++++++ .../HostedSolutionReport.ascx.designer.cs | 30 ++++++++++++++++++- 4 files changed, 88 insertions(+), 12 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.designer.cs index 9f748012..f58e8241 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.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/ExchangeServer/OrganizationCreateUser.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.designer.cs index c2a99a7c..c789b42f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.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/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs index f2f81ab4..926f9f18 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/HostedSolutionReport.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. // From 21021eb089534ee1092ce0c307b8b87a33cf8d2d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 15:50:21 -0400 Subject: [PATCH 252/379] Added tag build-2.0.0.146 for changeset 363922c70d7d From 0033c11d69b2c3f65b817dc9f4151dd07a51443c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 30 Oct 2012 15:54:25 -0400 Subject: [PATCH 253/379] Added tag build-2.0.0.147 for changeset e961bfc5154d From 645fa48d1ce0212ec20ce96b47dca81d120116cf Mon Sep 17 00:00:00 2001 From: robvde Date: Wed, 31 Oct 2012 10:22:51 +0400 Subject: [PATCH 254/379] Fixed: When webhosting netbios settings are empty, an attempt is made to configure a domain account. --- .../Code/WebServers/WebServerController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index ca625b5c..d16da4d3 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -2490,7 +2490,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; } @@ -3258,7 +3258,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; } From 0cf9fb13dc5157f22c7278b96d931ea4ce71b62f Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 31 Oct 2012 09:07:15 -0400 Subject: [PATCH 255/379] Added tag build-2.0.0.148 for changeset 89ac927262c0 From 343539c25e577059687dd4b94a410916534c4273 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 1 Nov 2012 09:41:10 +0400 Subject: [PATCH 256/379] Fixed: IP switch configuration made IPV6 aware Fixed: Message raised when public shared ip address is not configured when creating or switching to a site with a shared ip adddres and dns enabled. --- .../Common/BusinessErrorCodes.cs | 1 + .../Code/WebServers/WebServerController.cs | 57 +++++++++++++------ .../WebsitePanel.EnterpriseServer/Web.config | 13 ++++- .../WebsitePanel_SharedResources.ascx.resx | 3 + 4 files changed, 55 insertions(+), 19 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs index f6f8dfd8..ebe1183c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs @@ -115,6 +115,7 @@ namespace WebsitePanel.EnterpriseServer 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 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index d16da4d3..7c71cc05 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -172,15 +172,20 @@ namespace WebsitePanel.EnterpriseServer return AddWebSite(packageId, hostName, domainId, ipAddressId, false, true); } - private static Regex regIP = new Regex( - @"(?2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?2[0-4]\d|25" - + @"[0-5]|[01]?\d\d?)\.(?2[0-4]\d|25[0-5]|[01]?\d\d?)\.(?" - + @"2[0-4]\d|25[0-5]|[01]?\d\d?)", - RegexOptions.IgnoreCase - | RegexOptions.CultureInvariant - | RegexOptions.IgnorePatternWhitespace - | RegexOptions.Compiled - ); + + 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) @@ -270,14 +275,23 @@ namespace WebsitePanel.EnterpriseServer if (dedicatedIp) { - foreach (GlobalDnsRecord d in dnsRecords) + foreach (GlobalDnsRecord d in dnsRecords) { - if (!string.IsNullOrEmpty(d.ExternalIP)) - { - if (regIP.IsMatch(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; - } + 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(); @@ -681,7 +695,7 @@ namespace WebsitePanel.EnterpriseServer { if (!string.IsNullOrEmpty(d.ExternalIP)) { - if (regIP.IsMatch(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; + if (!IsValidIPAdddress(d.ExternalIP)) return BusinessErrorCodes.ERROR_GLOBALDNS_FOR_DEDICATEDIP; } } @@ -839,6 +853,8 @@ 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; @@ -853,6 +869,15 @@ namespace WebsitePanel.EnterpriseServer 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) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..9f46e263 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,12 +5,19 @@ - + + - - + + 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 c7c849f9..9df134f2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -1059,6 +1059,9 @@ 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 From 8f694e075682266b12087f8cf4a59556b303d814 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 1 Nov 2012 10:29:42 +0400 Subject: [PATCH 257/379] Fixed; HostedHeader mode disabled creates wrong bindings, dns records when creating instant alias --- .../Code/Servers/ServerController.cs | 18 +++++- .../Code/WebServers/WebServerController.cs | 57 ++++++++++++++++--- 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index 3b856795..d4836378 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -2495,10 +2495,20 @@ namespace WebsitePanel.EnterpriseServer instantAlias = GetDomainItem(instantAliasId); } + string parentZone = domain.ZoneName; + if (string.IsNullOrEmpty(parentZone)) + { + DomainInfo parentDomain = GetDomain(domain.DomainId); + parentZone = parentDomain.DomainName; + } + + if (domain.WebSiteId > 0) { WebServerController.AddWebSitePointer(domain.WebSiteId, - (domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : domain.DomainName.Replace("." + domain.ZoneName, ""), + ((domain.DomainName.Replace("." + parentZone, "") == parentZone) | + (domain.DomainName == parentZone)) + ? "" : domain.DomainName.Replace("." + parentZone, ""), instantAlias.DomainId); } @@ -2507,12 +2517,14 @@ namespace WebsitePanel.EnterpriseServer List domains = GetDomainsByDomainItemId(domain.DomainId); foreach (DomainInfo d in domains) { + if (d.WebSiteId > 0) { WebServerController.AddWebSitePointer(d.WebSiteId, - (d.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : d.DomainName.Replace("." + domain.ZoneName, ""), + ((d.DomainName.Replace("." + parentZone, "") == parentZone) | + (d.DomainName == parentZone)) + ? "" : d.DomainName.Replace("." + parentZone, ""), instantAlias.DomainId); - } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs index 7c71cc05..1590849d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebServers/WebServerController.cs @@ -709,7 +709,7 @@ namespace WebsitePanel.EnterpriseServer // remove all web site pointers DomainInfo domain = ServerController.GetDomain(siteItem.Name); - DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName); + DomainInfo ZoneInfo = ServerController.GetDomain(domain.DomainItemId); if (ZoneInfo == null) throw new Exception("Parent zone not found"); @@ -775,18 +775,38 @@ namespace WebsitePanel.EnterpriseServer // associate IP with web site ServerController.AddItemIPAddress(siteItemId, ipAddressId); - + + + string parentZone = domain.ZoneName; + if (string.IsNullOrEmpty(parentZone)) + { + DomainInfo parentDomain = ServerController.GetDomain(domain.DomainItemId); + parentZone = parentDomain.DomainName; + } + AddWebSitePointer(siteItemId, - (domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "": domain.DomainName.Replace("." + domain.ZoneName,"") + ((domain.DomainName.Replace("." + parentZone, "") == parentZone) | + (domain.DomainName == parentZone)) + ? "" : domain.DomainName.Replace("." + parentZone, "") , ZoneInfo.DomainId, true, true, true); foreach (DomainInfo pointer in pointers) { - ZoneInfo = ServerController.GetDomain(pointer.ZoneName); + 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("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "") + ((pointer.DomainName.Replace("." + pointerParentZone, "") == pointerParentZone) | + (pointer.DomainName == pointerParentZone)) + ? "" : pointer.DomainName.Replace("." + pointerParentZone, "") , ZoneInfo.DomainId, true, true, true); } @@ -864,7 +884,7 @@ namespace WebsitePanel.EnterpriseServer IPAddressInfo ip; DomainInfo domain = ServerController.GetDomain(siteItem.Name); - DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName); + DomainInfo ZoneInfo = ServerController.GetDomain(domain.DomainItemId); if (ZoneInfo == null) throw new Exception("Parent zone not found"); @@ -956,16 +976,35 @@ namespace WebsitePanel.EnterpriseServer 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("." + domain.ZoneName, "") == domain.ZoneName) ? "" : domain.DomainName.Replace("." + domain.ZoneName, "") + ((domain.DomainName.Replace("." + parentZone, "") == parentZone) | + (domain.DomainName == parentZone)) + ? "" : domain.DomainName.Replace("." + parentZone, "") , ZoneInfo.DomainId, true, true, true); foreach (DomainInfo pointer in pointers) { - ZoneInfo = ServerController.GetDomain(pointer.ZoneName); + 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("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "") + ((pointer.DomainName.Replace("." + pointerParentZone, "") == pointerParentZone) | + (pointer.DomainName == pointerParentZone)) + ? "" : pointer.DomainName.Replace("." + pointerParentZone, "") , ZoneInfo.DomainId, true, true, true); } From 11f21b1a1599b1e0413a2e4dfab6c32f04944b39 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 1 Nov 2012 10:55:46 +0400 Subject: [PATCH 258/379] Fixed: Domain Select COntrol: HideInstantAliases will not show instant aliases --- .../WebsitePanel/DomainsSelectDomainControl.ascx.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs index 5678f285..cc723f6a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs @@ -148,7 +148,8 @@ namespace WebsitePanel.Portal } } } - else if (HideInstantAlias && domain.IsInstantAlias) + + if (HideInstantAlias && domain.IsInstantAlias) continue; else if (HideMailDomains && domain.MailDomainId > 0) continue; From 74dc494734dded6a0b5337d412da807f6cca3a3d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 1 Nov 2012 08:27:44 -0400 Subject: [PATCH 259/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 9f46e263..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,12 @@ - - + + + - - From 2004476550f61ce3af854313ebc03ebdb0c57d59 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 1 Nov 2012 08:37:35 -0400 Subject: [PATCH 260/379] Added tag build-2.0.0.149 for changeset e324125e3451 From 892c5307d55b7fc048ecb8c3e1c4029488250092 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 2 Nov 2012 12:32:31 +0400 Subject: [PATCH 261/379] Added the ability to hide quotas Domain Aliases hidden from hosting plans Domain Aliases quota verification disabled --- WebsitePanel/Database/update_db.sql | 15 +++++++++++++++ .../Code/Servers/ServerController.cs | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 4059e0db..2b2e2222 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -559,6 +559,17 @@ 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='ShowGroup') +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 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') @@ -3925,6 +3936,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 @@ -6424,3 +6436,6 @@ 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 + + + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index d4836378..b1cd15f0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -1847,8 +1847,8 @@ 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 { From 9188c649794440e0671630d5c705227bf8f2ed2b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 2 Nov 2012 08:19:33 -0400 Subject: [PATCH 262/379] Added tag build-2.0.0.150 for changeset f57a16601d33 From bc8c122d8128f3ef036ce2765e1f69b5e3eeeba0 Mon Sep 17 00:00:00 2001 From: VoosW Date: Fri, 2 Nov 2012 20:18:32 +0100 Subject: [PATCH 263/379] Adapted Enterprise Importer for 2.0: samAccountName is now needed for more (all) kinds of accounts, make sure that it is imported correctly --- .../ApplicationForm.cs | 1 + .../WebsitePanel.Import.Enterprise/Global.cs | 7 +++++ .../OrganizationImporter.cs | 27 +++++++++++++------ 3 files changed, 27 insertions(+), 8 deletions(-) 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); } From d367078cc6f6f2a60c0e41aa46330be3c8e26c9b Mon Sep 17 00:00:00 2001 From: VoosW Date: Tue, 6 Nov 2012 18:39:48 +0100 Subject: [PATCH 264/379] change GetItemIdByOrganizationId to reflect change of column length in underlying table --- WebsitePanel/Database/update_db.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 2b2e2222..8d25b4dc 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6439,3 +6439,19 @@ GO +ALTER PROCEDURE [dbo].[GetItemIdByOrganizationId] + @OrganizationId nvarchar(128) +AS +BEGIN + SET NOCOUNT ON; + + SELECT + ItemID + FROM + dbo.ExchangeOrganizations + WHERE + OrganizationId = @OrganizationId +END +GO + + From 71a68cccdca0fada45aad0f58dacd0db853fc958 Mon Sep 17 00:00:00 2001 From: VoosW Date: Tue, 6 Nov 2012 18:59:11 +0100 Subject: [PATCH 265/379] also adapt intall_db.sql to reflect changed column length --- WebsitePanel/Database/install_db.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Database/install_db.sql b/WebsitePanel/Database/install_db.sql index 8eb8ed16..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; From 6c60977de5e37897236a1ce6c9fa160149fea80d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 6 Nov 2012 14:14:46 -0500 Subject: [PATCH 266/379] Added tag build-2.0.0.151 for changeset 52a719006602 From 867e6a96f2cbd8b5c994a2f415db59d49c1c2e58 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 11 Nov 2012 22:44:43 +0400 Subject: [PATCH 267/379] Update: Lync: Support for multiple sipdomains per tenant. Fixed: Hosted Organizations: user principal name updated when settings primary email address. User principal name will not change when changing the primary email address. SIP address is based on EmailAddress --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++++- .../HostedSolution/ActiveDirectoryUtils.cs | 21 +++++++ .../Exchange2007.cs | 2 +- .../Lync2010.cs | 60 ++++++++++++++++--- 4 files changed, 86 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs index 3c460dbb..ac11cdef 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs @@ -159,6 +159,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 +185,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.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index 8f2f63e1..a338e30c 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs @@ -2591,7 +2591,7 @@ 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("UserPrincipalName", primaryEmail); cmd.Parameters.Add("WindowsEmailAddress", primaryEmail); ExecuteShellCommand(runSpace, cmd); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs index 33c56efe..944788a5 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs @@ -288,11 +288,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"); @@ -383,11 +386,56 @@ 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); cmd.Parameters.Add("RegistrarPool", PoolFQDN); - cmd.Parameters.Add("SipAddressType", "UserPrincipalName"); + cmd.Parameters.Add("SipAddressType", "EmailAddress"); ExecuteShellCommand(runSpace, cmd); transaction.RegisterNewCsUser(userUpn); @@ -397,13 +445,11 @@ 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]; From 2b12a1050bc851eb9ce07cb16efc3ade4fe0f30b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 11 Nov 2012 19:45:08 -0500 Subject: [PATCH 268/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 1bb0633ad343267fab44bd4a414ce9f982f7c39e Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 11 Nov 2012 19:51:34 -0500 Subject: [PATCH 269/379] Added tag build-2.0.0.152 for changeset 4d0ce52490f8 From 228219f5c34cba687be441c8ae5ef289628389e3 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 12 Nov 2012 08:26:26 +0400 Subject: [PATCH 270/379] Fixed: Enterprise Organization Report did not show Lync user count --- .../Code/HostedSolution/ReportController.cs | 27 ++++++++++--------- .../HostedSolution/LyncStatisticsReport.cs | 3 +-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs index fb322d30..5d9861fb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs @@ -310,18 +310,6 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution { TaskManager.WriteError(ex); } - } - - if (report.OrganizationReport != null) - { - try - { - PopulateOrganizationStatisticsReport(org, report, topReseller); - } - catch(Exception ex) - { - TaskManager.WriteError(ex); - } } if (report.LyncReport != null) @@ -335,6 +323,19 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution TaskManager.WriteError(ex); } } + + if (report.OrganizationReport != null) + { + try + { + PopulateOrganizationStatisticsReport(org, report, topReseller); + } + catch(Exception ex) + { + TaskManager.WriteError(ex); + } + } + } @@ -517,7 +518,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution stats.InstantMessaing = plan.IM; stats.MobileAccess = plan.Mobility; stats.LyncUserPlan = plan.LyncUserPlanName; - + stats.DisplayName = lyncUser.DisplayName; } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs index f62e4def..104cb4a5 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/LyncStatisticsReport.cs @@ -52,7 +52,6 @@ namespace WebsitePanel.Providers.HostedSolution sb.AppendFormat("{0},", ToCsvString(item.OrganizationID)); sb.AppendFormat("{0},", ToCsvString(item.DisplayName)); - sb.AppendFormat("{0},", ToCsvString(item.AccountCreated)); sb.AppendFormat("{0},", ToCsvString(item.SipAddress)); sb.AppendFormat("{0},", ToCsvString(item.PhoneNumber)); @@ -72,7 +71,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,Organization Created,Organization ID,Display Name,Account Created,SipAddress,PhoneNumber,Conferencing,EnterpriseVoice,Federation,InstantMessaging,MobileAccess"); + 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"); } } } From cc106329a68b997128db57ce354465d199c8f49c Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 12 Nov 2012 08:50:25 +0400 Subject: [PATCH 271/379] FIXED wsp-10028 Domain Search is yielding incorrect results --- WebsitePanel/Database/update_db.sql | 140 ++++++++++++++++++ .../WebsitePanel.EnterpriseServer/Web.config | 14 +- 2 files changed, 151 insertions(+), 3 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 8d25b4dc..4b2adf86 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6455,3 +6455,143 @@ 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 \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + From db7bba2ea140cc9f1f317dd5bdc621f2808a0316 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 12 Nov 2012 13:20:20 +0400 Subject: [PATCH 272/379] Revived the ability to add a mail pointer when creating a new domain --- .../Sources/WebsitePanel.EnterpriseServer/Web.config | 4 ++-- .../DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..27a5f82b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs index 4a2dab6d..9fe39c8f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.cs @@ -106,7 +106,7 @@ namespace WebsitePanel.Portal WebSitesList.DataBind(); } - 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); @@ -135,7 +135,7 @@ namespace WebsitePanel.Portal 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; @@ -212,7 +212,7 @@ namespace WebsitePanel.Portal pointWebSiteId = Utils.ParseInt(WebSitesList.SelectedValue, 0); } - 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); From 651f129e67935670dcda203b2aec99dbd0fabd8f Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 12 Nov 2012 07:31:38 -0500 Subject: [PATCH 273/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 27a5f82b..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 25f5664b8c38076cf93a4d8648354f3994eb35bd Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 12 Nov 2012 07:38:02 -0500 Subject: [PATCH 274/379] Added tag build-2.0.0.153 for changeset 1b36399c5c0f From 14d2507925905d3e7f6124d75a661938bfdb1ecb Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 12 Nov 2012 18:21:18 +0400 Subject: [PATCH 275/379] Fixed: Enterprise Reporting : Set initial values for Lync --- .../Code/HostedSolution/ReportController.cs | 3 +++ WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs index 5d9861fb..8f3d5235 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs @@ -125,6 +125,9 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution item.TotalCRMUsers = crmOrganizationStatistics.Count; } + item.TotalLyncUsers = 0; + item.TotalLyncEVUsers = 0; + if (report.LyncReport != null) { List lyncOrganizationStatistics = diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 27a5f82b..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + From 1d7656ed1b67e8a0f8b4c8019a16c8c5dcdac17f Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 12 Nov 2012 09:50:54 -0500 Subject: [PATCH 276/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 57ab6aa19ed7c4e05ad8cfb26494acd3dd606c07 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 12 Nov 2012 10:05:37 -0500 Subject: [PATCH 277/379] Added tag build-2.0.0.154 for changeset afaac034d4b6 From e5a5bae7647da437122aeee96c719b69b283e185 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 12 Nov 2012 10:11:11 -0500 Subject: [PATCH 278/379] Added tag build-2.0.0.155 for changeset cd5d71169c79 From 3b6ee6427c78850c2a2e132477b227aa0ec5330a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 12 Nov 2012 18:32:19 -0500 Subject: [PATCH 279/379] Undo some changes having to do with UPN when changing Primary Exchange Email Address. Changed Lync address to be based On UPN. --- .../WebsitePanel.Providers.HostedSolution/Exchange2007.cs | 2 +- .../Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index a338e30c..8f2f63e1 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs @@ -2591,7 +2591,7 @@ 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("UserPrincipalName", primaryEmail); cmd.Parameters.Add("WindowsEmailAddress", primaryEmail); ExecuteShellCommand(runSpace, cmd); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs index 944788a5..ed619edb 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs @@ -435,7 +435,7 @@ namespace WebsitePanel.Providers.HostedSolution cmd = new Command("Enable-CsUser"); cmd.Parameters.Add("Identity", userUpn); cmd.Parameters.Add("RegistrarPool", PoolFQDN); - cmd.Parameters.Add("SipAddressType", "EmailAddress"); + cmd.Parameters.Add("SipAddressType", "UserPrincipalName"); ExecuteShellCommand(runSpace, cmd); transaction.RegisterNewCsUser(userUpn); From 9e639141e157da0ddd5857b48eca1e2fce61bf60 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 12 Nov 2012 18:50:43 -0500 Subject: [PATCH 280/379] Added tag build-2.0.0.156 for changeset 534ccb0978ac From 20ea2117d0e80aeed32bcc5c8cf155df7c999601 Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 13 Nov 2012 08:03:20 +0400 Subject: [PATCH 281/379] Fixed: Add Mail Pointer shows website pointers as well --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++++++++-- .../WebsitePanel/MailDomainsAddPointer.ascx | 2 +- .../MailDomainsAddPointer.ascx.designer.cs | 28 ------------------- 3 files changed, 12 insertions(+), 32 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..27a5f82b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx index 18ba579f..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 e7b645bd..bd4995e9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailDomainsAddPointer.ascx.designer.cs @@ -1,31 +1,3 @@ -// 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. From e09496e4d3faa3d81d31e53cd340e5978170c640 Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 13 Nov 2012 08:33:00 +0400 Subject: [PATCH 282/379] Fixed: Hide integrated ou provisioning when no hosted organizations are enabled within hosting plan --- WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config | 4 ++-- .../DesktopModules/WebsitePanel/UserCreateSpace.ascx | 2 +- .../DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 27a5f82b..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx index 52e6606c..366ff2ec 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx @@ -99,7 +99,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs index bfec236e..6b02e1ec 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs @@ -86,6 +86,7 @@ namespace WebsitePanel.Portal bool webEnabled = false; bool ftpEnabled = false; bool mailEnabled = false; + bool integratedOUEnabled = false; // load hosting context if (planId > 0) @@ -111,6 +112,7 @@ namespace WebsitePanel.Portal ftpEnabled = cntx.Groups.ContainsKey(ResourceGroups.Ftp); mailEnabled = cntx.Groups.ContainsKey(ResourceGroups.Mail); + integratedOUEnabled = cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations); } } @@ -129,7 +131,7 @@ namespace WebsitePanel.Portal ftpAccountName.Visible = (rbFtpAccountName.SelectedIndex == 1); - chkIntegratedOUProvisioning.Visible = chkCreateResources.Visible; + chkIntegratedOUProvisioning.Checked = chkIntegratedOUProvisioning.Visible = (chkCreateResources.Visible && integratedOUEnabled); } private void CreateHostingSpace() From cf427c984d6e59aa20647e7d3191840474fee240 Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 13 Nov 2012 08:49:30 +0400 Subject: [PATCH 283/379] Lync decoupled from exchange --- .../Common/BusinessErrorCodes.cs | 1 + .../HostedSolution/OrganizationController.cs | 9 ++++- .../WebsitePanel_SharedResources.ascx.resx | 3 ++ .../WebsitePanel/Lync/LyncCreateUser.ascx | 2 +- .../Lync/LyncCreateUser.ascx.designer.cs | 40 +------------------ 5 files changed, 14 insertions(+), 41 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs index ebe1183c..9bad6958 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Common/BusinessErrorCodes.cs @@ -324,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/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index d1904c88..d61b08a8 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1500,8 +1500,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) 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 9df134f2..fc7a3c5b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -3176,6 +3176,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 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/LyncCreateUser.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.designer.cs index c1083b65..71f2d828 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 @@ -1,33 +1,4 @@ -// 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. // @@ -148,14 +119,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; } } From a504b61610fdfaefc54c49b782577954a7e5e41c Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 13 Nov 2012 09:01:04 +0400 Subject: [PATCH 284/379] Fixed: Output OrganizationStatisticsREport Wrongly formatted --- .../HostedSolution/OrganizationStatisticsReport.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs index a6ee3d78..c9f85f26 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatisticsReport.cs @@ -56,8 +56,8 @@ 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.TotalLyncUsers)); + sb.AppendFormat("{0},", ToCsvString(item.TotalCRMUsers)); + sb.AppendFormat("{0},", ToCsvString(item.TotalLyncUsers)); sb.AppendFormat("{0}", ToCsvString(item.TotalLyncEVUsers)); mainBuilder.Append(sb.ToString()); From a1eedc60a87937b0211a22d0105a127effd174ec Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 13 Nov 2012 07:36:36 -0500 Subject: [PATCH 285/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From f33eae6fa839f0fbfc79d27d86c07388955c9100 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 13 Nov 2012 07:38:38 -0500 Subject: [PATCH 286/379] Fix Copyright --- .../Lync/LyncCreateUser.ascx.designer.cs | 30 ++++++++++++++++++- .../MailDomainsAddPointer.ascx.designer.cs | 28 +++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) 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 71f2d828..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 @@ -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. // 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 bd4995e9..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,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. From a9c2793fefd9e73fb93aea4adcac2b200ea8ae5d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 13 Nov 2012 07:44:30 -0500 Subject: [PATCH 287/379] Added tag build-2.0.0.157 for changeset a226d2818051 From 31f9268239d381816db5dc557829872bfde289e0 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 13 Nov 2012 07:48:17 -0500 Subject: [PATCH 288/379] Added tag build-2.0.0.158 for changeset 9f83a480ad53 From a13a0cd9ce1dc983a4465d919c9e2d42b47954cd Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 20:37:44 -0500 Subject: [PATCH 289/379] Add logic for Accepted Domains to appear under users if exchange is disabled. --- .../UserControls/App_LocalResources/Menu.ascx.resx | 3 +++ .../ExchangeServer/UserControls/Menu.ascx.cs | 13 +++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) 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/Menu.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/Menu.ascx.cs index d0817799..1b7569c5 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 (CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) + organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "domains")); + } if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, cntx)) organizationGroup.MenuItems.Add(CreateMenuItem("Users", "users")); From 016382b739706b67674f1880bde34e7d65e98843 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 20:43:19 -0500 Subject: [PATCH 290/379] Fix Typo --- .../WebsitePanel/ExchangeServer/UserControls/Menu.ascx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1b7569c5..5eb229a8 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 @@ -168,7 +168,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx) == false) { - if (CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) + if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "domains")); } if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, cntx)) From a1d581f69cb08c23de4de1fb65b7febd2f9f8d05 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 20:50:24 -0500 Subject: [PATCH 291/379] Added tag build-2.0.0.160 for changeset 38d6711e7142 From 3725799d3d9d086888497acab0a098e1473c7271 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 21:26:20 -0500 Subject: [PATCH 292/379] Add new Page for OrganizationDomainNames and remove exchange related items. --- .../App_Data/WebsitePanel_Modules.config | 3 +- .../OrganizationDomainNames.ascx | 76 +++++++++ .../OrganizationDomainNames.ascx.cs | 148 ++++++++++++++++++ .../OrganizationDomainNames.ascx.designer.cs | 142 +++++++++++++++++ .../ExchangeServer/UserControls/Menu.ascx.cs | 4 +- .../WebsitePanel.Portal.Modules.csproj | 8 + 6 files changed, 378 insertions(+), 3 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.designer.cs diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config index e8d06e78..83adebdf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config @@ -481,7 +481,8 @@ - + + 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..c7081776 --- /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.ExchangeDomainNames" %> +<%@ 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..0d745b07 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs @@ -0,0 +1,148 @@ +// 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(), "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.ShowResultMessage(result); + return; + } + + // 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..7bad4113 --- /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 ExchangeDomainNames { + + /// + /// 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/UserControls/Menu.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/Menu.ascx.cs index 5eb229a8..95ae8dab 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 @@ -168,8 +168,8 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx) == false) { - if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) - organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "domains")); + if (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/WebsitePanel.Portal.Modules.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj index 2044722b..29c3e6df 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,13 @@ + + OrganizationDomainNames.ascx + ASPXCodeBehind + + + OrganizationDomainNames.ascx + ExchangeAddMailboxPlan.ascx ASPXCodeBehind @@ -3790,6 +3797,7 @@ + From 8e5be929a2e48be9169eab17453c42946e167efd Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 21:31:17 -0500 Subject: [PATCH 293/379] Fix Typo --- .../OrganizationDomainNames.ascx | 2 +- .../OrganizationDomainNames.ascx.designer.cs | 30 +------------------ 2 files changed, 2 insertions(+), 30 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx index c7081776..388c12be 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx @@ -1,4 +1,4 @@ -<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OrganizationDomainNames.ascx.cs" Inherits="WebsitePanel.Portal.ExchangeServer.ExchangeDomainNames" %> +<%@ 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" %> 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 index 7bad4113..34be1084 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.designer.cs @@ -1,31 +1,3 @@ -// 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. @@ -38,7 +10,7 @@ namespace WebsitePanel.Portal.ExchangeServer { - public partial class ExchangeDomainNames { + public partial class OrganizationDomainNames { ///
/// asyncTasks control. From acfc81b635eb4d3850d06e1fbbf92a25c1295748 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 21:32:13 -0500 Subject: [PATCH 294/379] Add Copyright --- .../OrganizationDomainNames.ascx.designer.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) 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 index 34be1084..6e8feaab 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.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. From 28ab20c83d081b9f176858479aae359a21d2eb02 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 21:35:27 -0500 Subject: [PATCH 295/379] Fix Typo --- .../WebsitePanel/ExchangeServer/UserControls/Menu.ascx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 95ae8dab..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 @@ -168,7 +168,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls if (Utils.CheckQouta(Quotas.EXCHANGE2007_MAILBOXES, cntx) == false) { - if (CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) + if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) organizationGroup.MenuItems.Add(CreateMenuItem("DomainNames", "org_domains")); } if (Utils.CheckQouta(Quotas.ORGANIZATION_USERS, cntx)) From 0d32f933c83282385e1e427bf48a166d92d108d8 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 21:40:21 -0500 Subject: [PATCH 296/379] Added tag build-2.0.0.163 for changeset 4331bf6e6646 From 92dafecbb9c8bd12568f9cee836957f645bd990d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 21:50:00 -0500 Subject: [PATCH 297/379] Add OrganizationDomainNames Resource File --- .../OrganizationDomainNames.ascx.resx | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx 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..8775c057 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <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: + + + Domain Names + + + Domain Names + + + Domain Type + + + Change Type + + + Change + + \ No newline at end of file From f83e9d3f6278d50c867a11f73c6b0c2298e676e7 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 21:55:35 -0500 Subject: [PATCH 298/379] Added tag build-2.0.0.164 for changeset 1d4a66812cc9 From b35f4133bb0f8d7aff2705d2df72d2fa215f3d58 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 22:14:54 -0500 Subject: [PATCH 299/379] Add Seperate Organization Domain Add Page --- .../App_Data/WebsitePanel_Modules.config | 1 + .../OrganizationAddDomainName.ascx.resx | 138 +++++++++++++++++ .../OrganizationAddDomainName.ascx | 44 ++++++ .../OrganizationAddDomainName.ascx.cs | 121 +++++++++++++++ ...OrganizationAddDomainName.ascx.designer.cs | 142 ++++++++++++++++++ .../OrganizationDomainNames.ascx.cs | 2 +- 6 files changed, 447 insertions(+), 1 deletion(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationAddDomainName.ascx.resx create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx.designer.cs diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config index 83adebdf..73475696 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config @@ -482,6 +482,7 @@ + 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..1b687b23 --- /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 + + + Select a domain name, e.g. "mydomain.com" or "sub.mydomain.com" + + + 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/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/OrganizationDomainNames.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs index 0d745b07..1fd56a34 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs @@ -87,7 +87,7 @@ namespace WebsitePanel.Portal.ExchangeServer protected void btnAddDomain_Click(object sender, EventArgs e) { btnSetDefaultDomain.Enabled = true; - Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "add_domain", + Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "org_add_domain", "SpaceID=" + PanelSecurity.PackageId)); } From eaadc57e991a888bf5b58b00218080f68d2fd504 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 22:20:48 -0500 Subject: [PATCH 300/379] Added tag build-2.0.0.165 for changeset c079da151b6c From 5ce6441fb1c8cc3db6c792a2cf0732af3dca6f8a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 22:47:17 -0500 Subject: [PATCH 301/379] Update Project File --- .../WebsitePanel.Portal.Modules.csproj | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 29c3e6df..c513660b 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,13 @@ + + OrganizationAddDomainName.ascx + ASPXCodeBehind + + + OrganizationAddDomainName.ascx + OrganizationDomainNames.ascx ASPXCodeBehind @@ -3797,6 +3804,7 @@ + @@ -4953,6 +4961,12 @@ + + Designer + + + Designer + Designer From b710607b1c3095f145139b5403213dc921d01c34 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 14 Nov 2012 22:52:22 -0500 Subject: [PATCH 302/379] Added tag build-2.0.0.166 for changeset 6ec9c134f7c4 From dd47c3b02a0202f18782c67ea78fd5aa30f8ad2d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 19:12:51 -0500 Subject: [PATCH 303/379] FIXED Wsp-10046 Changed Exchange Domain to Internal Relay if Organization has 0 Allocated Mailbox --- .../Code/HostedSolution/OrganizationController.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index d61b08a8..829a4fa0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1123,6 +1123,12 @@ namespace WebsitePanel.EnterpriseServer if (!string.IsNullOrEmpty(org.GlobalAddressList)) { ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId); + + if (orgStats.AllocatedMailboxes == 0) + { + ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; + ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); + } } if (org.IsOCSOrganization) From 312d3b7d224d687eb7951441596f7c9e523f931d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 19:19:18 -0500 Subject: [PATCH 304/379] Added tag build-2.0.0.167 for changeset 06ca63c5d82e From 4d9026ad375075cb23f27313000b0058fd05a54c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 19:30:12 -0500 Subject: [PATCH 305/379] Adjust wsp-10046 --- .../Code/HostedSolution/OrganizationController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 829a4fa0..36fc9bc4 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1124,7 +1124,7 @@ namespace WebsitePanel.EnterpriseServer { ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId); - if (orgStats.AllocatedMailboxes == 0) + if (orgStats.AllocatedMailboxes > -1) { ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); From ab42be81cfe70e6c3abcd3c18f4a4e383157bade Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 19:32:13 -0500 Subject: [PATCH 306/379] Further Adjust wsp-10046 --- .../Code/HostedSolution/OrganizationController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 36fc9bc4..b9dde7d9 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1124,7 +1124,7 @@ namespace WebsitePanel.EnterpriseServer { ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId); - if (orgStats.AllocatedMailboxes > -1) + if ((orgStats.AllocatedMailboxes > -1) == false) { ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); From d6fc14facd1bb6798bcb30a39c8ec54bddd0281e Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 19:39:02 -0500 Subject: [PATCH 307/379] Added tag build-2.0.0.168 for changeset 07e9e2bbed7a From cbb100a95d90030371de13747f00da1ac480ec14 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 19:56:31 -0500 Subject: [PATCH 308/379] Further Adjust wsp-10046 --- .../Code/HostedSolution/OrganizationController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index b9dde7d9..2880d4f5 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1124,7 +1124,7 @@ namespace WebsitePanel.EnterpriseServer { ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId); - if ((orgStats.AllocatedMailboxes > -1) == false) + if (orgStats.AllocatedMailboxes == -1) { ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); From f0da9d3decc51d15ff70f9afe6966bd2f24a3605 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 20:02:33 -0500 Subject: [PATCH 309/379] Added tag build-2.0.0.169 for changeset fb31dbfad73a From 1629e390f396055bb20889c2d6ecff221625f570 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 20:25:32 -0500 Subject: [PATCH 310/379] wsp-10046 implement correct organizational stats for exchange as mailbox stats is not included in organizationcontroller --- .../Code/HostedSolution/OrganizationController.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 2880d4f5..ab2ed217 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1123,8 +1123,10 @@ namespace WebsitePanel.EnterpriseServer if (!string.IsNullOrEmpty(org.GlobalAddressList)) { ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId); - - if (orgStats.AllocatedMailboxes == -1) + + OrganizationStatistics orgStatsExchange = ExchangeServerController.GetOrganizationStatistics(itemId); + + if (orgStatsExchange.AllocatedMailboxes == -1) { ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); From d8f761ff1d3e1557685a53c76626bb7844e8059b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 20:30:40 -0500 Subject: [PATCH 311/379] Added tag build-2.0.0.170 for changeset 69ab346d5711 From f60912ee44d4163735bbbdf0470e90fda2144ed3 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 21:04:39 -0500 Subject: [PATCH 312/379] Retest wsp-10046 --- .../Code/HostedSolution/OrganizationController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index ab2ed217..783081a1 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1126,7 +1126,7 @@ namespace WebsitePanel.EnterpriseServer OrganizationStatistics orgStatsExchange = ExchangeServerController.GetOrganizationStatistics(itemId); - if (orgStatsExchange.AllocatedMailboxes == -1) + if ((orgStatsExchange.AllocatedMailboxes > -1) == false) { ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); From 50b0f73525e6c1595c523d33dc11f47860deab6b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 21:12:51 -0500 Subject: [PATCH 313/379] Added tag build-2.0.0.171 for changeset e2f40d7e3496 From 2ad89f330a71555aef749b827856c6f57a03894e Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 21:18:46 -0500 Subject: [PATCH 314/379] Retest wsp-10046 --- .../Code/HostedSolution/OrganizationController.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 783081a1..f72f9e06 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1123,14 +1123,14 @@ namespace WebsitePanel.EnterpriseServer if (!string.IsNullOrEmpty(org.GlobalAddressList)) { ExchangeServerController.AddAuthoritativeDomain(itemId, domain.DomainId); + } - OrganizationStatistics orgStatsExchange = ExchangeServerController.GetOrganizationStatistics(itemId); + OrganizationStatistics orgStatsExchange = ExchangeServerController.GetOrganizationStatistics(itemId); - if ((orgStatsExchange.AllocatedMailboxes > -1) == false) - { - ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; - ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); - } + if (orgStatsExchange.AllocatedMailboxes == -1) + { + ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; + ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); } if (org.IsOCSOrganization) From ab842a386547115977fe0f28e2d0b6eb3c387868 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 21:24:06 -0500 Subject: [PATCH 315/379] Added tag build-2.0.0.172 for changeset 92372747c8e9 From 3675d570ad68b57361adb29cdde335b533578ffb Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 21:37:05 -0500 Subject: [PATCH 316/379] Re-test 10046 --- .../Code/HostedSolution/OrganizationController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index f72f9e06..5ff28737 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1127,7 +1127,7 @@ namespace WebsitePanel.EnterpriseServer OrganizationStatistics orgStatsExchange = ExchangeServerController.GetOrganizationStatistics(itemId); - if (orgStatsExchange.AllocatedMailboxes == -1) + if ((orgStatsExchange.AllocatedMailboxes != -1) == false) { ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); From 4fe88b7154c152b1ad21960f2c4297297d71757b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 21:42:55 -0500 Subject: [PATCH 317/379] Added tag build-2.0.0.173 for changeset 45aa0758b281 From 04652c91228df68b3c26c47a0aa05d5e3f29508d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 21:50:31 -0500 Subject: [PATCH 318/379] wsp-10046 another test --- .../Code/HostedSolution/OrganizationController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 5ff28737..9650c570 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1127,7 +1127,7 @@ namespace WebsitePanel.EnterpriseServer OrganizationStatistics orgStatsExchange = ExchangeServerController.GetOrganizationStatistics(itemId); - if ((orgStatsExchange.AllocatedMailboxes != -1) == false) + if (orgStatsExchange.AllocatedMailboxes == 0) { ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); From 4e975e850c043c72c7dea9c77326c54658b03bcc Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 21:55:25 -0500 Subject: [PATCH 319/379] Added tag build-2.0.0.174 for changeset 032a78880bc1 From 49d4e3d4355237035bcc6c895cdb5058aa6f92dd Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 22:11:27 -0500 Subject: [PATCH 320/379] wsp-10046 re-test --- .../Code/HostedSolution/OrganizationController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 9650c570..00662bce 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1130,7 +1130,7 @@ namespace WebsitePanel.EnterpriseServer if (orgStatsExchange.AllocatedMailboxes == 0) { ExchangeAcceptedDomainType newDomainType = ExchangeAcceptedDomainType.InternalRelay; - ChangeOrganizationDomainType(itemId, domain.DomainId, newDomainType); + ChangeOrganizationDomainType(org.ServiceId, domain.DomainId, newDomainType); } if (org.IsOCSOrganization) From e5156eb0cdf75fc71a320eff40fb8029ac8230d0 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 15 Nov 2012 22:17:24 -0500 Subject: [PATCH 321/379] Added tag build-2.0.0.175 for changeset 76cce0324140 From 51c9c74a2fe26c46ae56604c5732857f8f4f5fd2 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 18 Nov 2012 11:46:18 +0400 Subject: [PATCH 322/379] Fixed: When changing primary email address, upn is changed as well. UPN is not changes anymore When deleting user: leaf object error. Fixed: object delete methods extended with delete Tree Lync Global Plans cannot be deleted, fixed --- .../WebsitePanel.EnterpriseServer/Web.config | 15 ++++++++++++--- .../HostedSolution/ActiveDirectoryUtils.cs | 3 ++- .../Exchange2007.cs | 2 +- .../SettingsLyncUserPlansPolicy.ascx.cs | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..c48ebaf1 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,12 +5,21 @@ - + + - - + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs index ac11cdef..5e608f88 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs @@ -113,7 +113,8 @@ namespace WebsitePanel.Providers.HostedSolution DirectoryEntry parent = entry.Parent; if (parent != null) { - parent.Children.Remove(entry); + //parent.Children.Remove(entry); + entry.DeleteTree(); parent.CommitChanges(); } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index 8f2f63e1..a338e30c 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs @@ -2591,7 +2591,7 @@ 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("UserPrincipalName", primaryEmail); cmd.Parameters.Add("WindowsEmailAddress", primaryEmail); ExecuteShellCommand(runSpace, cmd); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.cs index 76d92469..51fbf72a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.cs @@ -219,7 +219,7 @@ namespace WebsitePanel.Portal } - result = ES.Services.ExchangeServer.DeleteExchangeMailboxPlan(orgs[0].Id, planId); + result = ES.Services.Lync.DeleteLyncUserPlan(orgs[0].Id, planId); if (result < 0) { messageBox.ShowResultMessage(result); From 8fdd24c19f4bde06679fb9379af571973fd8ad92 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 18 Nov 2012 12:04:54 +0400 Subject: [PATCH 323/379] Fixed: Exchange Account quota usage not correctly represented --- WebsitePanel/Database/update_db.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 4b2adf86..0c140dc1 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -1813,7 +1813,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 From 2483c1d4963e48b382a8216f23d045230c1668cf Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 18 Nov 2012 03:39:42 -0500 Subject: [PATCH 324/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index c48ebaf1..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,21 +5,12 @@ - - + + + - - - - From a7c40ff361abde361a9e738068365e2a31707a06 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 18 Nov 2012 03:50:19 -0500 Subject: [PATCH 325/379] Added tag build-2.0.0.176 for changeset 25d02b03a759 From 647a6cedd241dc7b6424d85c817b0b08e4211f23 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 18 Nov 2012 03:54:15 -0500 Subject: [PATCH 326/379] Added tag build-2.0.0.177 for changeset fdd7fb7ed5a9 From 1c7d232f7cbb0b9a4194a5c87d9bd4098a45a3e6 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 18 Nov 2012 13:46:58 +0400 Subject: [PATCH 327/379] Fixed: When a domain is assigned to an email domain as an alias, you are still able to create and assign email accounts under that domain --- .../WebsitePanel.EnterpriseServer/Web.config | 4 +-- .../DomainsSelectDomainControl.ascx.cs | 34 +++++++++++++++++++ .../WebsitePanel/MailEditAddress.ascx | 2 +- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index c48ebaf1..893524ff 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -9,7 +9,7 @@ --> - + @@ -17,7 +17,7 @@ --> - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs index cc723f6a..7c52e8f0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsSelectDomainControl.ascx.cs @@ -62,6 +62,13 @@ namespace WebsitePanel.Portal 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; } @@ -111,6 +118,7 @@ namespace WebsitePanel.Portal WebSite[] sites = null; Hashtable htSites = new Hashtable(); + Hashtable htMailDomainPointers = new Hashtable(); if (HideWebSites) { sites = ES.Services.WebServers.GetWebSites(PackageId, false); @@ -127,6 +135,25 @@ namespace WebsitePanel.Portal } } + 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 @@ -148,6 +175,13 @@ namespace WebsitePanel.Portal } } } + + + if (HideMailDomainPointers) + { + if (htMailDomainPointers[domain.DomainName.ToLower()] != null) continue; + } + if (HideInstantAlias && domain.IsInstantAlias) continue; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx index bb808b7a..6037cbc1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/MailEditAddress.ascx @@ -9,7 +9,7 @@  @  - + From fb0b5b71028d92de04713338d72128bc828b23a7 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 18 Nov 2012 10:46:47 -0500 Subject: [PATCH 328/379] Added tag build-2.0.0.178 for changeset 499deb2ba5d8 From 7fe2490e0aada073e9334b5cb081d7312b57b7ae Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 18 Nov 2012 10:53:10 -0500 Subject: [PATCH 329/379] wsp-10024 Change IntegratedOUEnabled variable to be set true based on Domain Quota --- .../DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs index 6b02e1ec..5e92633c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs @@ -112,7 +112,11 @@ namespace WebsitePanel.Portal ftpEnabled = cntx.Groups.ContainsKey(ResourceGroups.Ftp); mailEnabled = cntx.Groups.ContainsKey(ResourceGroups.Mail); - integratedOUEnabled = cntx.Groups.ContainsKey(ResourceGroups.HostedOrganizations); + + if (Utils.CheckQouta(Quotas.ORGANIZATION_DOMAINS, cntx)) + { + integratedOUEnabled = true; + } } } From 1a606444e189250150e3add020e90410e3931570 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 18 Nov 2012 10:59:55 -0500 Subject: [PATCH 330/379] Added tag build-2.0.0.179 for changeset 9b4fabf5d175 From e47cf9af734958464af4554eabd7f9aff70541a5 Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 18 Nov 2012 20:51:01 +0400 Subject: [PATCH 331/379] Fixed: update_db.sql: HideQuota existence verification --- WebsitePanel/Database/update_db.sql | 2 +- .../WebsitePanel.EnterpriseServer/Web.config | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 0c140dc1..aba5730d 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -559,7 +559,7 @@ 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='ShowGroup') +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 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..c48ebaf1 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,12 +5,21 @@ - + + - - + + + + From acb9dcec62f2ff702f2406e26de4c0f49372e6dd Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 18 Nov 2012 11:53:27 -0500 Subject: [PATCH 332/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index c48ebaf1..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,21 +5,12 @@ - - + + + - - - - From 5b393863a8f308690f6914b1a183cfff8c563263 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 18 Nov 2012 12:03:33 -0500 Subject: [PATCH 333/379] Added tag build-2.0.0.180 for changeset c5b9f02498bb From 06ea9b8e34506a0ef43d8e02fdb0bdbdca16656c Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 19 Nov 2012 17:53:16 +0400 Subject: [PATCH 334/379] UserPrincipalName added to the collection of user info --- .../HostedSolution/OrganizationUser.cs | 6 +++++ .../OrganizationProvider.cs | 1 + .../OrganizationUserGeneralSettings.ascx.resx | 3 +++ .../OrganizationUserGeneralSettings.ascx | 6 +++++ .../OrganizationUserGeneralSettings.ascx.cs | 1 + ...zationUserGeneralSettings.ascx.designer.cs | 27 ++++++++++++------- 6 files changed, 35 insertions(+), 9 deletions(-) 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.HostedSolution/OrganizationProvider.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs index 9b78cd77..147bfdd1 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs @@ -529,6 +529,7 @@ 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 = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.UserPrincipalName); HostedSolutionLog.LogEnd("GetUserGeneralSettingsInternal"); return retUser; 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..6946695e 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 @@ -236,4 +236,7 @@ * + + Login Name: + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx index 407ab8c2..4ee2563c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx @@ -41,6 +41,11 @@ + + + + + +
@@ -95,6 +100,7 @@
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; + /// /// locDisplayName control. /// @@ -668,14 +686,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; } } From 3ceddd038c78e26e0f720b9a2aa0039cce91a83a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 19 Nov 2012 09:53:32 -0500 Subject: [PATCH 335/379] Merge --- ...zationUserGeneralSettings.ascx.designer.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) 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 d29e91a9..2295ee44 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. From 46ba6599a0808dca6d41326625601b4b11dc2c41 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 19 Nov 2012 10:04:09 -0500 Subject: [PATCH 336/379] Added tag build-2.0.0.181 for changeset 913bf59d730b From 65ab6722fd348756dde3584a7f248f30fc17ac66 Mon Sep 17 00:00:00 2001 From: robvde Date: Tue, 20 Nov 2012 21:10:51 +0400 Subject: [PATCH 337/379] Plumbling put in place to set Lync SipAddress and LineUri --- .../LyncProxy.cs | 85 +- .../Code/HostedSolution/LyncController.cs | 61 +- .../WebsitePanel.EnterpriseServer/Web.config | 14 +- .../esLync.asmx.cs | 7 + .../HostedSolution/ILyncServer.cs | 1 + .../Lync2010.cs | 40 + .../LyncServerProxy.cs | 787 +++++++++--------- .../WebsitePanel.Server/LyncServer.asmx.cs | 18 + WebsitePanel/Sources/generate_es_proxies.bat | 8 +- .../Sources/generate_server_proxies.bat | 8 +- 10 files changed, 597 insertions(+), 432 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs index 3e960f56..b21b13d1 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,8 +51,6 @@ namespace WebsitePanel.EnterpriseServer { using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.ResultObjects; - - /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] @@ -85,6 +83,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 +134,9 @@ namespace WebsitePanel.EnterpriseServer { /// public event GetLyncUserGeneralSettingsCompletedEventHandler GetLyncUserGeneralSettingsCompleted; + /// + public event SetLyncUserGeneralSettingsCompletedEventHandler SetLyncUserGeneralSettingsCompleted; + /// public event SetUserLyncPlanCompletedEventHandler SetUserLyncPlanCompleted; @@ -680,6 +683,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 bool SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) { + object[] results = this.Invoke("SetLyncUserGeneralSettings", new object[] { + itemId, + accountId, + sipAddress, + lineUri}); + return ((bool)(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 bool EndSetLyncUserGeneralSettings(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((bool)(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 +1230,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 bool Result { + get { + this.RaiseExceptionIfNecessary(); + return ((bool)(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/Code/HostedSolution/LyncController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs index b7bf20f1..f7184468 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs @@ -228,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; @@ -318,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) { @@ -341,6 +341,59 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } + public static bool SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) + { + TaskManager.StartTask("LYNC", "SET_LYNC_USER_GENERAL_SETTINGS"); + + LyncUser user = null; + bool ret = true; + + 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; + } + + user.PrimaryUri = sipAddress; + user.LineUri = lineUri; + + lync.SetLyncUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName, user); + } + } + catch (Exception ex) + { + ret = false; + throw TaskManager.WriteError(ex); + } + TaskManager.CompleteTask(); + return ret; + + } + + + public static int DeleteOrganization(int itemId) { // check account @@ -403,7 +456,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; @@ -518,7 +571,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) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs index 16c4328b..311b66f9 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs @@ -119,6 +119,13 @@ namespace WebsitePanel.EnterpriseServer return LyncController.GetLyncUserGeneralSettings(itemId, accountId); } + [WebMethod] + public bool 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.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.HostedSolution/Lync2010.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs index ed619edb..f058c759 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); @@ -524,6 +530,40 @@ 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; + try + { + runSpace = OpenRunspace(); + + Command cmd = new Command("Set-CsUser"); + cmd.Parameters.Add("Identity", userUpn); + if (!string.IsNullOrEmpty(lyncUser.PrimaryUri)) cmd.Parameters.Add("SipAddress", lyncUser.PrimaryUri); + if (!string.IsNullOrEmpty(lyncUser.PrimaryUri)) cmd.Parameters.Add("LineUri", lyncUser.LineUri); + + ExecuteShellCommand(runSpace, cmd, false); + } + catch (Exception ex) + { + ret = false; + HostedSolutionLog.LogError("SetLyncUserGeneralSettingsInternal", ex); + throw; + } + finally + { + CloseRunspace(runSpace); + } + HostedSolutionLog.LogEnd("SetLyncUserGeneralSettingsInternal"); + return ret; + } + + private bool SetLyncUserPlanInternal(string organizationId, string userUpn, LyncUserPlan plan, Runspace runSpace) { 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/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/generate_es_proxies.bat b/WebsitePanel/Sources/generate_es_proxies.bat index a6c063c5..0f50b419 100644 --- a/WebsitePanel/Sources/generate_es_proxies.bat +++ b/WebsitePanel/Sources/generate_es_proxies.bat @@ -65,8 +65,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs REM %WSDL% %SERVER_URL%/esScheduler.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SchedulerProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SchedulerProxy.cs -%WSDL% %SERVER_URL%/esServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient -%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs +REM %WSDL% %SERVER_URL%/esServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs REM %WSDL% %SERVER_URL%/esSharePointServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SharePointServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SharePointServersProxy.cs @@ -92,8 +92,8 @@ 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 -REM %WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient -REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs +%WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs diff --git a/WebsitePanel/Sources/generate_server_proxies.bat b/WebsitePanel/Sources/generate_server_proxies.bat index 1d02b7f0..8c3cfdee 100644 --- a/WebsitePanel/Sources/generate_server_proxies.bat +++ b/WebsitePanel/Sources/generate_server_proxies.bat @@ -50,13 +50,13 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\VirtualizationServerProxy.cs REM %WSDL% %SERVER_URL%/VirtualizationServerForPrivateCloud.asmx /out:.\WebsitePanel.Server.Client\VirtualizationServerForPrivateCloudProxy.cs /namespace:WebsitePanel.Providers.VirtualizationForPC /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\VirtualizationServerForPrivateCloudProxy.cs -%WSDL% %SERVER_URL%/WebServer.asmx /out:.\WebsitePanel.Server.Client\WebServerProxy.cs /namespace:WebsitePanel.Providers.Web /type:webClient /fields -%WSE_CLEAN% .\WebsitePanel.Server.Client\WebServerProxy.cs +REM %WSDL% %SERVER_URL%/WebServer.asmx /out:.\WebsitePanel.Server.Client\WebServerProxy.cs /namespace:WebsitePanel.Providers.Web /type:webClient /fields +REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WebServerProxy.cs REM %WSDL% %SERVER_URL%/WindowsServer.asmx /out:.\WebsitePanel.Server.Client\WindowsServerProxy.cs /namespace:WebsitePanel.Server /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WindowsServerProxy.cs -REM %WSDL% %SERVER_URL%/LyncServer.asmx /out:.\WebsitePanel.Server.Client\LyncServerProxy.cs /namespace:WebsitePanel.Providers.Lync /type:webClient /fields -REM %WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs +%WSDL% %SERVER_URL%/LyncServer.asmx /out:.\WebsitePanel.Server.Client\LyncServerProxy.cs /namespace:WebsitePanel.Providers.Lync /type:webClient /fields +%WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs From 67e47f37f56359502470144b6211fb3054fc6802 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 20 Nov 2012 13:52:51 -0500 Subject: [PATCH 338/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 265f0a0e0229f8c9bc2ae09d065bd59e4ddafd4b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 20 Nov 2012 14:05:59 -0500 Subject: [PATCH 339/379] Added tag build-2.0.0.182 for changeset 33b9234ebc6c From 5cc40e16127339365f96e2df3a122acd69e251d1 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Tue, 20 Nov 2012 14:09:48 -0500 Subject: [PATCH 340/379] Added tag build-2.0.0.183 for changeset ea5838597a87 From 6cf946b6b442c30051ad266d97e51402d881c4a3 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 22 Nov 2012 13:16:41 +0400 Subject: [PATCH 341/379] Fixed: Decoupling of userprincipalName and PrimaryEmailAddress OrganizationUsers updated with image buttons with the ability to go directly to offering settings When changing primaryemailaddress, sip address changes accordingly Mailboxes list view updated with Login (=userprincipalName) with the ability to go directly to user setting Lync list view updated with Login (=userprincipalName) with the ability to go directly to user setting --- WebsitePanel/Database/update_db.sql | 386 ++++++++++++++++-- .../LyncProxy.cs | 13 +- .../Code/Data/DataProvider.cs | 37 +- .../ExchangeServerController.cs | 5 + .../Code/HostedSolution/LyncController.cs | 38 +- .../Code/HostedSolution/ReportController.cs | 2 +- .../esLync.asmx.cs | 2 +- .../HostedSolution/ExchangeAccount.cs | 7 + .../HostedSolution/LyncErrorCodes.cs | 3 + .../HostedSolution/LyncUser.cs | 4 +- .../Exchange2007.cs | 2 +- .../Lync2010.cs | 86 +++- .../ExchangeMailboxes.ascx.resx | 6 + .../OrganizationUsers.ascx.resx | 6 + .../ExchangeServer/ExchangeMailboxes.ascx | 10 + .../ExchangeServer/ExchangeMailboxes.ascx.cs | 12 +- .../ExchangeServer/OrganizationUsers.ascx | 14 +- .../ExchangeServer/OrganizationUsers.ascx.cs | 95 ++++- .../App_LocalResources/LyncEditUser.ascx.resx | 3 + .../App_LocalResources/LyncUsers.ascx.resx | 9 +- .../WebsitePanel/Lync/LyncEditUser.ascx | 10 + .../WebsitePanel/Lync/LyncEditUser.ascx.cs | 9 + .../Lync/LyncEditUser.ascx.designer.cs | 58 +-- .../WebsitePanel/Lync/LyncUsers.ascx | 17 +- .../WebsitePanel/Lync/LyncUsers.ascx.cs | 11 +- .../Lync/LyncUsers.ascx.designer.cs | 9 - .../Lync/UserControls/LyncUserSettings.ascx | 2 + .../UserControls/LyncUserSettings.ascx.cs | 102 +++++ .../LyncUserSettings.ascx.designer.cs | 24 ++ .../WebsitePanel.Portal.Modules.csproj | 8 + 30 files changed, 869 insertions(+), 121 deletions(-) create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index aba5730d..65f678f4 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -569,6 +569,19 @@ UPDATE [dbo].[Quotas] SET [HideQuota] = 1 WHERE [QuotaName] = N'OS.DomainPointer 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 * FROM [dbo].[ExchangeAccounts] WHERE UserPrincipalName IS NOT NULL) +BEGIN + UPDATE [dbo].[ExchangeAccounts] SET [UserPrincipalName] = PrimaryEmailAddress +END +GO /****** Object: Table [dbo].[ExchangeAccounts] Extend Exchange Accounts with SubscriberNumber ******/ @@ -1468,7 +1481,8 @@ INSERT INTO ExchangeAccounts SamAccountName, AccountPassword, MailboxPlanId, - SubscriberNumber + SubscriberNumber, + UserPrincipalName ) VALUES ( @@ -1482,7 +1496,8 @@ VALUES @SamAccountName, @AccountPassword, @MailboxPlanId, - @SubscriberNumber + @SubscriberNumber, + @PrimaryEmailAddress ) SET @AccountID = SCOPE_IDENTITY() @@ -2157,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 @@ -2242,7 +2258,8 @@ WITH Accounts AS ( EA.PrimaryEmailAddress, EA.MailEnabledPublicFolder, EA.MailboxPlanId, - EA.SubscriberNumber ' + @joincondition + + EA.SubscriberNumber, + EA.UserPrincipalName ' + @joincondition + ' WHERE ' + @condition + ' ) @@ -2291,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 @@ -2304,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') @@ -2330,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 @@ -2357,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 @@ -2380,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 @@ -2420,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 @@ -2447,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 @@ -2470,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 @@ -2917,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 @@ -2947,7 +3003,8 @@ SELECT DisplayName, PrimaryEmailAddress, MailEnabledPublicFolder, - SubscriberNumber + SubscriberNumber, + UserPrincipalName FROM ExchangeAccounts WHERE @@ -3009,7 +3066,8 @@ SELECT MailboxManagerActions, SamAccountName, AccountPassword, - SubscriberNumber + SubscriberNumber, + UserPrincipalName FROM ExchangeAccounts WHERE AccountID = @AccountID @@ -3078,7 +3136,8 @@ SELECT EA.DisplayName, EA.PrimaryEmailAddress, EA.MailEnabledPublicFolder, - EA.SubscriberNumber + EA.SubscriberNumber, + EA.UserPrincipalName FROM ExchangeAccounts AS EA WHERE ' + @condition @@ -3151,7 +3210,8 @@ SELECT EA.AccountName, EA.DisplayName, EA.PrimaryEmailAddress, - EA.SubscriberNumber + EA.SubscriberNumber, + EA.UserPrincipalName FROM ExchangeAccounts AS EA WHERE ' + @condition @@ -3211,7 +3271,7 @@ AS ea.ItemID, ea.AccountName, ea.DisplayName, - ea.PrimaryEmailAddress, + ea.UserPrincipalName, ea.SamAccountName, ou.LyncUserPlanId, lp.LyncUserPlanName @@ -3249,7 +3309,7 @@ AS ea.ItemID, ea.AccountName, ea.DisplayName, - ea.PrimaryEmailAddress, + ea.UserPrincipalName, ea.SamAccountName, ou.LyncUserPlanId, lp.LyncUserPlanName @@ -3678,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') @@ -3699,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, @@ -3714,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'' @@ -3734,7 +3808,8 @@ set @sql = '' ea.ItemID, ea.AccountName, ea.DisplayName, - ea.PrimaryEmailAddress, + ea.UserPrincipalName, + ou.SipAddress, ea.SamAccountName, ou.LyncUserPlanId, lp.LyncUserPlanName @@ -3770,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 @@ -3784,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 @@ -3797,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 + + + @@ -6596,4 +6805,129 @@ exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @UserID int, @Filter @StartRow, @MaximumRows, @UserID, @FilterValue, @ItemTypeID, @ActorID RETURN -GO \ No newline at end of file +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 AND AccountType IN (1,7) + +RETURN' +END +GO + + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs index b21b13d1..cce2aeac 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/LyncProxy.cs @@ -52,6 +52,7 @@ namespace WebsitePanel.EnterpriseServer { using WebsitePanel.Providers.ResultObjects; + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] @@ -685,13 +686,13 @@ 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 bool SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) { + public LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) { object[] results = this.Invoke("SetLyncUserGeneralSettings", new object[] { itemId, accountId, sipAddress, lineUri}); - return ((bool)(results[0])); + return ((LyncUserResult)(results[0])); } /// @@ -704,9 +705,9 @@ namespace WebsitePanel.EnterpriseServer { } /// - public bool EndSetLyncUserGeneralSettings(System.IAsyncResult asyncResult) { + public LyncUserResult EndSetLyncUserGeneralSettings(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); - return ((bool)(results[0])); + return ((LyncUserResult)(results[0])); } /// @@ -1248,10 +1249,10 @@ namespace WebsitePanel.EnterpriseServer { } /// - public bool Result { + public LyncUserResult Result { get { this.RaiseExceptionIfNecessary(); - return ((bool)(this.results[0])); + return ((LyncUserResult)(this.results[0])); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index 892546ea..f7ab7cf4 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -3257,7 +3257,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, @@ -3265,10 +3265,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", @@ -3276,6 +3290,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[] diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 22be24bb..486e2519 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -2119,6 +2119,11 @@ namespace WebsitePanel.EnterpriseServer ocs.SetUserPrimaryUri(instanceId, emailAddress); } + if (DataProvider.CheckLyncUserExists(account.AccountId)) + { + LyncController.SetLyncUserGeneralSettings(itemId, accountId, emailAddress, null); + } + // save account UpdateAccount(account); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs index f7184468..a72d5b59 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/LyncController.cs @@ -250,7 +250,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution try { - DataProvider.AddLyncUser(accountId, lyncUserPlanId); + DataProvider.AddLyncUser(accountId, lyncUserPlanId, user.UserPrincipalName); } catch (Exception ex) { @@ -341,12 +341,11 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution } - public static bool SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) + public static LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) { - TaskManager.StartTask("LYNC", "SET_LYNC_USER_GENERAL_SETTINGS"); + LyncUserResult res = TaskManager.StartResultTask("LYNC", "SET_LYNC_USER_GENERAL_SETTINGS"); LyncUser user = null; - bool ret = true; try { @@ -376,19 +375,38 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution user.LyncUserPlanName = plan.LyncUserPlanName; } - user.PrimaryUri = sipAddress; - user.LineUri = lineUri; + + 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) { - ret = false; - throw TaskManager.WriteError(ex); + TaskManager.CompleteResultTask(res, LyncErrorCodes.FAILED_SET_SETTINGS, ex); + return res; } - TaskManager.CompleteTask(); - return ret; + + res.IsSuccess = true; + TaskManager.CompleteResultTask(); + return res; } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs index 8f3d5235..adad212f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs @@ -511,7 +511,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution try { - stats.SipAddress = lyncUser.PrimaryEmailAddress; + 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); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs index 311b66f9..8006be54 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esLync.asmx.cs @@ -120,7 +120,7 @@ namespace WebsitePanel.EnterpriseServer } [WebMethod] - public bool SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) + public LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) { return LyncController.SetLyncUserGeneralSettings(itemId, accountId, sipAddress, lineUri); } 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/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/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.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index a338e30c..f972983b 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs @@ -2592,7 +2592,7 @@ namespace WebsitePanel.Providers.HostedSolution cmd.Parameters.Add("Identity", accountName); cmd.Parameters.Add("PrimarySmtpAddress", primaryEmail); //cmd.Parameters.Add("UserPrincipalName", primaryEmail); - cmd.Parameters.Add("WindowsEmailAddress", primaryEmail); + //cmd.Parameters.Add("WindowsEmailAddress", primaryEmail); ExecuteShellCommand(runSpace, cmd); } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs index f058c759..be5e9397 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Lync2010.cs @@ -514,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) { @@ -538,22 +540,96 @@ namespace WebsitePanel.Providers.HostedSolution 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"); - Command cmd = new Command("Set-CsUser"); + 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.PrimaryUri)) cmd.Parameters.Add("SipAddress", lyncUser.PrimaryUri); - if (!string.IsNullOrEmpty(lyncUser.PrimaryUri)) cmd.Parameters.Add("LineUri", lyncUser.LineUri); + 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); - throw; + RollbackTransaction(transaction); } finally { 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..a254bede 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 @@ -174,4 +174,10 @@ Mailboxes + + Login + + + Login + \ No newline at end of file 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..3923f30b 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 @@ -180,4 +180,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/ExchangeMailboxes.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx index 851a9b78..35443356 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/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/Lync/App_LocalResources/LyncEditUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx index bad6c174..efcae705 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 @@ -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/LyncUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx index 9114e730..748a13ee 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,8 +126,8 @@ 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> @@ -138,7 +138,7 @@ Display name - Sign-in name + SIP Address Lync Users @@ -152,4 +152,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/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 @@ + + + + + + + + +
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..fb36ea09 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,33 +1,4 @@ -// 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. // @@ -122,6 +93,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 +119,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/LyncUsers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx index d0320faa..f94d5abd 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") %> + + + + + 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..5da9df82 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx @@ -0,0 +1,2 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncUserSettings.ascx.cs" Inherits="WebsitePanel.Portal.Lync.UserControls.LyncUserSettings" %> + \ No newline at end of file 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..c7b45afa --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs @@ -0,0 +1,102 @@ +// 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 EntServer = WebsitePanel.EnterpriseServer; + +namespace WebsitePanel.Portal.Lync.UserControls +{ + public partial class LyncUserSettings : WebsitePanelControlBase + { + + private string sipAddressToSelect; + + public string sipAddress + { + + get { return ddlSipAddresses.SelectedItem.Value; } + set + { + sipAddressToSelect = value; + foreach (ListItem li in ddlSipAddresses.Items) + { + if (li.Value == value) + { + ddlSipAddresses.ClearSelection(); + li.Selected = true; + break; + } + } + } + } + + public int plansCount + { + get + { + return this.ddlSipAddresses.Items.Count; + } + } + + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + BindAddresses(); + } + } + + private void BindAddresses() + { + + EntServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID); + + foreach (EntServer.ExchangeEmailAddress email in emails) + { + ListItem li = new ListItem(); + li.Text = email.EmailAddress; + li.Value = email.EmailAddress; + li.Selected = email.IsPrimary; + ddlSipAddresses.Items.Add(li); + } + + foreach (ListItem li in ddlSipAddresses.Items) + { + if (li.Value == sipAddressToSelect) + { + ddlSipAddresses.ClearSelection(); + li.Selected = true; + break; + } + } + + } + } +} \ 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..2cd7f4d3 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 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; + } +} 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 c513660b..bea7dc26 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj @@ -297,6 +297,13 @@ LyncUsers.ascx + + LyncUserSettings.ascx + ASPXCodeBehind + + + LyncUserSettings.ascx + LyncUserPlanSelector.ascx ASPXCodeBehind @@ -3807,6 +3814,7 @@ + From 02cd8ae141a9be1819a108141e9423a1c9fe3d3b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 22 Nov 2012 11:11:59 -0500 Subject: [PATCH 342/379] Merge --- .../Lync/LyncEditUser.ascx.designer.cs | 30 ++++++++++++++++++- .../Lync/LyncUsers.ascx.designer.cs | 30 ++++++++++++++++++- .../LyncUserSettings.ascx.designer.cs | 28 +++++++++++++++++ 3 files changed, 86 insertions(+), 2 deletions(-) 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 fb36ea09..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,32 @@ -//------------------------------------------------------------------------------ +// 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. // diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs index 25937689..9f386e85 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs @@ -1,4 +1,32 @@ -//------------------------------------------------------------------------------ +// 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. // 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 index 2cd7f4d3..202d581f 100644 --- 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 @@ -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. From 1ed886a04502d443b9858d0cbd9168e0b18e823b Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 22 Nov 2012 11:21:23 -0500 Subject: [PATCH 343/379] Added tag build-2.0.0.184 for changeset a4ec851f9c29 From 9f803069fbc573100320b97be17a07cb6bc71797 Mon Sep 17 00:00:00 2001 From: robvde Date: Thu, 22 Nov 2012 23:48:04 +0400 Subject: [PATCH 344/379] Fixed Typo --- WebsitePanel/Database/update_db.sql | 6 +++--- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 65f678f4..ff98ddef 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -577,9 +577,9 @@ ALTER TABLE [dbo].[ExchangeAccounts] ADD END GO -IF NOT EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE UserPrincipalName IS NOT NULL) +IF NOT EXISTS(SELECT 1 FROM [dbo].[ExchangeAccounts] WHERE UserPrincipalName IS NOT NULL) BEGIN - UPDATE [dbo].[ExchangeAccounts] SET [UserPrincipalName] = PrimaryEmailAddress + UPDATE [dbo].[ExchangeAccounts] SET [UserPrincipalName] = PrimaryEmailAddress WHERE AccountType IN (1,7) END GO @@ -6924,7 +6924,7 @@ AS UPDATE LyncUsers SET SipAddress = @SipAddress WHERE - AccountID = @AccountID AND AccountType IN (1,7) + AccountID = @AccountID RETURN' END diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + From 86636a6f8c7947b02bafed58750eecf1bf669602 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 22 Nov 2012 21:42:47 -0500 Subject: [PATCH 345/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + From 97e2ca36901a7d4db5ce8ad7cc429981de2d6c4d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Thu, 22 Nov 2012 21:49:26 -0500 Subject: [PATCH 346/379] Added tag build-2.0.0.185 for changeset 1b83d7eccae9 From a146b6ebd54c88d78e2ac7ad5b8b58d21c5af324 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 23 Nov 2012 13:24:22 +0400 Subject: [PATCH 347/379] Fixed wsp-10061 Getting error when deleting an accepted domain Occurs when OCS is enabled and no edge servers are defined --- .../Code/HostedSolution/OCSController.cs | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) 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); + } } } From 2d6acfc7fc11674484388835425e0793417d564e Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 23 Nov 2012 13:50:02 +0400 Subject: [PATCH 348/379] Fixed wsp-10062 Need to add check so that it is not possible to delete an accepted domain from a tenant or an email address from a mailbox when used in UPN --- .../Code/ExchangeServer/ExchangeServerController.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 486e2519..7735e310 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -2158,7 +2158,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); } From f3daaacb8c072a4e945ab38b6059708475afcb26 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 23 Nov 2012 13:58:59 +0400 Subject: [PATCH 349/379] EmailAddresses list view headers updated --- .../ExchangeMailboxEmailAddresses.ascx.resx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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..e20ccdb3 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> + <b>Primary E-Mail Address</b> The 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 From 18a4608ad251d7f82679a5e7aee1453f555a24d6 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 23 Nov 2012 15:22:36 +0400 Subject: [PATCH 350/379] wsp-10003 update the Lync users sip address when the primary email address is changed in mailbox --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++- .../UserControls/DomainSelector.ascx.cs | 12 ++ .../UserControls/EmailAddress.ascx.cs | 6 +- .../Lync/UserControls/LyncUserSettings.ascx | 5 +- .../UserControls/LyncUserSettings.ascx.cs | 106 ++++++++++++++---- .../LyncUserSettings.ascx.designer.cs | 37 ++---- 6 files changed, 126 insertions(+), 54 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + 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/Lync/UserControls/LyncUserSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx index 5da9df82..9ac249d9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx @@ -1,2 +1,5 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncUserSettings.ascx.cs" Inherits="WebsitePanel.Portal.Lync.UserControls.LyncUserSettings" %> - \ No newline at end of file +<%@ 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 index c7b45afa..78dc4792 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs @@ -28,7 +28,9 @@ using System; using System.Web.UI.WebControls; -using EntServer = WebsitePanel.EnterpriseServer; +using WebsitePanel.EnterpriseServer; +using WebsitePanel.Providers.HostedSolution; +using WebsitePanel.Providers.ResultObjects; namespace WebsitePanel.Portal.Lync.UserControls { @@ -40,17 +42,50 @@ namespace WebsitePanel.Portal.Lync.UserControls public string sipAddress { - get { return ddlSipAddresses.SelectedItem.Value; } + 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; - foreach (ListItem li in ddlSipAddresses.Items) + + if (ddlSipAddresses.Visible) { - if (li.Value == value) + if ((ddlSipAddresses != null) && (ddlSipAddresses.Items != null)) { - ddlSipAddresses.ClearSelection(); - li.Selected = true; - break; + 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]; + } } } } @@ -76,25 +111,54 @@ namespace WebsitePanel.Portal.Lync.UserControls private void BindAddresses() { - EntServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID); + OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID); - foreach (EntServer.ExchangeEmailAddress email in emails) - { - ListItem li = new ListItem(); - li.Text = email.EmailAddress; - li.Value = email.EmailAddress; - li.Selected = email.IsPrimary; - ddlSipAddresses.Items.Add(li); - } + if (user == null) + return; - foreach (ListItem li in ddlSipAddresses.Items) + if (user.AccountType == ExchangeAccountType.Mailbox) { - if (li.Value == sipAddressToSelect) + 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) { - ddlSipAddresses.ClearSelection(); - li.Selected = true; - break; + 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]; + } + } + + } } 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 index 202d581f..1400a773 100644 --- 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 @@ -1,31 +1,3 @@ -// 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. @@ -48,5 +20,14 @@ namespace WebsitePanel.Portal.Lync.UserControls { /// 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; } } From 3e8a53a4684a34611365a53646079a5787ff6fa8 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 23 Nov 2012 15:54:47 +0400 Subject: [PATCH 351/379] Fixed: Do not allow to delete a domain when used by hosting organization objects --- WebsitePanel/Database/update_db.sql | 26 +++++++++++++++++++ .../Code/Data/DataProvider.cs | 16 ++++++++++++ .../ExchangeServerController.cs | 4 +++ .../HostedSolution/OrganizationController.cs | 10 ++++++- .../WebsitePanel_SharedResources.ascx.resx | 6 +++++ .../ExchangeDomainNames.ascx.cs | 3 +-- .../OrganizationDomainNames.ascx.cs | 3 +-- .../Lync/LyncAddLyncUserPlan.ascx.cs | 1 + 8 files changed, 64 insertions(+), 5 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index ff98ddef..958dac68 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6931,3 +6931,29 @@ 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 \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index f7ab7cf4..93935dfb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -829,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) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 7735e310..332a50aa 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -1534,6 +1534,10 @@ namespace WebsitePanel.EnterpriseServer if(domain == null) return -1; + if (DataProvider.CheckDomainUsedByHostedOrganization(domain.DomainName) == 1) + { + return -1; + } // delete domain on Exchange int[] hubTransportServiceIds; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 00662bce..be56a17f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -425,7 +425,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); 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 fc7a3c5b..107773db 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -2896,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. @@ -5072,6 +5075,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/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.cs index 314bf130..18f4b688 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.cs @@ -103,8 +103,7 @@ namespace WebsitePanel.Portal.ExchangeServer int result = ES.Services.Organizations.DeleteOrganizationDomain(PanelRequest.ItemID, domainId); if (result < 0) { - messageBox.ShowResultMessage(result); - return; + messageBox.ShowErrorMessage("EXCHANGE_UNABLE_TO_DELETE_DOMAIN"); } // rebind domains diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs index 1fd56a34..bc61fa59 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs @@ -103,8 +103,7 @@ namespace WebsitePanel.Portal.ExchangeServer int result = ES.Services.Organizations.DeleteOrganizationDomain(PanelRequest.ItemID, domainId); if (result < 0) { - messageBox.ShowResultMessage(result); - return; + messageBox.ShowErrorMessage("EXCHANGE_UNABLE_TO_DELETE_DOMAIN"); } // rebind domains 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; } From 5098496519a6c727cb8dc25d6cfd9659230fb17c Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 23 Nov 2012 07:22:46 -0500 Subject: [PATCH 352/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++-------- .../LyncUserSettings.ascx.designer.cs | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + 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 index 1400a773..3ca9f655 100644 --- 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 @@ -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. From 9bce7801791cddba9dc270c8a6189b04c0e6e5f6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 23 Nov 2012 07:28:06 -0500 Subject: [PATCH 353/379] Added tag build-2.0.0.186 for changeset e35930a1160e From f3d1a24a4038d60de077075cd4fdea557c9b768c Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 23 Nov 2012 17:03:58 +0400 Subject: [PATCH 354/379] Fixed wsp-10063 Error when clicking "Create new Mailbox Button" in exchange build 2.0.0.186 --- .../ExchangeServer/ExchangeMailboxes.ascx | 2 +- .../WebsitePanel/Lync/LyncUsers.ascx | 2 +- .../Lync/LyncUsers.ascx.designer.cs | 30 +------------------ 3 files changed, 3 insertions(+), 31 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx index 35443356..09dc751d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx @@ -71,7 +71,7 @@ - <%# Eval("UserPrincipalName") %> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx index f94d5abd..1eba42da 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx @@ -67,7 +67,7 @@ - <%# Eval("UserPrincipalName") %> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs index 9f386e85..25937689 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs @@ -1,32 +1,4 @@ -// 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. // From bc958d801493d25aa6f7c16287b34502276201e7 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 23 Nov 2012 08:08:25 -0500 Subject: [PATCH 355/379] Merge --- .../Lync/LyncUsers.ascx.designer.cs | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs index 25937689..9f386e85 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx.designer.cs @@ -1,4 +1,32 @@ -//------------------------------------------------------------------------------ +// 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. // From 5fa9d07d0b416af7d270364ce58819fd029223d5 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 23 Nov 2012 08:13:44 -0500 Subject: [PATCH 356/379] Added tag build-2.0.0.187 for changeset 3f60aa0b2d29 From 8a4159a0ff3bdf2886f2b7549eeb7fe38ce89d44 Mon Sep 17 00:00:00 2001 From: robvde Date: Fri, 23 Nov 2012 18:42:11 +0400 Subject: [PATCH 357/379] UI plumbing change UPN Fixed: ExchangeAccount Password stored unencrypted when setting primary email address --- WebsitePanel/Database/update_db.sql | 9 ++++- .../Packages/Quotas.cs | 1 + .../ExchangeServerController.cs | 12 +++++- .../HostedSolution/OrganizationController.cs | 2 +- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++++-- .../WebsitePanel_SharedResources.ascx.resx | 3 ++ .../OrganizationUserGeneralSettings.ascx | 6 ++- .../OrganizationUserGeneralSettings.ascx.cs | 26 +++++++++++++ ...zationUserGeneralSettings.ascx.designer.cs | 37 +++++-------------- 9 files changed, 75 insertions(+), 35 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 958dac68..9c756686 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6956,4 +6956,11 @@ AS RETURN @Result' END -GO \ No newline at end of file +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 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs index 8090dd31..7541d383 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs @@ -150,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/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 332a50aa..2c0c761d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -1817,7 +1817,8 @@ namespace WebsitePanel.EnterpriseServer exchange.DisableMailbox(account.AccountName); account.AccountType = ExchangeAccountType.User; - account.MailEnabledPublicFolder = false; + account.MailEnabledPublicFolder = false; + account.AccountPassword = null; UpdateAccount(account); DataProvider.DeleteUserEmailAddresses(account.AccountId, account.PrimaryEmailAddress); @@ -2129,6 +2130,7 @@ namespace WebsitePanel.EnterpriseServer } // save account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -2357,6 +2359,7 @@ namespace WebsitePanel.EnterpriseServer else account.MailboxManagerActions &= ~action; // update account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -3193,6 +3196,7 @@ namespace WebsitePanel.EnterpriseServer // update account account.DisplayName = displayName; account.PrimaryEmailAddress = emailAddress; + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -3521,6 +3525,7 @@ namespace WebsitePanel.EnterpriseServer // update account account.DisplayName = displayName; + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -3741,6 +3746,7 @@ namespace WebsitePanel.EnterpriseServer addressLists.ToArray()); // save account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -4143,6 +4149,7 @@ namespace WebsitePanel.EnterpriseServer account.AccountName = accountName; account.MailEnabledPublicFolder = true; account.PrimaryEmailAddress = email; + account.AccountPassword = null; UpdateAccount(account); // register e-mail @@ -4195,6 +4202,7 @@ namespace WebsitePanel.EnterpriseServer // update and save account account.MailEnabledPublicFolder = false; account.PrimaryEmailAddress = ""; + account.AccountPassword = null; UpdateAccount(account); @@ -4314,6 +4322,7 @@ namespace WebsitePanel.EnterpriseServer { // rename original folder account.DisplayName = newFullName; + account.AccountPassword = null; UpdateAccount(account); // rename nested folders @@ -4531,6 +4540,7 @@ namespace WebsitePanel.EnterpriseServer emailAddress); // save account + account.AccountPassword = null; UpdateAccount(account); return 0; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index be56a17f..bcb9d185 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1735,7 +1735,7 @@ namespace WebsitePanel.EnterpriseServer if (!String.IsNullOrEmpty(password)) account.AccountPassword = CryptoUtils.Encrypt(password); else - account.AccountPassword = string.Empty; + account.AccountPassword = null; UpdateAccount(account); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + 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 107773db..30363019 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -3263,6 +3263,9 @@ Users per Organization + + Allow to Change UserPrincipalName + Domains per Organization diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx index 4ee2563c..cc4d2ce4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx @@ -8,6 +8,7 @@ <%@ 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" %> @@ -43,7 +44,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 627d7d89..16bb35ec 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs @@ -120,6 +120,32 @@ 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; + } + else + { + lblUserPrincipalName.Visible = false; + 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 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 2295ee44..9b3fbd4b 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,31 +1,3 @@ -// 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. @@ -139,6 +111,15 @@ namespace WebsitePanel.Portal.HostedSolution { /// 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; + /// /// locDisplayName control. /// From 3d0474e6234097818281acc1e939e37f4434b6e9 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Fri, 23 Nov 2012 13:55:07 -0500 Subject: [PATCH 358/379] Added tag build-2.0.0.188 for changeset 7367e8b9dad7 From 4c75df5a73b09e152cfe7cc79454f0dfc4c75d36 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 24 Nov 2012 11:39:42 +0400 Subject: [PATCH 359/379] Added change user principalName Added button to change user password Changes EmailAddresses, user principal name disabled --- WebsitePanel/Database/update_db.sql | 21 ++ .../ExchangeServer/ExchangeEmailAddress.cs | 8 + .../OrganizationProxy.cs | 162 ++++++++++++++- .../Code/Data/DataProvider.cs | 10 + .../ExchangeServerController.cs | 7 +- .../HostedSolution/OrganizationController.cs | 172 +++++++++++++++- .../esOrganizations.asmx.cs | 16 ++ .../HostedSolution/ExchangeEmailAddress.cs | 2 + .../HostedSolution/IOrganization.cs | 4 + .../OrganizationProvider.cs | 193 ++++++++++-------- .../OrganizationProxy.cs | 156 ++++++++++++-- .../WebsitePanel.Server/Organizations.asmx.cs | 14 ++ .../WebsitePanel_SharedResources.ascx.resx | 13 ++ .../OrganizationUserGeneralSettings.ascx.resx | 9 + .../ExchangeMailboxEmailAddresses.ascx | 4 +- ...angeMailboxEmailAddresses.ascx.designer.cs | 9 - .../OrganizationUserGeneralSettings.ascx | 28 ++- .../OrganizationUserGeneralSettings.ascx.cs | 119 +++++++++-- ...zationUserGeneralSettings.ascx.designer.cs | 40 +++- WebsitePanel/Sources/generate_es_proxies.bat | 8 +- .../Sources/generate_server_proxies.bat | 8 +- 21 files changed, 850 insertions(+), 153 deletions(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 9c756686..ad4b79c9 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6964,3 +6964,24 @@ 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 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.Client/OrganizationProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs index fe8a4b6e..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. @@ -54,7 +54,6 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { using WebsitePanel.Providers.ResultObjects; - /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] @@ -104,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; @@ -175,6 +178,12 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { /// public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted; + /// + public event SetUserPrincipalNameCompletedEventHandler SetUserPrincipalNameCompleted; + + /// + public event SetUserPasswordCompletedEventHandler SetUserPasswordCompleted; + /// public event SearchAccountsCompletedEventHandler SearchAccountsCompleted; @@ -1336,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) { @@ -2000,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/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index 93935dfb..a92f6776 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -2354,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( diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 2c0c761d..e012ee65 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -1313,8 +1313,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(); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index bcb9d185..17c5c573 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -41,6 +41,7 @@ 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; @@ -1670,7 +1671,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 @@ -1752,6 +1753,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, @@ -1969,6 +2126,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/esOrganizations.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs index 38acbebf..cc4a6b85 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs @@ -195,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.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/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.HostedSolution/OrganizationProvider.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs index 147bfdd1..782b59d0 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"); } @@ -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,25 +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 = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.UserPrincipalName); - + 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)) { @@ -556,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, @@ -583,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); @@ -609,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)) @@ -619,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); @@ -629,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) { @@ -679,15 +710,15 @@ namespace WebsitePanel.Providers.HostedSolution } - #endregion + #endregion #region Domains - + public void CreateOrganizationDomain(string organizationDistinguishedName, string domain) { CreateOrganizationDomainInternal(organizationDistinguishedName, domain); } - + /// /// Creates organization domain /// @@ -702,7 +733,7 @@ namespace WebsitePanel.Providers.HostedSolution HostedSolutionLog.LogEnd("CreateOrganizationDomainInternal"); } - + public void DeleteOrganizationDomain(string organizationDistinguishedName, string domain) { DeleteOrganizationDomainInternal(organizationDistinguishedName, domain); @@ -730,6 +761,6 @@ namespace WebsitePanel.Providers.HostedSolution return Environment.UserDomainName != Environment.MachineName; } - + } } 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/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.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index 30363019..e5ac1de2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -3083,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. 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 6946695e..2867a2c5 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 @@ -239,4 +239,13 @@ Login Name: + + Set Password + + + Set Login Name + + + Set login name for services + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx index ce2359a1..6f74c098 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.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs index 4a04d015..b9a27568 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 @@ -182,14 +182,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/OrganizationUserGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx index cc4d2ce4..b1ad839d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx @@ -4,7 +4,7 @@ <%@ 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" %> @@ -47,7 +47,15 @@
+ + @@ -62,8 +70,13 @@ + @@ -71,9 +84,6 @@
+ + +
+ + + + +
- + + + +
-

@@ -107,7 +117,7 @@
- @@ -146,7 +156,7 @@ - @@ -191,7 +201,7 @@ - @@ -239,7 +249,7 @@ - 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 16bb35ec..f74e0aa2 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); @@ -127,19 +126,54 @@ namespace WebsitePanel.Portal.HostedSolution { lblUserPrincipalName.Visible = true; upn.Visible = false; + ddlEmailAddresses.Visible = false; + btnSetUserPrincipalName.Visible = false; + chkInherit.Visible = false; } else { lblUserPrincipalName.Visible = false; - upn.Visible = true; - if (!string.IsNullOrEmpty(user.UserPrincipalName)) + upn.Visible = false; + ddlEmailAddresses.Visible = false; + btnSetUserPrincipalName.Visible = true; + chkInherit.Visible = true; + if (user.AccountType == ExchangeAccountType.Mailbox) { - string[] Tmp = user.UserPrincipalName.Split('@'); - upn.AccountName = Tmp[0]; + ddlEmailAddresses.Visible = true; + WebsitePanel.EnterpriseServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID); - if (Tmp.Length > 1) + foreach (WebsitePanel.EnterpriseServer.ExchangeEmailAddress mail in emails) { - upn.DomainName = Tmp[1]; + 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]; + } } } @@ -153,6 +187,8 @@ namespace WebsitePanel.Portal.HostedSolution chkLocked.Checked = user.Locked; + password.ValidationEnabled = true; + password.Password = string.Empty; } catch (Exception ex) { @@ -165,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, @@ -230,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_PRINCIPALNAME"); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("ORGANIZATION_SET_USER_PRINCIPALNAME", 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 9b3fbd4b..b9632720 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 @@ -120,6 +120,33 @@ namespace WebsitePanel.Portal.HostedSolution { /// 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. /// @@ -166,13 +193,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. diff --git a/WebsitePanel/Sources/generate_es_proxies.bat b/WebsitePanel/Sources/generate_es_proxies.bat index 0f50b419..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 @@ -92,8 +92,8 @@ 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 -%WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient -%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs +REM %WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs diff --git a/WebsitePanel/Sources/generate_server_proxies.bat b/WebsitePanel/Sources/generate_server_proxies.bat index 8c3cfdee..d4811b50 100644 --- a/WebsitePanel/Sources/generate_server_proxies.bat +++ b/WebsitePanel/Sources/generate_server_proxies.bat @@ -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 @@ -56,7 +56,7 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WebServerProxy.cs REM %WSDL% %SERVER_URL%/WindowsServer.asmx /out:.\WebsitePanel.Server.Client\WindowsServerProxy.cs /namespace:WebsitePanel.Server /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WindowsServerProxy.cs -%WSDL% %SERVER_URL%/LyncServer.asmx /out:.\WebsitePanel.Server.Client\LyncServerProxy.cs /namespace:WebsitePanel.Providers.Lync /type:webClient /fields -%WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs +REM %WSDL% %SERVER_URL%/LyncServer.asmx /out:.\WebsitePanel.Server.Client\LyncServerProxy.cs /namespace:WebsitePanel.Providers.Lync /type:webClient /fields +REM %WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs From bdd5a9dd689f4605869cad0f4729586d4733ba6e Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 24 Nov 2012 11:47:00 +0400 Subject: [PATCH 360/379] Lync sipaddress update added --- WebsitePanel/Database/update_db.sql | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index ad4b79c9..3528e295 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6985,3 +6985,10 @@ WHERE 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 From d644f3852291cdfaf341dd36150ac26319e816cb Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 24 Nov 2012 07:32:51 -0500 Subject: [PATCH 361/379] Merge --- ...angeMailboxEmailAddresses.ascx.designer.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) 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 b9a27568..4f605860 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) 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. From 5f01a22a9e274877191f4c9a56e371689f2edd11 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 24 Nov 2012 07:41:14 -0500 Subject: [PATCH 362/379] Added tag build-2.0.0.189 for changeset ce57a17617a6 From 5e00d6d6e080f0ce1a1ce57c6705eb8828404d96 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 24 Nov 2012 21:20:08 +0400 Subject: [PATCH 363/379] All unused form comments removed UserGeneralSettings: Notes relocated, Update Service renamed --- .../WebsitePanel.EnterpriseServer/Web.config | 14 +++- .../BlackBerryUsers.ascx.resx | 6 +- .../CreateNewBlackBerryUser.ascx.resx | 6 +- .../EditBlackBerryUser.ascx.resx | 6 +- .../CRMOrganizationDetails.ascx.resx | 7 +- .../App_LocalResources/CRMUserRoles.ascx.resx | 8 +-- .../CRM/App_LocalResources/CRMUsers.ascx.resx | 6 +- .../CreateCRMUser.ascx.resx | 6 +- .../ExchangeActiveSyncSettings.ascx.resx | 4 +- .../ExchangeAddDomainName.ascx.resx | 2 +- .../ExchangeAddMailboxPlan.ascx.resx | 2 +- .../ExchangeContactGeneralSettings.ascx.resx | 2 +- .../ExchangeContactMailFlowSettings.ascx.resx | 2 +- .../ExchangeContacts.ascx.resx | 2 +- .../ExchangeCreateContact.ascx.resx | 2 +- .../ExchangeCreateDistributionList.ascx.resx | 2 +- .../ExchangeCreateMailbox.ascx.resx | 8 +-- .../ExchangeCreatePublicFolder.ascx.resx | 6 +- ...geDistributionListEmailAddresses.ascx.resx | 2 +- ...eDistributionListGeneralSettings.ascx.resx | 2 +- ...DistributionListMailFlowSettings.ascx.resx | 2 +- ...hangeDistributionListPermissions.ascx.resx | 6 +- .../ExchangeDistributionLists.ascx.resx | 2 +- .../ExchangeDomainNames.ascx.resx | 4 +- .../ExchangeDomainRecords.ascx.resx | 2 +- .../ExchangeMailboxEmailAddresses.ascx.resx | 2 +- .../ExchangeMailboxGeneralSettings.ascx.resx | 2 +- .../ExchangeMailboxMailFlowSettings.ascx.resx | 2 +- .../ExchangeMailboxMobile.ascx.resx | 2 +- .../ExchangeMailboxMobileDetails.ascx.resx | 2 +- .../ExchangeMailboxPermissions.ascx.resx | 2 +- .../ExchangeMailboxPlans.ascx.resx | 2 +- ...ExchangeMailboxSetupInstructions.ascx.resx | 2 +- .../ExchangeMailboxes.ascx.resx | 8 +-- ...changePublicFolderEmailAddresses.ascx.resx | 6 +- ...hangePublicFolderGeneralSettings.ascx.resx | 6 +- .../ExchangePublicFolderMailEnable.ascx.resx | 6 +- ...angePublicFolderMailFlowSettings.ascx.resx | 6 +- .../ExchangePublicFolders.ascx.resx | 6 +- .../ExchangeStorageUsage.ascx.resx | 2 +- .../ExchangeStorageUsageBreakdown.ascx.resx | 2 +- .../OrganizationAddDomainName.ascx.resx | 2 +- .../OrganizationCreateOrganization.ascx.resx | 2 +- .../OrganizationCreateUser.ascx.resx | 8 +-- .../OrganizationDomainNames.ascx.resx | 4 +- .../OrganizationHome.ascx.resx | 4 +- .../OrganizationUserGeneralSettings.ascx.resx | 6 +- ...rganizationUserSetupInstructions.ascx.resx | 2 +- .../OrganizationUsers.ascx.resx | 8 +-- .../Organizations.ascx.resx | 4 +- .../OrganizationUserGeneralSettings.ascx | 20 +++--- ...zationUserGeneralSettings.ascx.designer.cs | 64 ++++++------------- .../LyncAddLyncUserPlan.ascx.resx | 2 +- .../LyncCreateUser.ascx.resx | 2 +- .../App_LocalResources/LyncEditUser.ascx.resx | 2 +- .../LyncFederationDomains.ascx.resx | 6 +- .../LyncUserPlans.ascx.resx | 2 +- .../App_LocalResources/LyncUsers.ascx.resx | 4 +- .../CreateOCSUser.ascx.resx | 6 +- .../App_LocalResources/EditOCSUser.ascx.resx | 11 +--- .../OCS/App_LocalResources/OCSUsers.ascx.resx | 8 +-- 61 files changed, 131 insertions(+), 205 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..6c7d9d64 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,19 @@ - + + - - + + + 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/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 8775c057..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: 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 e20ccdb3..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> The 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/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 a254bede..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: 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 index 1b687b23..5068ac02 100644 --- 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 @@ -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/OrganizationCreateOrganization.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx index 0f6fe988..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: * 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 index 8775c057..cb83dba8 100644 --- 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 @@ -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: 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 2867a2c5..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: @@ -246,6 +244,6 @@ Set Login Name - Set login name for services + 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 3923f30b..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: 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/OrganizationUserGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx index b1ad839d..8fe84227 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx @@ -116,6 +116,15 @@ + + + + + +
+ +
+ @@ -239,21 +248,10 @@ - - - - - -
- -
- - - 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 50348e70..cb4369f6 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,31 +1,3 @@ -// 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. @@ -346,6 +318,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. /// @@ -688,24 +678,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. /// 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 efcae705..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: 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 748a13ee..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 @@ -130,9 +130,7 @@ 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 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 From 8c940fb73df8ccc465c05d36bae5c1d7deb3ebb6 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 24 Nov 2012 12:49:39 -0500 Subject: [PATCH 364/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 14 ++-------- ...zationUserGeneralSettings.ascx.designer.cs | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 6c7d9d64..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,19 +5,11 @@ - - + - - - + + 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 cb4369f6..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. From 3e8813c1e6f69575fd5ae1d55e01d9e40c3f2bf7 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 24 Nov 2012 12:59:15 -0500 Subject: [PATCH 365/379] Added tag build-2.0.0.190 for changeset cd9b3fb5fe86 From ded00c3c31f5cb1dbecdc3526440c5aab700a082 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 24 Nov 2012 13:02:56 -0500 Subject: [PATCH 366/379] Added tag build-2.0.0.191 for changeset bf33156ff169 From 695c0bc94f7fc6fb482dc06891af17a761807721 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 24 Nov 2012 22:17:37 +0400 Subject: [PATCH 367/379] Replaced upn by samaccountname as accountname in exchange accounts ContactGeneralSettings reformatted --- .../ExchangeServerController.cs | 31 +++++++------ .../HostedSolution/OrganizationController.cs | 11 +++-- .../OrganizationProvider.cs | 2 +- .../ExchangeContactGeneralSettings.ascx | 23 +++++----- ...ngeContactGeneralSettings.ascx.designer.cs | 45 ++++++++----------- 5 files changed, 55 insertions(+), 57 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index e012ee65..e4fccf87 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -767,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) { @@ -1241,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); @@ -1819,7 +1822,7 @@ 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; @@ -1869,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); @@ -1944,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) { @@ -1991,7 +1994,7 @@ namespace WebsitePanel.EnterpriseServer hideAddressBook = true; exchange.SetMailboxGeneralSettings( - account.AccountName, + account.UserPrincipalName, hideAddressBook, disabled); @@ -2063,7 +2066,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxEmailAddresses( - account.AccountName, + account.UserPrincipalName, GetAccountSimpleEmailAddresses(itemId, accountId)); return 0; @@ -2119,7 +2122,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxPrimaryEmailAddress( - account.AccountName, + account.UserPrincipalName, emailAddress); if (DataProvider.CheckOCSUserExists(account.AccountId)) @@ -2187,7 +2190,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxEmailAddresses( - account.AccountName, + account.UserPrincipalName, GetAccountSimpleEmailAddresses(itemId, accountId)); return 0; @@ -2228,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; } @@ -2273,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, @@ -2321,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; } @@ -2529,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; } @@ -2571,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; @@ -2656,7 +2659,7 @@ namespace WebsitePanel.EnterpriseServer exchange.SetMailboxAdvancedSettings( org.OrganizationId, - account.AccountName, + account.UserPrincipalName, plan.EnablePOP, plan.EnableIMAP, plan.EnableOWA, diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 17c5c573..ef2994d8 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -1336,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); @@ -1432,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); @@ -1461,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); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs index 782b59d0..cd7e60b0 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs @@ -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(); 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..1868eb35 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 @@ -228,6 +228,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 +588,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 +605,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; } } From 86d64a71e3b5e462ec9cf3430c45c46911e6db98 Mon Sep 17 00:00:00 2001 From: robvde Date: Sat, 24 Nov 2012 22:26:12 +0400 Subject: [PATCH 368/379] Few adjustment with regard to accountName --- .../Code/ExchangeServer/ExchangeServerController.cs | 2 +- .../Code/HostedSolution/CRMController.cs | 2 +- .../Code/HostedSolution/ReportController.cs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index e4fccf87..9e8665bb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -4766,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/ReportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs index adad212f..b934d5e0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs @@ -444,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); } From a9213a2098f15b9fdb2a8988793c90e00f89ec4d Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sat, 24 Nov 2012 13:57:46 -0500 Subject: [PATCH 369/379] Added tag build-2.0.0.192 for changeset c6043f88f4b6 From 769751374e30bbed66c0e8593845c61a2bf4e6ea Mon Sep 17 00:00:00 2001 From: robvde Date: Sun, 25 Nov 2012 06:28:25 +0400 Subject: [PATCH 370/379] Fixed: Empty completion message when setting user principalname --- .../ExchangeServer/OrganizationUserGeneralSettings.ascx.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 f74e0aa2..3ea2ae6c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs @@ -287,11 +287,11 @@ namespace WebsitePanel.Portal.HostedSolution return; } - messageBox.ShowSuccessMessage("ORGANIZATION_SET_USER_PRINCIPALNAME"); + messageBox.ShowSuccessMessage("ORGANIZATION_SET_USER_USERPRINCIPALNAME"); } catch (Exception ex) { - messageBox.ShowErrorMessage("ORGANIZATION_SET_USER_PRINCIPALNAME", ex); + messageBox.ShowErrorMessage("ORGANIZATION_SET_USER_USERPRINCIPALNAME", ex); } } From e45b5faa0d5605c17cdc6b3df227a0eedc578e07 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Sun, 25 Nov 2012 08:43:48 -0500 Subject: [PATCH 371/379] Added tag build-2.0.0.193 for changeset aa5d35f5f7f7 From 4b631cff90370c613b8cfce60ba87dc51f22f452 Mon Sep 17 00:00:00 2001 From: robvde Date: Wed, 28 Nov 2012 08:25:53 +0400 Subject: [PATCH 372/379] Fixed: MailboxEmailAddresses unable to select userprincipalName Fixed: MailboxEmailAddresses after trying to delete userPrincipalName, warning displayed --- .../WebsitePanel.EnterpriseServer/Web.config | 24 ++++++++++------ .../WebsitePanel_SharedResources.ascx.resx | 4 +++ .../ExchangeMailboxEmailAddresses.ascx | 2 +- .../ExchangeMailboxEmailAddresses.ascx.cs | 22 +++++++++++++++ ...angeMailboxEmailAddresses.ascx.designer.cs | 28 ------------------- 5 files changed, 43 insertions(+), 37 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index 3766094f..ac809ac4 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -4,14 +4,22 @@
- - - - - - - - + + + + + + + + + + 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 e5ac1de2..f90f4aca 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -3336,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 diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx index 6f74c098..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 @@ - + 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 816e6d19..b0d31a98 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.cs @@ -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 4f605860..b9a27568 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,31 +1,3 @@ -// 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. From 396f8e68e0f96b1744073881e92d44d00b8d2865 Mon Sep 17 00:00:00 2001 From: robvde Date: Wed, 28 Nov 2012 20:38:29 +0400 Subject: [PATCH 373/379] Delete Leaf error when deleting an user object. --- .../HostedSolution/ActiveDirectoryUtils.cs | 3 +- .../DomainsAddDomain.ascx.designer.cs | 28 ------------------- 2 files changed, 2 insertions(+), 29 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs index 5e608f88..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(); } 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 835fabf2..0b33b63b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/DomainsAddDomain.ascx.designer.cs @@ -1,31 +1,3 @@ -// 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. From 821a0c3859943ce62c5883fd4584e344fc5cf2bd Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 28 Nov 2012 14:02:33 -0500 Subject: [PATCH 374/379] Merge --- .../WebsitePanel.EnterpriseServer/Web.config | 24 ++++++---------- .../DomainsAddDomain.ascx.designer.cs | 28 +++++++++++++++++++ ...angeMailboxEmailAddresses.ascx.designer.cs | 28 +++++++++++++++++++ 3 files changed, 64 insertions(+), 16 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index ac809ac4..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -4,22 +4,14 @@
- - - - - - - - - - + + + + + + + + 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 0b33b63b..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,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. 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 b9a27568..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. From 8dca09cd1734d9f1b992df10886e674f2e3e8d25 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 28 Nov 2012 14:14:30 -0500 Subject: [PATCH 375/379] Added tag build-2.0.0.194 for changeset f08a96b975f8 From b4892167651dbc980585a2e753bf019a6a90fd50 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 28 Nov 2012 16:34:47 -0500 Subject: [PATCH 376/379] Remove Beta Feed URL from Installer Remove Beta tag from Installer --- .../Sources/WebsitePanel.Installer/App.Debug.config | 2 +- .../Sources/WebsitePanel.Installer/App.Release.config | 2 +- .../Sources/WebsitePanel.Installer/App.config | 2 +- .../Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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..ed4edc49 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs @@ -209,7 +209,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(); From 139d2463ef9d4ada8c11213e01d65e75f441d52a Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 28 Nov 2012 16:36:17 -0500 Subject: [PATCH 377/379] Add Copywrite to Installer File --- .../ApplicationForm.Designer.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/ApplicationForm.Designer.cs index ed4edc49..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 From 5c7cea1c9fd4598326e3c5e10ec8ec2193a6e975 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 28 Nov 2012 17:52:54 -0500 Subject: [PATCH 378/379] Remove Old Release Notes Updated Build Date --- WebsitePanel/Readme.htm | 178 ----------------------------- WebsitePanel/ReleaseNotes.htm | 208 ---------------------------------- WebsitePanel/build.xml | 2 +- 3 files changed, 1 insertion(+), 387 deletions(-) delete mode 100644 WebsitePanel/Readme.htm delete mode 100644 WebsitePanel/ReleaseNotes.htm 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/build.xml b/WebsitePanel/build.xml index c138cd72..eac75038 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -5,7 +5,7 @@ 2.0.0 $(BUILD_NUMBER) $(BUILD_NUMBER) - 2012-09-23 + 2012-11-28 .. $(RootFolder)\WebsitePanel From fce595e55d963a770670b50f7b68887e9fe8da16 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Wed, 28 Nov 2012 18:04:44 -0500 Subject: [PATCH 379/379] Added tag build-2.0.0.195 for changeset 64c378876081