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 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+