From 97e4dce0e529cb78bb92ac91fdb3fda974fde491 Mon Sep 17 00:00:00 2001 From: robvde Date: Wed, 17 Oct 2012 09:15:11 +0400 Subject: [PATCH] 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)