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)