From 2e02654376afc394d5d81b2fc9ad3211af0901d8 Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 24 Sep 2012 16:31:16 +0400 Subject: [PATCH 01/11] 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 02/11] 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 7805e5c8020eda815f596c9235529825bfee0d21 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 24 Sep 2012 09:49:49 -0400 Subject: [PATCH 03/11] Added tag build-2.0.0.55 for changeset 10af7931c940 From 5b656b562fb9d2f0de1ced3e3445a70c98faa022 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 24 Sep 2012 09:58:43 -0400 Subject: [PATCH 04/11] Added tag build-2.0.0.56 for changeset c22826d10a0d From 5fc4c561760ed2ae4ca5a20821b1ad54e432276e Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 24 Sep 2012 19:32:15 +0400 Subject: [PATCH 05/11] typo in update_sql --- WebsitePanel/Database/update_db.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 36e69bb6..16f3ae7a 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -5600,7 +5600,7 @@ GO -CREATE PROCEDURE [dbo].[GetCRMUsers] +ALTER PROCEDURE [dbo].[GetCRMUsers] ( @ItemID int, @SortColumn nvarchar(40), From 2e577cb827c0ddf34a7af46ff6570b3dcce5c6a4 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 24 Sep 2012 11:46:41 -0400 Subject: [PATCH 06/11] Added tag build-2.0.0.57 for changeset 27afda3689fd From 19b546333ea5aefaa9b9a182b7055b2bbbf82ae8 Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 24 Sep 2012 12:24:54 -0400 Subject: [PATCH 07/11] Update Copyright --- .../OCS/OCSUsers.ascx.designer.cs | 30 ++++++++++++++++++- .../IIS60_Settings.ascx.designer.cs | 28 +++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) 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 e708f509..2fc04a3c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/OCSUsers.ascx.designer.cs @@ -1,4 +1,32 @@ -//------------------------------------------------------------------------------ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +//------------------------------------------------------------------------------ // // This code was generated by a tool. // 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 4eb363b2..5036a271 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS60_Settings.ascx.designer.cs @@ -1,3 +1,31 @@ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + //------------------------------------------------------------------------------ // // This code was generated by a tool. From 4233aa248acbc6666f97ca654da72e6923de01dc Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 24 Sep 2012 12:39:35 -0400 Subject: [PATCH 08/11] Added tag build-2.0.0.58 for changeset e40f3c44d5c8 From 190a02758a06c649d3bc9d63aed226400436a4fe Mon Sep 17 00:00:00 2001 From: Feodor Date: Mon, 24 Sep 2012 10:22:22 -0700 Subject: [PATCH 09/11] Fixed issue #374 with adding a range of IP addresses --- .../WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs | 2 +- .../Code/Servers/ServerController.cs | 2 +- WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs index 5135bfc6..556d173a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/IPAddress.cs @@ -69,7 +69,7 @@ namespace WebsitePanel.EnterpriseServer { return ""; var s = new System.Text.StringBuilder(); if (!V6) { - var ipl = (long)Address; + var ipl = Address; s.Append(String.Format("{0}.{1}.{2}.{3}", (ipl >> 24) & 0xFFL, (ipl >> 16) & 0xFFL, (ipl >> 8) & 0xFFL, (ipl & 0xFFL))); } else if (!IsMask) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index fa1b5caf..bc4864be 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -988,7 +988,7 @@ namespace WebsitePanel.EnterpriseServer if (startExternalIP.V6 != startInternalIP.V6 && (startExternalIP.V6 != endExternalIP.V6 && endExternalIP != null)) throw new NotSupportedException("All IP addresses must be either V4 or V6."); int i = 0; - long step = (endExternalIP < startExternalIP) ? -1 : 1; + long step = ((endExternalIP - startExternalIP) > 0) ? 1 : -1; while (true) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index a99cd490..3766094f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,11 +5,11 @@ - + - + From 97eb61b2b74fa624b57c2382582b851fec2019dc Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 24 Sep 2012 13:38:22 -0400 Subject: [PATCH 10/11] Added tag build-2.0.0.59 for changeset 85319b9d253a From 77a3b790a62bbffbd0579e8caf4e569cb6c84fbb Mon Sep 17 00:00:00 2001 From: Virtuworks Date: Mon, 24 Sep 2012 13:42:13 -0400 Subject: [PATCH 11/11] Added tag build-2.0.0.60 for changeset 85319b9d253a