Fixed switch static/dedicated: switch activities were wrongly updating the

PackageIPAddresses table
This commit is contained in:
robvde 2012-09-28 09:29:59 +04:00
parent 2ed1ae9e06
commit c90b613039

View file

@ -644,8 +644,7 @@ namespace WebsitePanel.EnterpriseServer
PackageController.UpdatePackageItem(siteItem); PackageController.UpdatePackageItem(siteItem);
// associate IP with web site // associate IP with web site
if (addressId != 0) ServerController.AddItemIPAddress(siteItemId, ipAddressId);
ServerController.AddItemIPAddress(siteItemId, addressId);
DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName); DomainInfo ZoneInfo = ServerController.GetDomain(domain.ZoneName);
@ -667,19 +666,26 @@ namespace WebsitePanel.EnterpriseServer
ServiceProviderProxy.Init(web, siteItem.ServiceId); ServiceProviderProxy.Init(web, siteItem.ServiceId);
WebSite site = web.GetSite(siteItem.SiteId); WebSite site = web.GetSite(siteItem.SiteId);
List<ServerBinding> newBindings = new List<ServerBinding>();
foreach (ServerBinding b in site.Bindings)
{
newBindings.Add(b);
}
// load web site IP address // load web site IP address
IPAddressInfo ip = ServerController.GetIPAddress(siteItem.SiteIPAddressId); IPAddressInfo ip = ServerController.GetIPAddress(siteItem.SiteIPAddressId);
string ipAddr = "*"; string ipAddr = "*";
if (ip != null) if (ip != null)
ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP; ipAddr = !String.IsNullOrEmpty(ip.InternalIP) ? ip.InternalIP : ip.ExternalIP;
newBindings.Add(new ServerBinding(ipAddr, "80", "")); List<ServerBinding> newBindings = new List<ServerBinding>();
ServerBinding srvBinding = new ServerBinding(ipAddr, "80", "");
newBindings.Add(srvBinding);
foreach (ServerBinding b in site.Bindings)
{
if (!((b.Host == srvBinding.Host) &
(b.IP == srvBinding.IP) &
(b.Port == srvBinding.Port)))
newBindings.Add(b);
}
web.UpdateSiteBindings(siteItem.SiteId, newBindings.ToArray(), false); web.UpdateSiteBindings(siteItem.SiteId, newBindings.ToArray(), false);
@ -722,8 +728,29 @@ namespace WebsitePanel.EnterpriseServer
if (domain != null) if (domain != null)
DeleteWebSitePointer(siteItemId, domain.DomainId, true, true, false); DeleteWebSitePointer(siteItemId, domain.DomainId, true, true, false);
// clear binding left overs
WebServer web = new WebServer();
ServiceProviderProxy.Init(web, siteItem.ServiceId);
WebSite site = web.GetSite(siteItem.SiteId);
List<ServerBinding> newBindings = new List<ServerBinding>();
web.UpdateSiteBindings(siteItem.SiteId, newBindings.ToArray(), true);
//figure out the PackageAddressId
PackageIPAddress packageIpAddress = null;
var siteIpAddresses = ServerController.GetItemIPAddresses(siteItemId, IPAddressPool.None);
foreach (var siteIp in siteIpAddresses)
{
packageIpAddress = ServerController.GetPackageIPAddress(siteIp.AddressID);
if (packageIpAddress != null && packageIpAddress.AddressID == siteItem.SiteIPAddressId)
{
break;
}
}
//Deallocate IP Address //Deallocate IP Address
ServerController.DeleteItemIPAddress(siteItemId, siteItem.SiteIPAddressId); if (packageIpAddress != null)
ServerController.DeleteItemIPAddress(siteItemId, packageIpAddress.PackageAddressID);
// update site item // update site item
siteItem.SiteIPAddressId = 0; siteItem.SiteIPAddressId = 0;
@ -1043,6 +1070,8 @@ namespace WebsitePanel.EnterpriseServer
foreach (ServerBinding b in bindings) foreach (ServerBinding b in bindings)
{ {
//add new domain record //add new domain record
if (!string.IsNullOrEmpty(b.Host))
{
domain.DomainName = b.Host; domain.DomainName = b.Host;
int domainID = ServerController.AddDomain(domain); int domainID = ServerController.AddDomain(domain);
DomainInfo domainTmp = ServerController.GetDomain(domainID); DomainInfo domainTmp = ServerController.GetDomain(domainID);
@ -1054,6 +1083,7 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
} }
}
return 0; return 0;
} }