diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index d0cbdc57..c3d64463 100644 Binary files a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe and b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe differ diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/StandaloneServerActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/StandaloneServerActionManager.cs index b8fd2303..f4485b20 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/StandaloneServerActionManager.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/StandaloneServerActionManager.cs @@ -323,10 +323,14 @@ namespace WebsitePanel.Setup.Actions serviceInfo.Comments = string.Empty; //check IIS version - if (ServerSetup.IISVersion.Major >= 7) + if (ServerSetup.IISVersion.Major == 7) { serviceInfo.ProviderId = 101; } + else if (ServerSetup.IISVersion.Major == 8) + { + serviceInfo.ProviderId = 105; + } else if (ServerSetup.IISVersion.Major == 6) { serviceInfo.ProviderId = 2; diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/WebPortalActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/WebPortalActionManager.cs index 7d0ccdc3..83330fff 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/WebPortalActionManager.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/WebPortalActionManager.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; using System.IO; using System.Xml; +using WebsitePanel.Setup.Common; namespace WebsitePanel.Setup.Actions { @@ -114,6 +115,55 @@ namespace WebsitePanel.Setup.Actions } } + public class GenerateSessionValidationKeyAction : Action, IInstallAction + { + public const string LogStartInstallMessage = "Generating session validation key..."; + + void IInstallAction.Run(SetupVariables vars) + { + try + { + Begin(LogStartInstallMessage); + + Log.WriteStart(LogStartInstallMessage); + + string path = Path.Combine(vars.InstallationFolder, "web.config"); + + if (!File.Exists(path)) + { + Log.WriteInfo(string.Format("File {0} not found", path)); + return; + } + + Log.WriteStart("Updating configuration file (session validation key)"); + XmlDocument doc = new XmlDocument(); + doc.Load(path); + + XmlElement sessionKey = doc.SelectSingleNode("configuration/appSettings/add[@key='SessionValidationKey']") as XmlElement; + if (sessionKey == null) + { + Log.WriteInfo("SessionValidationKey setting not found"); + return; + } + + sessionKey.SetAttribute("value", StringUtils.GenerateRandomString(16)); + doc.Save(path); + + Log.WriteEnd("Generated session validation key"); + InstallLog.AppendLine("- Generated session validation key"); + } + catch (Exception ex) + { + if (Utils.IsThreadAbortException(ex)) + return; + // + Log.WriteError("Site settigs error", ex); + // + throw; + } + } + } + public class CreateDesktopShortcutsAction : Action, IInstallAction { public const string LogStartInstallMessage = "Creating shortcut..."; @@ -253,6 +303,7 @@ namespace WebsitePanel.Setup.Actions new CreateWebSiteAction(), new SwitchAppPoolAspNetVersion(), new UpdateEnterpriseServerUrlAction(), + new GenerateSessionValidationKeyAction(), new SaveComponentConfigSettingsAction(), new CreateDesktopShortcutsAction() }; diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs index b7dc2fad..80fc5bb6 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs @@ -88,6 +88,7 @@ namespace WebsitePanel.Setup SwitchServer2AspNet40, SwitchEntServer2AspNet40, SwitchWebPortal2AspNet40, + ConfigureSecureSessionModuleInWebConfig } public class InstallAction diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/StringUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/StringUtils.cs new file mode 100644 index 00000000..3cb13828 --- /dev/null +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/StringUtils.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; + +namespace WebsitePanel.Setup.Common +{ + public class StringUtils + { + public static string GenerateRandomString(int length) + { + RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider(); + byte[] data = new byte[length]; + crypto.GetNonZeroBytes(data); + return BitConverter.ToString(data).Replace("-", "").ToLowerInvariant(); + } + } +} diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer10.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer10.cs index dd90ac25..debbff1d 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer10.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer10.cs @@ -7,32 +7,6 @@ using WebsitePanel.Setup.Actions; namespace WebsitePanel.Setup { - /// - /// Release 1.2.2 - /// - public class EnterpriseServer122 : EnterpriseServer - { - public static new object Install(object obj) - { - // - return EnterpriseServer.InstallBase(obj, "1.2.2"); - } - - public static new DialogResult Uninstall(object obj) - { - return EnterpriseServer.Uninstall(obj); - } - - public static new DialogResult Setup(object obj) - { - return EnterpriseServer.Setup(obj); - } - - public static new DialogResult Update(object obj) - { - return UpdateBase(obj, "1.2.2", "1.2.1", true); - } - } /// /// Release 1.2.1 /// diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer20.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer20.cs new file mode 100644 index 00000000..c8df0677 --- /dev/null +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/EnterpriseServer20.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using WebsitePanel.Setup.Actions; + +namespace WebsitePanel.Setup +{ + /// + /// Release 2.0.0 + /// + public class EnterpriseServer200 : EnterpriseServer + { + public static new object Install(object obj) + { + // + return EnterpriseServer.InstallBase(obj, minimalInstallerVersion: "2.0.0"); + } + + public static new DialogResult Uninstall(object obj) + { + return EnterpriseServer.Uninstall(obj); + } + + public static new DialogResult Setup(object obj) + { + return EnterpriseServer.Setup(obj); + } + + public static new DialogResult Update(object obj) + { + return UpdateBase(obj, + minimalInstallerVersion: "2.0.0", + versionToUpgrade: "1.2.1", + updateSql: true); + } + } +} diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal10.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal10.cs index 3818b293..01854e9b 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal10.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal10.cs @@ -6,33 +6,6 @@ using WebsitePanel.Setup.Actions; namespace WebsitePanel.Setup { - /// - /// Release 1.2.2 - /// - public class Portal122 : Portal - { - public static new object Install(object obj) - { - // - return Portal.InstallBase(obj, "1.2.2"); - } - - public static new DialogResult Uninstall(object obj) - { - return Portal.Uninstall(obj); - } - - public static new DialogResult Setup(object obj) - { - return Portal.Setup(obj); - } - - public static new DialogResult Update(object obj) - { - return UpdateBase(obj, "1.2.2", "1.2.1", false); - } - } - /// /// Release 1.2.1 /// diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal20.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal20.cs new file mode 100644 index 00000000..2187ba95 --- /dev/null +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Portal20.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using WebsitePanel.Setup.Actions; + +namespace WebsitePanel.Setup +{ + /// + /// Release 2.0.0 + /// + public class Portal200 : Portal + { + public static new object Install(object obj) + { + // + return Portal.InstallBase(obj, minimalInstallerVersion: "2.0.0"); + } + + public static new DialogResult Uninstall(object obj) + { + return Portal.Uninstall(obj); + } + + public static new DialogResult Setup(object obj) + { + return Portal.Setup(obj); + } + + public static new DialogResult Update(object obj) + { + return UpdateBase(obj, + minimalInstallerVersion: "2.0.0", + versionsToUpgrade: "1.2.1", + updateSql: false, + versionSpecificAction: new InstallAction(ActionTypes.ConfigureSecureSessionModuleInWebConfig)); + } + } +} diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server10.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server10.cs index b5d08705..bd63cb57 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server10.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server10.cs @@ -6,33 +6,6 @@ using WebsitePanel.Setup.Actions; namespace WebsitePanel.Setup { - /// - /// Release 1.2.2 - /// - public class Server122 : Server - { - public static new object Install(object obj) - { - // - return Server.InstallBase(obj, "1.2.2"); - } - - public static new object Uninstall(object obj) - { - return Server.Uninstall(obj); - } - - public static new object Setup(object obj) - { - return Server.Setup(obj); - } - - public static new object Update(object obj) - { - return Server.UpdateBase(obj, "1.2.2", "1.2.1", false); - } - } - /// /// Release 1.2.1 /// diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server20.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server20.cs new file mode 100644 index 00000000..9f0a7988 --- /dev/null +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Server20.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WebsitePanel.Setup +{ + /// + /// Release 2.0.0 + /// + public class Server200 : Server + { + public static new object Install(object obj) + { + // + return Server.InstallBase(obj, minimalInstallerVersion: "2.0.0"); + } + + public static new object Uninstall(object obj) + { + return Server.Uninstall(obj); + } + + public static new object Setup(object obj) + { + return Server.Setup(obj); + } + + public static new object Update(object obj) + { + return Server.UpdateBase(obj, + minimalInstallerVersion: "2.0.0", + versionToUpgrade: "1.2.1", + updateSql: false); + } + } +} diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup10.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup10.cs index 24bd0e0d..116f45c2 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup10.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup10.cs @@ -5,18 +5,6 @@ using System.Windows.Forms; namespace WebsitePanel.Setup { - /// - /// Release 1.2.2 - /// - public class StandaloneServerSetup122 : StandaloneServerSetup - { - public static new object Install(object obj) - { - return StandaloneServerSetup.InstallBase(obj, "1.2.2"); - } - } - - /// /// Release 1.2.1 /// diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup20.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup20.cs new file mode 100644 index 00000000..ff7d0cec --- /dev/null +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/StandaloneServerSetup20.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; + +namespace WebsitePanel.Setup +{ + /// + /// Release 2.0.0 + /// + public class StandaloneServerSetup200 : StandaloneServerSetup + { + public static new object Install(object obj) + { + return StandaloneServerSetup.InstallBase(obj, minimalInstallerVersion: "2.0.0"); + } + } +} diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/WebsitePanel.Setup.csproj b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/WebsitePanel.Setup.csproj index f9e793ad..6b9d839d 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/WebsitePanel.Setup.csproj +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/WebsitePanel.Setup.csproj @@ -133,6 +133,7 @@ + @@ -140,8 +141,11 @@ + + + @@ -160,6 +164,7 @@ Resources.resx + diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs index be97f333..2542406b 100644 --- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs +++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Wizard/ExpressInstallPage.cs @@ -258,6 +258,9 @@ namespace WebsitePanel.Setup case ActionTypes.AddCustomErrorsPage: AddCustomErrorsPage(); break; + case ActionTypes.ConfigureSecureSessionModuleInWebConfig: + ConfigureSecureSessionModuleInWebConfig(); + break; } } this.progressBar.Value = 100; @@ -281,6 +284,87 @@ namespace WebsitePanel.Setup Wizard.GoNext(); } + private void ConfigureSecureSessionModuleInWebConfig() + { + try + { + string webConfigPath = Path.Combine(Wizard.SetupVariables.InstallationFolder, "web.config"); + Log.WriteStart("Web.config file is being updated"); + // Ensure the web.config exists + if (!File.Exists(webConfigPath)) + { + Log.WriteInfo(string.Format("File {0} not found", webConfigPath)); + return; + } + // Load web.config + XmlDocument doc = new XmlDocument(); + doc.Load(webConfigPath); + + // add node: + // + // + // + // + // + // + // ... or for IIS 6: + // + // + // + // + // + // + bool iis6 = false; + XmlElement webServer = doc.SelectSingleNode("configuration/system.webServer") as XmlElement; + if (webServer == null) + { + // this is IIS 6 + webServer = doc.SelectSingleNode("configuration/system.web") as XmlElement; + iis6 = true; + } + + if (webServer != null) + { + var modules = doc.CreateElement(iis6 ? "httpModules" : "modules"); + webServer.AppendChild(modules); + var sessionModule = doc.CreateElement("add"); + sessionModule.SetAttribute("name", "SecureSession"); + sessionModule.SetAttribute("type", "WebsitePanel.WebPortal.SecureSessionModule"); + modules.AppendChild(sessionModule); + } + + // update /system.web/httpRuntime element + var httpRuntime = doc.SelectSingleNode("configuration/system.web/httpRuntime") as XmlElement; + if (httpRuntime != null) + httpRuntime.SetAttribute("enableVersionHeader", "false"); + + // add: + // + // + // + var appSettings = doc.SelectSingleNode("configuration/appSettings"); + if (appSettings != null) + { + var sessionKey = doc.CreateElement("add"); + sessionKey.SetAttribute("key", "SessionValidationKey"); + sessionKey.SetAttribute("value", StringUtils.GenerateRandomString(16)); + appSettings.AppendChild(sessionKey); + } + + // save changes have been made + doc.Save(webConfigPath); + // + Log.WriteEnd("Web.config has been updated"); + } + catch (Exception ex) + { + if (Utils.IsThreadAbortException(ex)) + return; + Log.WriteError("Could not update web.config file", ex); + throw; + } + } + private void SwitchWebPortal2AspNet40(InstallAction action, Setup.SetupVariables setupVariables) { var sam = new WebPortalActionManager(setupVariables); 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..cd99bc7a 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -29,7 +29,7 @@ GO -- IIS 8.0 IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Internet Information Services 8.0') BEGIN -INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (105, 2, N'IIS80', N'Internet Information Services 8.0', N'WebsitePanel.Providers.Web.IIs70, WebsitePanel.Providers.Web.IIs70', N'IIS70', NULL) +INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (105, 2, N'IIS80', N'Internet Information Services 8.0', N'WebsitePanel.Providers.Web.IIs80, WebsitePanel.Providers.Web.IIs80', N'IIS70', NULL) END GO @@ -168,7 +168,7 @@ GO -- MS FTP 8.0 IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Microsoft FTP Server 8.0') BEGIN -INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (106, 3, N'MSFTP80', N'Microsoft FTP Server 8.0', N'WebsitePanel.Providers.FTP.MsFTP, WebsitePanel.Providers.FTP.IIs70', N'MSFTP70', NULL) +INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (106, 3, N'MSFTP80', N'Microsoft FTP Server 8.0', N'WebsitePanel.Providers.FTP.MsFTP80, WebsitePanel.Providers.FTP.IIs80', N'MSFTP70', NULL) END GO @@ -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, @@ -5356,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 + + + + + + + + + + + + + + + + + diff --git a/WebsitePanel/Sources/Tools/WSPTransportAgent/App.config b/WebsitePanel/Sources/Tools/WSPTransportAgent/App.config index f3d7ccd1..02e0c01e 100644 --- a/WebsitePanel/Sources/Tools/WSPTransportAgent/App.config +++ b/WebsitePanel/Sources/Tools/WSPTransportAgent/App.config @@ -1,4 +1,4 @@ - + @@ -7,4 +7,4 @@ - \ No newline at end of file + diff --git a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPRoutingAgent.cs b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPRoutingAgent.cs index 16656900..91d6f962 100644 --- a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPRoutingAgent.cs +++ b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPRoutingAgent.cs @@ -115,8 +115,8 @@ namespace WSPTransportAgent foreach (AcceptedDomain domain in server.AcceptedDomains) { - htAcceptedDomains.Add(domain.ToString(), "1"); - WriteLine("\tAccepted Domain: " + domain.ToString()); + htAcceptedDomains.Add(domain.ToString().ToLower(), "1"); + WriteLine("\tAccepted Domain: " + domain.ToString().ToLower()); } } catch (Exception ex) @@ -154,11 +154,14 @@ namespace WSPTransportAgent { foreach (EnvelopeRecipient recp in e.MailItem.Recipients) { + WriteLine("\t\tFrom: " + e.MailItem.Message.From.SmtpAddress.ToString().ToLower()); WriteLine("\t\tTo: " + recp.Address.ToString().ToLower()); - if (IsMessageBetweenTenants(e.MailItem.FromAddress.DomainPart.ToLower(), recp.Address.DomainPart.ToLower())) + string[] tmpFrom = e.MailItem.Message.From.SmtpAddress.Split('@'); + string[] tmpTo = recp.Address.ToString().Split('@'); + if (IsMessageBetweenTenants(tmpFrom[1].ToLower(), tmpTo[1].ToLower())) { - WriteLine("\t\tMessage routed to domain: " + recp.Address.DomainPart.ToLower() + routingDomain); - RoutingDomain myRoutingDomain = new RoutingDomain(recp.Address.DomainPart.ToLower() + routingDomain); + WriteLine("\t\tMessage routed to domain: " + tmpTo[1].ToLower() + routingDomain); + RoutingDomain myRoutingDomain = new RoutingDomain(tmpTo[1].ToLower() + routingDomain); RoutingOverride myRoutingOverride = new RoutingOverride(myRoutingDomain, DeliveryQueueDomain.UseOverrideDomain); source.SetRoutingOverride(recp, myRoutingOverride); touched = true; @@ -173,13 +176,14 @@ namespace WSPTransportAgent WriteLine("\t\tOOF From: " + e.MailItem.Message.From.SmtpAddress); if (e.MailItem.Message.From.SmtpAddress.Contains("@")) { - string[] tmp = e.MailItem.Message.From.SmtpAddress.Split('@'); + string[] tmpFrom = e.MailItem.Message.From.SmtpAddress.Split('@'); foreach (EnvelopeRecipient recp in e.MailItem.Recipients) { WriteLine("\t\tTo: " + recp.Address.ToString().ToLower()); - if (IsMessageBetweenTenants(tmp[1].ToLower(), recp.Address.DomainPart.ToLower())) + string[] tmpTo = recp.Address.ToString().Split('@'); + if (IsMessageBetweenTenants(tmpFrom[1].ToLower(), tmpTo[1].ToLower())) { - WriteLine("\t\tRemove: " + recp.Address.DomainPart.ToLower()); + WriteLine("\t\tRemove: " + tmpTo[1].ToLower()); e.MailItem.Recipients.Remove(recp); } } diff --git a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.csproj b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.csproj index 5bc9a7ea..05307754 100644 --- a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.csproj +++ b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.csproj @@ -10,8 +10,9 @@ Properties WSPTransportAgent WSPTransportAgent - v4.0 + v3.5 512 + true diff --git a/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg b/WebsitePanel/Sources/Tools/WSPTransportAgent/WSPTransportAgent.reg index 755c888a..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 +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 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.Client/WebServersProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebServersProxy.cs index f70325be..dfd90b61 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebServersProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebServersProxy.cs @@ -26,34 +26,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// 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. @@ -80,7 +52,7 @@ namespace WebsitePanel.EnterpriseServer { using WebsitePanel.Providers.Common; using WebsitePanel.Providers.Web; using WebsitePanel.Providers.ResultObjects; - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] @@ -124,6 +96,10 @@ namespace WebsitePanel.EnterpriseServer { private System.Threading.SendOrPostCallback DeleteWebSiteOperationCompleted; + private System.Threading.SendOrPostCallback SwitchWebSiteToDedicatedIPOperationCompleted; + + private System.Threading.SendOrPostCallback SwitchWebSiteToSharedIPOperationCompleted; + private System.Threading.SendOrPostCallback DeleteVirtualDirectoryOperationCompleted; private System.Threading.SendOrPostCallback ChangeSiteStateOperationCompleted; @@ -306,6 +282,12 @@ namespace WebsitePanel.EnterpriseServer { /// public event DeleteWebSiteCompletedEventHandler DeleteWebSiteCompleted; + /// + public event SwitchWebSiteToDedicatedIPCompletedEventHandler SwitchWebSiteToDedicatedIPCompleted; + + /// + public event SwitchWebSiteToSharedIPCompletedEventHandler SwitchWebSiteToSharedIPCompleted; + /// public event DeleteVirtualDirectoryCompletedEventHandler DeleteVirtualDirectoryCompleted; @@ -855,22 +837,24 @@ namespace WebsitePanel.EnterpriseServer { /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/AddWebSite", 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 int AddWebSite(int packageId, string hostName, int domainId, int ipAddressId) { + public int AddWebSite(int packageId, string hostName, int domainId, int ipAddressId, bool ignoreGlobalDNSZone) { object[] results = this.Invoke("AddWebSite", new object[] { packageId, hostName, domainId, - ipAddressId}); + ipAddressId, + ignoreGlobalDNSZone}); return ((int)(results[0])); } /// - public System.IAsyncResult BeginAddWebSite(int packageId, string hostName, int domainId, int ipAddressId, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginAddWebSite(int packageId, string hostName, int domainId, int ipAddressId, bool ignoreGlobalDNSZone, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddWebSite", new object[] { packageId, hostName, domainId, - ipAddressId}, callback, asyncState); + ipAddressId, + ignoreGlobalDNSZone}, callback, asyncState); } /// @@ -880,12 +864,12 @@ namespace WebsitePanel.EnterpriseServer { } /// - public void AddWebSiteAsync(int packageId, string hostName, int domainId, int ipAddressId) { - this.AddWebSiteAsync(packageId, hostName, domainId, ipAddressId, null); + public void AddWebSiteAsync(int packageId, string hostName, int domainId, int ipAddressId, bool ignoreGlobalDNSZone) { + this.AddWebSiteAsync(packageId, hostName, domainId, ipAddressId, ignoreGlobalDNSZone, null); } /// - public void AddWebSiteAsync(int packageId, string hostName, int domainId, int ipAddressId, object userState) { + public void AddWebSiteAsync(int packageId, string hostName, int domainId, int ipAddressId, bool ignoreGlobalDNSZone, object userState) { if ((this.AddWebSiteOperationCompleted == null)) { this.AddWebSiteOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddWebSiteOperationCompleted); } @@ -893,7 +877,8 @@ namespace WebsitePanel.EnterpriseServer { packageId, hostName, domainId, - ipAddressId}, this.AddWebSiteOperationCompleted, userState); + ipAddressId, + ignoreGlobalDNSZone}, this.AddWebSiteOperationCompleted, userState); } private void OnAddWebSiteOperationCompleted(object arg) { @@ -1252,6 +1237,91 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/SwitchWebSiteToDedicatedIP", 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 int SwitchWebSiteToDedicatedIP(int siteItemId, int ipAddressId) { + object[] results = this.Invoke("SwitchWebSiteToDedicatedIP", new object[] { + siteItemId, + ipAddressId}); + return ((int)(results[0])); + } + + /// + public System.IAsyncResult BeginSwitchWebSiteToDedicatedIP(int siteItemId, int ipAddressId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SwitchWebSiteToDedicatedIP", new object[] { + siteItemId, + ipAddressId}, callback, asyncState); + } + + /// + public int EndSwitchWebSiteToDedicatedIP(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int)(results[0])); + } + + /// + public void SwitchWebSiteToDedicatedIPAsync(int siteItemId, int ipAddressId) { + this.SwitchWebSiteToDedicatedIPAsync(siteItemId, ipAddressId, null); + } + + /// + public void SwitchWebSiteToDedicatedIPAsync(int siteItemId, int ipAddressId, object userState) { + if ((this.SwitchWebSiteToDedicatedIPOperationCompleted == null)) { + this.SwitchWebSiteToDedicatedIPOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSwitchWebSiteToDedicatedIPOperationCompleted); + } + this.InvokeAsync("SwitchWebSiteToDedicatedIP", new object[] { + siteItemId, + ipAddressId}, this.SwitchWebSiteToDedicatedIPOperationCompleted, userState); + } + + private void OnSwitchWebSiteToDedicatedIPOperationCompleted(object arg) { + if ((this.SwitchWebSiteToDedicatedIPCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SwitchWebSiteToDedicatedIPCompleted(this, new SwitchWebSiteToDedicatedIPCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/SwitchWebSiteToSharedIP", 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 int SwitchWebSiteToSharedIP(int siteItemId) { + object[] results = this.Invoke("SwitchWebSiteToSharedIP", new object[] { + siteItemId}); + return ((int)(results[0])); + } + + /// + public System.IAsyncResult BeginSwitchWebSiteToSharedIP(int siteItemId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SwitchWebSiteToSharedIP", new object[] { + siteItemId}, callback, asyncState); + } + + /// + public int EndSwitchWebSiteToSharedIP(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int)(results[0])); + } + + /// + public void SwitchWebSiteToSharedIPAsync(int siteItemId) { + this.SwitchWebSiteToSharedIPAsync(siteItemId, null); + } + + /// + public void SwitchWebSiteToSharedIPAsync(int siteItemId, object userState) { + if ((this.SwitchWebSiteToSharedIPOperationCompleted == null)) { + this.SwitchWebSiteToSharedIPOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSwitchWebSiteToSharedIPOperationCompleted); + } + this.InvokeAsync("SwitchWebSiteToSharedIP", new object[] { + siteItemId}, this.SwitchWebSiteToSharedIPOperationCompleted, userState); + } + + private void OnSwitchWebSiteToSharedIPOperationCompleted(object arg) { + if ((this.SwitchWebSiteToSharedIPCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SwitchWebSiteToSharedIPCompleted(this, new SwitchWebSiteToSharedIPCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/DeleteVirtualDirectory", 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 int DeleteVirtualDirectory(int siteItemId, string vdirName) { @@ -4422,6 +4492,58 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SwitchWebSiteToDedicatedIPCompletedEventHandler(object sender, SwitchWebSiteToDedicatedIPCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SwitchWebSiteToDedicatedIPCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SwitchWebSiteToDedicatedIPCompletedEventArgs(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 SwitchWebSiteToSharedIPCompletedEventHandler(object sender, SwitchWebSiteToSharedIPCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SwitchWebSiteToSharedIPCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SwitchWebSiteToSharedIPCompletedEventArgs(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 DeleteVirtualDirectoryCompletedEventHandler(object sender, DeleteVirtualDirectoryCompletedEventArgs e); 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.EnterpriseServer/Code/Common/Utils.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/Utils.cs index c20f5be6..93f140aa 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/Utils.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Common/Utils.cs @@ -102,7 +102,6 @@ namespace WebsitePanel.EnterpriseServer if (allowEmptyValue) { if (String.IsNullOrEmpty(str)) return str; - if (String.IsNullOrEmpty(value)) return string.Empty; } else { 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.EnterpriseServer/Code/DnsServers/DnsServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/DnsServers/DnsServerController.cs index 1c90e844..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; @@ -310,7 +310,10 @@ namespace WebsitePanel.EnterpriseServer rr.MxPriority = record.MxPriority; if (!String.IsNullOrEmpty(rr.RecordData)) - zoneRecords.Add(rr); + { + if (rr.RecordName != "[host_name]") + zoneRecords.Add(rr); + } } return zoneRecords; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 9fe58540..a133c36f 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) { @@ -2512,10 +2572,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 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/Packages/PackageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs index 910a49fa..164ad64f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Packages/PackageController.cs @@ -481,7 +481,7 @@ namespace WebsitePanel.EnterpriseServer // create web site try { - int webSiteId = WebServerController.AddWebSite(packageId, hostName, domainId, 0, true); + int webSiteId = WebServerController.AddWebSite(packageId, hostName, domainId, 0, true, false); if (webSiteId < 0) { result.Result = webSiteId; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs index bf469d50..fa1b5caf 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Servers/ServerController.cs @@ -1729,7 +1729,7 @@ namespace WebsitePanel.EnterpriseServer int webSiteId = 0; if (webEnabled && createWebSite) { - webSiteId = WebServerController.AddWebSite(packageId, hostName, domainId, 0, createInstantAlias); + webSiteId = WebServerController.AddWebSite(packageId, hostName, domainId, 0, createInstantAlias, false); if (webSiteId < 0) { @@ -2005,7 +2005,8 @@ namespace WebsitePanel.EnterpriseServer } // delete zone if required - DnsServerController.DeleteZone(domain.ZoneItemId); + if (!domain.IsDomainPointer) + DnsServerController.DeleteZone(domain.ZoneItemId); // delete domain DataProvider.DeleteDomain(SecurityContext.User.UserId, domainId); 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 5ea67ab0..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); @@ -392,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) @@ -574,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); + 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); @@ -611,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; @@ -621,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"]); @@ -736,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); @@ -755,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); @@ -770,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 { @@ -796,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) @@ -863,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); @@ -895,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 { @@ -918,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/Code/Wizards/UserCreationWizard.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Wizards/UserCreationWizard.cs index 9f5d7ed8..c1d24976 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Wizards/UserCreationWizard.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Wizards/UserCreationWizard.cs @@ -199,7 +199,7 @@ namespace WebsitePanel.EnterpriseServer try { int webSiteId = WebServerController.AddWebSite( - createdPackageId, hostName, domainId, 0, true); + createdPackageId, hostName, domainId, 0, true, false); if (webSiteId < 0) { // rollback wizard 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.EnterpriseServer/Images/logo.png b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png index 45f7ad78..35a64dd8 100644 Binary files a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png and b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Images/logo.png differ diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config index b78330c8..a99cd490 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Web.config @@ -5,7 +5,7 @@ - + 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.EnterpriseServer/esWebServers.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esWebServers.asmx.cs index a5f3882f..00dc32d0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esWebServers.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esWebServers.asmx.cs @@ -104,9 +104,9 @@ namespace WebsitePanel.EnterpriseServer } [WebMethod] - public int AddWebSite(int packageId, string hostName, int domainId, int ipAddressId) + public int AddWebSite(int packageId, string hostName, int domainId, int ipAddressId, bool ignoreGlobalDNSZone) { - return WebServerController.AddWebSite(packageId, hostName, domainId, ipAddressId, true); + return WebServerController.AddWebSite(packageId, hostName, domainId, ipAddressId, true, ignoreGlobalDNSZone); } [WebMethod] @@ -157,6 +157,18 @@ namespace WebsitePanel.EnterpriseServer return WebServerController.DeleteWebSite(siteItemId); } + [WebMethod] + public int SwitchWebSiteToDedicatedIP(int siteItemId, int ipAddressId) + { + return WebServerController.SwitchWebSiteToDedicatedIP(siteItemId, ipAddressId); + } + + [WebMethod] + public int SwitchWebSiteToSharedIP(int siteItemId) + { + return WebServerController.SwitchWebSiteToSharedIP(siteItemId); + } + [WebMethod] public int DeleteVirtualDirectory(int siteItemId, string vdirName) { 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/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.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.FTP.IIs70/MsFTP.cs b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs70/MsFTP.cs index ad7270c9..41a6d054 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs70/MsFTP.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs70/MsFTP.cs @@ -954,7 +954,7 @@ namespace WebsitePanel.Providers.FTP #endregion - protected bool IsMsFTPInstalled() + protected virtual bool IsMsFTPInstalled() { int value = 0; RegistryKey root = Registry.LocalMachine; @@ -966,7 +966,7 @@ namespace WebsitePanel.Providers.FTP } RegistryKey ftp = root.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\ftpsvc"); - bool res = (value == 7 || value == 8) && ftp != null; + bool res = (value == 7) && ftp != null; if (ftp != null) ftp.Close(); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/MsFTP80.cs b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/MsFTP80.cs new file mode 100644 index 00000000..910f18c1 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/MsFTP80.cs @@ -0,0 +1,67 @@ +// 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; +using System.Text; + +namespace WebsitePanel.Providers.FTP +{ + public class MsFTP80 : MsFTP + { + public MsFTP80() : base() + { + } + + protected override bool IsMsFTPInstalled() + { + int value = 0; + RegistryKey root = Registry.LocalMachine; + RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\InetStp"); + if (rk != null) + { + value = (int)rk.GetValue("MajorVersion", null); + rk.Close(); + } + + RegistryKey ftp = root.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\ftpsvc"); + bool res = (value == 8) && ftp != null; + if (ftp != null) + ftp.Close(); + + return res; + } + + public override bool IsInstalled() + { + return IsMsFTPInstalled(); + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..5bb54eef --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/Properties/AssemblyInfo.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.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WebsitePanel.Providers.FTP.IIs80")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyProduct("WebsitePanel.Providers.FTP.IIs80")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("587b5738-51db-4525-bcf5-60de49e89be4")] \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/WebsitePanel.Providers.FTP.IIs80.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/WebsitePanel.Providers.FTP.IIs80.csproj new file mode 100644 index 00000000..376d1c29 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/WebsitePanel.Providers.FTP.IIs80.csproj @@ -0,0 +1,65 @@ + + + + + Debug + AnyCPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6} + Library + Properties + WebsitePanel.Providers.FTP.IIs80 + WebsitePanel.Providers.FTP.IIs80 + v3.5 + 512 + + + true + full + false + ..\WebsitePanel.Server\bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\WebsitePanel.Server\bin\ + TRACE + prompt + 4 + + + + + + + + + + + + VersionInfo.cs + + + + + + + {684c932a-6c75-46ac-a327-f3689d89eb42} + WebsitePanel.Providers.Base + + + {a28bd694-c308-449f-8fd2-f08f3d54aba0} + WebsitePanel.Providers.FTP.IIs70 + + + + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index e48e2dca..8f2f63e1 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 @@ -1374,30 +1379,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; } @@ -3353,7 +3365,7 @@ namespace WebsitePanel.Providers.HostedSolution //fix showInAddressBook Attribute if (addressLists.Length > 0) - FixShowInAddressBook(runSpace, email, addressLists); + FixShowInAddressBook(runSpace, email, addressLists, false); } catch (Exception ex) @@ -3370,7 +3382,7 @@ namespace WebsitePanel.Providers.HostedSolution ExchangeLog.LogEnd("CreateDistributionListInternal"); } - private void FixShowInAddressBook(Runspace runSpace, string accountName, string[] addressLists) + private void FixShowInAddressBook(Runspace runSpace, string accountName, string[] addressLists, bool HideFromAddressList) { Command cmd = new Command("Get-DistributionGroup"); cmd.Parameters.Add("Identity", accountName); @@ -3380,9 +3392,12 @@ namespace WebsitePanel.Providers.HostedSolution DirectoryEntry dlDEEntry = GetADObject(AddADPrefix(id)); dlDEEntry.Properties["showInAddressBook"].Clear(); - foreach (string addressList in addressLists) + if (!HideFromAddressList) { - dlDEEntry.Properties["showInAddressBook"].Add(addressList); + foreach (string addressList in addressLists) + { + dlDEEntry.Properties["showInAddressBook"].Add(addressList); + } } dlDEEntry.CommitChanges(); } @@ -3542,7 +3557,7 @@ namespace WebsitePanel.Providers.HostedSolution } if (addressLists.Length > 0) - FixShowInAddressBook(runSpace, accountName, addressLists); + FixShowInAddressBook(runSpace, accountName, addressLists, hideFromAddressBook); } finally @@ -3612,7 +3627,14 @@ namespace WebsitePanel.Providers.HostedSolution } if (addressLists.Length > 0) - FixShowInAddressBook(runSpace, accountName, addressLists); + { + cmd = new Command("Get-DistributionGroup"); + cmd.Parameters.Add("Identity", accountName); + Collection result = ExecuteShellCommand(runSpace, cmd); + PSObject distributionGroup = result[0]; + + FixShowInAddressBook(runSpace, accountName, addressLists, (bool)GetPSObjectProperty(distributionGroup, "HiddenFromAddressListsEnabled")); + } } finally @@ -3648,7 +3670,14 @@ namespace WebsitePanel.Providers.HostedSolution } if (addressLists.Length > 0) - FixShowInAddressBook(runSpace, accountName, addressLists); + { + cmd = new Command("Get-DistributionGroup"); + cmd.Parameters.Add("Identity", accountName); + Collection result = ExecuteShellCommand(runSpace, cmd); + PSObject distributionGroup = result[0]; + + FixShowInAddressBook(runSpace, accountName, addressLists, (bool)GetPSObjectProperty(distributionGroup, "HiddenFromAddressListsEnabled")); + } } finally @@ -3720,7 +3749,14 @@ namespace WebsitePanel.Providers.HostedSolution ExecuteShellCommand(runSpace, cmd); if (addressLists.Length > 0) - FixShowInAddressBook(runSpace, accountName, addressLists); + { + cmd = new Command("Get-DistributionGroup"); + cmd.Parameters.Add("Identity", accountName); + Collection result = ExecuteShellCommand(runSpace, cmd); + PSObject distributionGroup = result[0]; + + FixShowInAddressBook(runSpace, accountName, addressLists, (bool)GetPSObjectProperty(distributionGroup, "HiddenFromAddressListsEnabled")); + } } finally @@ -3856,7 +3892,14 @@ namespace WebsitePanel.Providers.HostedSolution ExecuteShellCommand(runSpace, cmd); if (addressLists.Length > 0) - FixShowInAddressBook(runSpace, accountName, addressLists); + { + cmd = new Command("Get-DistributionGroup"); + cmd.Parameters.Add("Identity", accountName); + Collection r = ExecuteShellCommand(runSpace, cmd); + PSObject distributionGroup = r[0]; + + FixShowInAddressBook(runSpace, accountName, addressLists, (bool)GetPSObjectProperty(distributionGroup, "HiddenFromAddressListsEnabled")); + } } finally { @@ -3955,17 +3998,24 @@ namespace WebsitePanel.Providers.HostedSolution if (sendOnBehalfAccounts == null) throw new ArgumentNullException("sendOnBehalfAccounts"); - Runspace runspace = null; + Runspace runSpace = null; try { - runspace = OpenRunspace(); - string cn = GetDistributionListCommonName(runspace, accountName); - ExchangeDistributionList distributionList = GetDistributionListPermissionsInternal(organizationId, accountName, runspace); - SetSendAsPermissions(runspace, distributionList.SendAsAccounts, cn, sendAsAccounts); - SetDistributionListSendOnBehalfAccounts(runspace, accountName, sendOnBehalfAccounts); + runSpace = OpenRunspace(); + string cn = GetDistributionListCommonName(runSpace, accountName); + ExchangeDistributionList distributionList = GetDistributionListPermissionsInternal(organizationId, accountName, runSpace); + SetSendAsPermissions(runSpace, distributionList.SendAsAccounts, cn, sendAsAccounts); + SetDistributionListSendOnBehalfAccounts(runSpace, accountName, sendOnBehalfAccounts); if (addressLists.Length > 0) - FixShowInAddressBook(runspace, accountName, addressLists); + { + Command cmd = new Command("Get-DistributionGroup"); + cmd.Parameters.Add("Identity", accountName); + Collection result = ExecuteShellCommand(runSpace, cmd); + PSObject distributionGroup = result[0]; + + FixShowInAddressBook(runSpace, accountName, addressLists, (bool)GetPSObjectProperty(distributionGroup, "HiddenFromAddressListsEnabled")); + } } catch (Exception ex) @@ -3975,7 +4025,7 @@ namespace WebsitePanel.Providers.HostedSolution } finally { - CloseRunspace(runspace); + CloseRunspace(runSpace); } ExchangeLog.LogEnd("SetDistributionListPermissionsInternal"); @@ -5916,6 +5966,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 +6055,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.Providers.Web.IIS70/IIs70.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs index 992a7215..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); } /// @@ -3477,7 +3477,7 @@ namespace WebsitePanel.Providers.Web #endregion - public new bool IsIISInstalled() + public override bool IsIISInstalled() { int value = 0; RegistryKey root = Registry.LocalMachine; @@ -3488,7 +3488,7 @@ namespace WebsitePanel.Providers.Web rk.Close(); } - return value == 7 || value == 8; + return value == 7; } public override bool IsInstalled() diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/Properties/AssemblyInfo.cs index fdf6fff1..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; @@ -18,14 +46,4 @@ using System.Runtime.InteropServices; [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("0eb18093-bb95-406a-ab78-a2e45f4cb972")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: \ No newline at end of file +[assembly: Guid("0eb18093-bb95-406a-ab78-a2e45f4cb972")] \ No newline at end of file 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 2cb7f8cf..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)); @@ -3368,7 +3368,7 @@ namespace WebsitePanel.Providers.Web } #endregion - public bool IsIISInstalled() + public virtual bool IsIISInstalled() { int value = 0; RegistryKey root = Registry.LocalMachine; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/IIs80.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/IIs80.cs new file mode 100644 index 00000000..db31084d --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/IIs80.cs @@ -0,0 +1,62 @@ +// 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; +using System.Text; + +namespace WebsitePanel.Providers.Web +{ + public class IIs80 : IIs70, IWebServer + { + public IIs80() : base() + { + } + + public override bool IsIISInstalled() + { + int value = 0; + RegistryKey root = Registry.LocalMachine; + RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\InetStp"); + if (rk != null) + { + value = (int)rk.GetValue("MajorVersion", null); + rk.Close(); + } + + return value == 8; + } + + public override bool IsInstalled() + { + return IsIISInstalled(); + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..f6b854c5 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/Properties/AssemblyInfo.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.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WebsitePanel.Providers.Web.IIs80")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyProduct("WebsitePanel.Providers.Web.IIs80")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("b0305c67-ead3-4d69-a0d8-548f6d0f705b")] \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/WebsitePanel.Providers.Web.IIs80.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/WebsitePanel.Providers.Web.IIs80.csproj new file mode 100644 index 00000000..a4a33fb4 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/WebsitePanel.Providers.Web.IIs80.csproj @@ -0,0 +1,69 @@ + + + + + Debug + AnyCPU + {6E348968-461D-45A1-B235-4F552947B9F1} + Library + Properties + WebsitePanel.Providers.Web + WebsitePanel.Providers.Web.IIs80 + v3.5 + 512 + + + true + full + false + ..\WebsitePanel.Server\bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\WebsitePanel.Server\bin\ + TRACE + prompt + 4 + + + + + + + + + + + + VersionInfo.cs + + + + + + + {684c932a-6c75-46ac-a327-f3689d89eb42} + WebsitePanel.Providers.Base + + + {9be0317d-e42e-4ff6-9a87-8c801f046ea1} + WebsitePanel.Providers.Web.IIs60 + + + {1b9dce85-c664-49fc-b6e1-86c63cab88d1} + WebsitePanel.Providers.Web.IIs70 + + + + + \ No newline at end of file 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.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.sln b/WebsitePanel/Sources/WebsitePanel.Server.sln index d05bb799..138b2957 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.sln +++ b/WebsitePanel/Sources/WebsitePanel.Server.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2010 +# Visual Studio 2012 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Caching Application Block", "Caching Application Block", "{C8E6F2E4-A5B8-486A-A56E-92D864524682}" ProjectSection(SolutionItems) = preProject Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll = Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll @@ -107,6 +107,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Mail EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.OS.Windows2012", "WebsitePanel.Providers.OS.Windows2012\WebsitePanel.Providers.OS.Windows2012.csproj", "{27130BBB-76FA-411E-8B4D-51CD4DC821AF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Web.IIs80", "WebsitePanel.Providers.Web.IIs80\WebsitePanel.Providers.Web.IIs80.csproj", "{6E348968-461D-45A1-B235-4F552947B9F1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.FTP.IIs80", "WebsitePanel.Providers.FTP.IIs80\WebsitePanel.Providers.FTP.IIs80.csproj", "{D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -587,6 +591,26 @@ Global {27130BBB-76FA-411E-8B4D-51CD4DC821AF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {27130BBB-76FA-411E-8B4D-51CD4DC821AF}.Release|Mixed Platforms.Build.0 = Release|Any CPU {27130BBB-76FA-411E-8B4D-51CD4DC821AF}.Release|x86.ActiveCfg = Release|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Debug|x86.ActiveCfg = Debug|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Release|Any CPU.Build.0 = Release|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6E348968-461D-45A1-B235-4F552947B9F1}.Release|x86.ActiveCfg = Release|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Debug|x86.ActiveCfg = Debug|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Release|Any CPU.Build.0 = Release|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE 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); } 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"; 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.Server/Images/logo.png b/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png index 45f7ad78..35a64dd8 100644 Binary files a/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png and b/WebsitePanel/Sources/WebsitePanel.Server/Images/logo.png differ 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/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index 8f46ab03..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 @@ -5128,9 +5131,6 @@ Lync Server - - General Lync User settings have been successfully updated. - Lync User has been successfully created but the following errors have been occured: @@ -5194,14 +5194,12 @@ Succesfully stamp mailboxes - Mailbox plan update failed Mailbox plan updated - Failed to apply plans template @@ -5211,7 +5209,16 @@ Request Completed Succesfully - - - + + Error updating web site to dedicated IP + + + Error updating web site to shared IP + + + Web site has been updated to dedicated IP + + + Web site has been updated to shared IP + \ No newline at end of file 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 45f7ad78..35a64dd8 100644 Binary files a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/logo.png and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/logo.png differ 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/App_LocalResources/UserAccountDetails.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountDetails.ascx.resx index a8cd0829..e565ab5d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountDetails.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountDetails.ascx.resx @@ -151,6 +151,6 @@ Status - Subscriber Number: + Account Number: \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountEditDetails.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountEditDetails.ascx.resx index 3ebb934f..cc4263f6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountEditDetails.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountEditDetails.ascx.resx @@ -160,7 +160,7 @@ Secondary E-Mail: - Subscriber Number: + Account Number: User name: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserCreateUserAccount.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserCreateUserAccount.ascx.resx index f76c9543..d6765bb2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserCreateUserAccount.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserCreateUserAccount.ascx.resx @@ -202,6 +202,6 @@ * - Subscriber Number: + Account Number: \ No newline at end of file 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 f6e5d7d6..f4978101 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 @@ -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 Pointer @@ -124,6 +124,6 @@ Cancel - Domain Alias: + 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 a425d075..000c366a 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 @@ -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 web site...'); @@ -126,11 +126,14 @@ Cancel + + Ignore Zone Template + ASP.NET Version: - Domain Name: + Site: IP address: @@ -138,6 +141,9 @@ If you need your web site to be accessible via dedicated IP address or you are planning to enable SSL for your site you should choose "Dedicated IP" option; otherwise leave this settings by default. In order to create IP-based site you need to purchase IP address from your host. + + 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. </p>Check this option to ignore the Zone Template and create the new Web Site with this Web Site Pointer only. + Dedicated diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesEditSite.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesEditSite.ascx.resx index 9ee024bb..f82d2d99 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesEditSite.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebSitesEditSite.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 Folder @@ -243,7 +243,7 @@ .htaccess Groups - + Custom MIME types are not defined @@ -408,55 +408,82 @@ To connect to web site management service please use username and password provi SSL - + Web Publishing - + Web Deploy Publishing is Disabled. - + Web Deploy Publishing is Enabled. - + To enable Web Publishing for this web site specify account user name and password and then click "Enable" button. - + Please choose a Microsoft SQL database: - + Build Publising Profile Wizard - + Please use the link below to build a publishing profile that makes it easy to configure publishing settings for your convenience. - + Change Password - + Disable - + Enable - + Username: - + Confim password: - + Password: - + Now you can publish content to this site easily via either Web Matrix or Visual Studio .NET 2010. Please use the link below to download publishing profile that makes it easy to publish the content online for your convenience. You also have an option to re-build publishing profile if you decide to change or update your publishing settings. - + Choose database... - + Choose database user... - + Choose FTP account... + + ShowProgressDialog('Applying changes...'); + + + Apply + + + Cancel + + + Switch to dedicated IP + + + if(!confirm('Do you really want to switch this web site to shared IP?')) return false;ShowProgressDialog('Applying changes...'); + + + Switch to shared IP + + + IP address: + + + Select IP address: + + + IP address: Shared + \ No newline at end of file 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/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx index edd62354..4c537ca9 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 @@ -157,7 +157,7 @@ Password: * - Subscriber Number: * + Account Number: * Create New Mailbox @@ -187,7 +187,7 @@ * - Enter Subscriber Number + Enter Account Number * 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..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 @@ -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/App_LocalResources/OrganizationCreateUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx index 0d09f564..7754d53e 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 @@ -145,7 +145,7 @@ Password: * - Subscriber Number: * + Account Number: * Create New User @@ -160,7 +160,7 @@ * - Enter Subscriber Number + Enter Account Number * 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 a1a54a1d..7e4229e9 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 @@ -201,7 +201,7 @@ State/Province: - Subscriber Number: + Account Number: Edit User 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 f2ef19dd..581e06b6 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 @@ -142,7 +142,7 @@ E-mail Address - Subscriber Number + Account Number Subscriber 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 a6d9c55c..8d12dfcf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx.cs @@ -58,7 +58,10 @@ namespace WebsitePanel.Portal.ExchangeServer } } - if (ddlDomains.Items.Count == 0) btnAdd.Enabled = false; + if (ddlDomains.Items.Count == 0) + { + ddlDomains.Visible= btnAdd.Enabled = false; + } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx index 1e659428..62e671f9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx @@ -95,11 +95,11 @@ - + + ErrorMessage="Enter Account Number" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"> 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 4d238f24..9558a3a5 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,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/ExchangeServer/ExchangeDomainNames.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx index 54abfc9d..c060f31b 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 @@ + + +
+ +
+
+
+ + +
+ +
+
+
/>
-
+   // This code was generated by a tool. @@ -110,14 +138,5 @@ namespace WebsitePanel.Portal.ExchangeServer { /// To modify move field declaration from designer file to code-behind file. ///
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; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx index d2f9ac75..851a9b78 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx @@ -45,7 +45,7 @@ DisplayName Email AccountName - Subscriber Number + Account Number diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.designer.cs index e4f438f3..5fafbb3f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx.designer.cs @@ -155,14 +155,5 @@ namespace WebsitePanel.Portal.ExchangeServer { /// To modify move field declaration from designer file to code-behind file. ///
protected global::WebsitePanel.Portal.QuotaViewer mailboxesQuota; - - /// - /// 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/OrganizationCreateUser.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx index 7bf810d5..187d5a08 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx @@ -68,11 +68,11 @@ - + + ErrorMessage="Enter Account Number" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"> 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 5d58f6f3..d813a3a4 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 @@ -236,14 +236,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; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx index 008ac253..c6b5f5bf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx @@ -46,7 +46,7 @@ DisplayName Email AccountName - Subscriber Number + Account Number diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx.designer.cs index 931a2be7..d544cee6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUsers.ascx.designer.cs @@ -155,14 +155,5 @@ namespace WebsitePanel.Portal.HostedSolution { /// 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; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx index 7ffe4a46..03f5f160 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx @@ -54,10 +54,13 @@ + + OnServerValidate="Validate" Text="Please enter a valid IP" meta:resourcekey="IPValidator" ValidateEmptyText="True" /> + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.cs index e85bef62..9dc65cd5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.cs @@ -176,16 +176,23 @@ namespace WebsitePanel.Portal } } protected void Validate(object source, ServerValidateEventArgs args) { +/* var ip = args.Value; System.Net.IPAddress ipaddr; - 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)); + if (string.IsNullOrEmpty(args.Value)) + args.IsValid = true; + else + 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() { - if (!Page.IsValid) return; + if (!string.IsNullOrEmpty(txtRecordData.Text)) + if (!Page.IsValid) return; GlobalDnsRecord record = new GlobalDnsRecord(); record.RecordId = (int)ViewState["RecordID"]; 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 579c55f8..c3308c73 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/GlobalDnsRecordsControl.ascx.designer.cs @@ -26,7 +26,6 @@ // (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. @@ -149,6 +148,24 @@ namespace WebsitePanel.Portal { ///
protected global::WebsitePanel.Portal.SelectIPAddress ipAddress; + /// + /// valRequireData control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireData; + + /// + /// IPValidator control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CustomValidator IPValidator; + /// /// rowMXPriority control. /// @@ -176,6 +193,24 @@ namespace WebsitePanel.Portal { ///
protected global::System.Web.UI.WebControls.TextBox txtMXPriority; + /// + /// valRequireMxPriority control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireMxPriority; + + /// + /// valRequireCorrectPriority control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RegularExpressionValidator valRequireCorrectPriority; + /// /// rowSRVPriority control. /// 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; } } 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..7969952f 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 @@ -67,6 +67,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/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..e699da6f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceQuotas.ascx.designer.cs @@ -175,6 +175,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. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountDetails.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountDetails.ascx index e8044aff..0e96d0d0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountDetails.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountDetails.ascx @@ -14,7 +14,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountEditDetails.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountEditDetails.ascx index 39360cdf..b95fece1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountEditDetails.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountEditDetails.ascx @@ -38,7 +38,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx index f6821a51..8a538579 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx @@ -97,17 +97,6 @@ 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 683cf57a..12e24ee2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.cs @@ -124,8 +124,6 @@ namespace WebsitePanel.Portal string ftpAccount = (rbFtpAccountName.SelectedIndex == 0) ? null : ftpAccountName.Text; string domainName = txtDomainName.Text.Trim(); - - string hostName = txtHostName.Text.Trim(); PackageResult result = null; try @@ -136,7 +134,7 @@ namespace WebsitePanel.Portal Utils.ParseInt(ddlStatus.SelectedValue, 0), chkPackageLetter.Checked, chkCreateResources.Checked, domainName, true, chkCreateWebSite.Checked, - chkCreateFtpAccount.Checked, ftpAccount, chkCreateMailAccount.Checked, hostName); + chkCreateFtpAccount.Checked, ftpAccount, chkCreateMailAccount.Checked, ""); 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 33f60022..e41d8992 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateSpace.ascx.designer.cs @@ -210,42 +210,6 @@ 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; - - /// - /// valRequireHostName control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireHostName; - - /// - /// valRequireCorrectHostName control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.RegularExpressionValidator valRequireCorrectHostName; - /// /// fsFtp control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateUserAccount.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateUserAccount.ascx index edbeb726..b15bca70 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateUserAccount.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCreateUserAccount.ascx @@ -55,7 +55,7 @@ - + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx index acd114ce..8c7ddf77 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddPointer.ascx @@ -7,7 +7,7 @@ - . + . - . + . + + + + + + + + +
+ +
+ + +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs index 689fa1a3..93d85f19 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesAddSite.ascx.cs @@ -53,6 +53,8 @@ namespace WebsitePanel.Portal // bind IP Addresses BindIPAddresses(); + BindIgnoreZoneTemplate(); + // toggle ToggleControls(); } @@ -63,6 +65,19 @@ namespace WebsitePanel.Portal rowDedicatedIP.Visible = rbDedicatedIP.Checked; } + private void BindIgnoreZoneTemplate() + { + /* + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + if (cntx.Quotas[Quotas.WEB_SITES].QuotaUsedValue > 0) + chkIgnoreGlobalDNSRecords.Visible = chkIgnoreGlobalDNSRecords.Checked = lblIgnoreGlobalDNSRecords.Visible = true; + else + chkIgnoreGlobalDNSRecords.Visible = chkIgnoreGlobalDNSRecords.Checked = lblIgnoreGlobalDNSRecords.Visible= false; + */ + + chkIgnoreGlobalDNSRecords.Checked = false; + } + private void BindIPAddresses() { ddlIpAddresses.Items.Add(new ListItem("