diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index d0cbdc57..ec61a4ff 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..9db3a3c7 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("name", "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/update_db.sql b/WebsitePanel/Database/update_db.sql index a19a94b4..4443fe81 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 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..1fbffbd8 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/MsFTP80.cs @@ -0,0 +1,39 @@ +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..8ae894a1 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.FTP.IIs80/Properties/AssemblyInfo.cs @@ -0,0 +1,21 @@ +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.Web.IIS70/IIs70.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs index 13c76f18..11ef1827 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs @@ -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..ed50c061 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/Properties/AssemblyInfo.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/Properties/AssemblyInfo.cs @@ -18,14 +18,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.IIs60/IIs60.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs index 461a5344..3fca2962 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs @@ -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..960487b0 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/IIs80.cs @@ -0,0 +1,34 @@ +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..3e0804f1 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs80/Properties/AssemblyInfo.cs @@ -0,0 +1,21 @@ +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.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.WebPortal/Web.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/Web.config index 06fdc34e..497e9620 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/Web.config @@ -4,7 +4,7 @@ - + @@ -48,8 +48,8 @@ - - - + + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/Web6.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/Web6.config index 7a3bf6bf..065ea852 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/Web6.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/Web6.config @@ -4,6 +4,7 @@ + @@ -56,6 +57,9 @@ + + + diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index 27ebfc22..a5b571a3 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -43,6 +43,7 @@ $(BuildFolder)\AWStats.Viewer $(BuildFolder)\WSPTransportAgent $(BuildFolder)\LocalizationToolkit + $(BuildFolder)\Installer @@ -85,6 +86,7 @@ + @@ -96,6 +98,7 @@ + @@ -243,9 +246,24 @@ + + + $(RootFolder)\WebsitePanel.Installer\Sources\WebsitePanel.Installer + $(InstallerProjectRoot)\bin\$(BuildConfiguration) + - - + + + + + + + + + + + + @@ -388,7 +406,7 @@ - + @@ -520,12 +538,14 @@ + + @@ -537,17 +557,18 @@ - - - - - - - - - - - + + + + + + + + + + + +