Update Website Pointers:

Code structured, Option Added to ignore GlobalDNSZone when create additional
This commit is contained in:
robvde 2012-09-14 08:23:09 +04:00
commit 79ab1c7b3d
30 changed files with 622 additions and 130 deletions

View file

@ -323,10 +323,14 @@ namespace WebsitePanel.Setup.Actions
serviceInfo.Comments = string.Empty; serviceInfo.Comments = string.Empty;
//check IIS version //check IIS version
if (ServerSetup.IISVersion.Major >= 7) if (ServerSetup.IISVersion.Major == 7)
{ {
serviceInfo.ProviderId = 101; serviceInfo.ProviderId = 101;
} }
else if (ServerSetup.IISVersion.Major == 8)
{
serviceInfo.ProviderId = 105;
}
else if (ServerSetup.IISVersion.Major == 6) else if (ServerSetup.IISVersion.Major == 6)
{ {
serviceInfo.ProviderId = 2; serviceInfo.ProviderId = 2;

View file

@ -31,6 +31,7 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using System.IO; using System.IO;
using System.Xml; using System.Xml;
using WebsitePanel.Setup.Common;
namespace WebsitePanel.Setup.Actions 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 class CreateDesktopShortcutsAction : Action, IInstallAction
{ {
public const string LogStartInstallMessage = "Creating shortcut..."; public const string LogStartInstallMessage = "Creating shortcut...";
@ -253,6 +303,7 @@ namespace WebsitePanel.Setup.Actions
new CreateWebSiteAction(), new CreateWebSiteAction(),
new SwitchAppPoolAspNetVersion(), new SwitchAppPoolAspNetVersion(),
new UpdateEnterpriseServerUrlAction(), new UpdateEnterpriseServerUrlAction(),
new GenerateSessionValidationKeyAction(),
new SaveComponentConfigSettingsAction(), new SaveComponentConfigSettingsAction(),
new CreateDesktopShortcutsAction() new CreateDesktopShortcutsAction()
}; };

View file

@ -88,6 +88,7 @@ namespace WebsitePanel.Setup
SwitchServer2AspNet40, SwitchServer2AspNet40,
SwitchEntServer2AspNet40, SwitchEntServer2AspNet40,
SwitchWebPortal2AspNet40, SwitchWebPortal2AspNet40,
ConfigureSecureSessionModuleInWebConfig
} }
public class InstallAction public class InstallAction

View file

@ -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();
}
}
}

View file

@ -7,32 +7,6 @@ using WebsitePanel.Setup.Actions;
namespace WebsitePanel.Setup namespace WebsitePanel.Setup
{ {
/// <summary>
/// Release 1.2.2
/// </summary>
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);
}
}
/// <summary> /// <summary>
/// Release 1.2.1 /// Release 1.2.1
/// </summary> /// </summary>

View file

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using WebsitePanel.Setup.Actions;
namespace WebsitePanel.Setup
{
/// <summary>
/// Release 2.0.0
/// </summary>
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);
}
}
}

View file

@ -6,33 +6,6 @@ using WebsitePanel.Setup.Actions;
namespace WebsitePanel.Setup namespace WebsitePanel.Setup
{ {
/// <summary>
/// Release 1.2.2
/// </summary>
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);
}
}
/// <summary> /// <summary>
/// Release 1.2.1 /// Release 1.2.1
/// </summary> /// </summary>

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using WebsitePanel.Setup.Actions;
namespace WebsitePanel.Setup
{
/// <summary>
/// Release 2.0.0
/// </summary>
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));
}
}
}

View file

@ -6,33 +6,6 @@ using WebsitePanel.Setup.Actions;
namespace WebsitePanel.Setup namespace WebsitePanel.Setup
{ {
/// <summary>
/// Release 1.2.2
/// </summary>
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);
}
}
/// <summary> /// <summary>
/// Release 1.2.1 /// Release 1.2.1
/// </summary> /// </summary>

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WebsitePanel.Setup
{
/// <summary>
/// Release 2.0.0
/// </summary>
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);
}
}
}

View file

@ -5,18 +5,6 @@ using System.Windows.Forms;
namespace WebsitePanel.Setup namespace WebsitePanel.Setup
{ {
/// <summary>
/// Release 1.2.2
/// </summary>
public class StandaloneServerSetup122 : StandaloneServerSetup
{
public static new object Install(object obj)
{
return StandaloneServerSetup.InstallBase(obj, "1.2.2");
}
}
/// <summary> /// <summary>
/// Release 1.2.1 /// Release 1.2.1
/// </summary> /// </summary>

View file

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace WebsitePanel.Setup
{
/// <summary>
/// Release 2.0.0
/// </summary>
public class StandaloneServerSetup200 : StandaloneServerSetup
{
public static new object Install(object obj)
{
return StandaloneServerSetup.InstallBase(obj, minimalInstallerVersion: "2.0.0");
}
}
}

View file

@ -133,6 +133,7 @@
<Compile Include="Common\SqlProcess.cs" /> <Compile Include="Common\SqlProcess.cs" />
<Compile Include="Common\SqlUtils.cs" /> <Compile Include="Common\SqlUtils.cs" />
<Compile Include="Common\ServerItem.cs" /> <Compile Include="Common\ServerItem.cs" />
<Compile Include="Common\StringUtils.cs" />
<Compile Include="Common\Utils.cs" /> <Compile Include="Common\Utils.cs" />
<Compile Include="Common\WebException.cs" /> <Compile Include="Common\WebException.cs" />
<Compile Include="Common\WebUtils.cs" /> <Compile Include="Common\WebUtils.cs" />
@ -140,8 +141,11 @@
<Compile Include="Common\XmlUtils.cs" /> <Compile Include="Common\XmlUtils.cs" />
<Compile Include="Common\ZipIndicator.cs" /> <Compile Include="Common\ZipIndicator.cs" />
<Compile Include="EnterpriseServer10.cs" /> <Compile Include="EnterpriseServer10.cs" />
<Compile Include="EnterpriseServer20.cs" />
<Compile Include="Portal10.cs" /> <Compile Include="Portal10.cs" />
<Compile Include="Portal20.cs" />
<Compile Include="Server10.cs" /> <Compile Include="Server10.cs" />
<Compile Include="Server20.cs" />
<Compile Include="StandaloneServerSetup.cs" /> <Compile Include="StandaloneServerSetup.cs" />
<Compile Include="EnterpriseServer.cs" /> <Compile Include="EnterpriseServer.cs" />
<Compile Include="Portal.cs" /> <Compile Include="Portal.cs" />
@ -160,6 +164,7 @@
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
</Compile> </Compile>
<Compile Include="StandaloneServerSetup10.cs" /> <Compile Include="StandaloneServerSetup10.cs" />
<Compile Include="StandaloneServerSetup20.cs" />
<Compile Include="Web\AspNetVersion.cs" /> <Compile Include="Web\AspNetVersion.cs" />
<Compile Include="Web\ServerBinding.cs" /> <Compile Include="Web\ServerBinding.cs" />
<Compile Include="Web\ServerState.cs" /> <Compile Include="Web\ServerState.cs" />

View file

@ -258,6 +258,9 @@ namespace WebsitePanel.Setup
case ActionTypes.AddCustomErrorsPage: case ActionTypes.AddCustomErrorsPage:
AddCustomErrorsPage(); AddCustomErrorsPage();
break; break;
case ActionTypes.ConfigureSecureSessionModuleInWebConfig:
ConfigureSecureSessionModuleInWebConfig();
break;
} }
} }
this.progressBar.Value = 100; this.progressBar.Value = 100;
@ -281,6 +284,87 @@ namespace WebsitePanel.Setup
Wizard.GoNext(); 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:
//<system.webServer>
// <modules>
// <add name="SecureSession" type="WebsitePanel.WebPortal.SecureSessionModule" />
// </modules>
//</system.webServer>
//
// ... or for IIS 6:
//
//<system.web>
// <httpModules>
// <add name="SecureSession" type="WebsitePanel.WebPortal.SecureSessionModule" />
// </httpModules>
//</system.web>
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:
//<appSettings>
// <add key="SessionValidationKey" value="XXXXXX" />
//</appSettings>
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) private void SwitchWebPortal2AspNet40(InstallAction action, Setup.SetupVariables setupVariables)
{ {
var sam = new WebPortalActionManager(setupVariables); var sam = new WebPortalActionManager(setupVariables);

View file

@ -29,7 +29,7 @@ GO
-- IIS 8.0 -- IIS 8.0
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Internet Information Services 8.0') IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Internet Information Services 8.0')
BEGIN 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 END
GO GO
@ -168,7 +168,7 @@ GO
-- MS FTP 8.0 -- MS FTP 8.0
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Microsoft FTP Server 8.0') IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Microsoft FTP Server 8.0')
BEGIN 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 END
GO GO

View file

@ -954,7 +954,7 @@ namespace WebsitePanel.Providers.FTP
#endregion #endregion
protected bool IsMsFTPInstalled() protected virtual bool IsMsFTPInstalled()
{ {
int value = 0; int value = 0;
RegistryKey root = Registry.LocalMachine; RegistryKey root = Registry.LocalMachine;
@ -966,7 +966,7 @@ namespace WebsitePanel.Providers.FTP
} }
RegistryKey ftp = root.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\ftpsvc"); 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) if (ftp != null)
ftp.Close(); ftp.Close();

View file

@ -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();
}
}
}

View file

@ -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")]

View file

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D73CCF4C-9CFF-4D61-9030-34DCAF0C50D6}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>WebsitePanel.Providers.FTP.IIs80</RootNamespace>
<AssemblyName>WebsitePanel.Providers.FTP.IIs80</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\WebsitePanel.Server\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\WebsitePanel.Server\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\VersionInfo.cs">
<Link>VersionInfo.cs</Link>
</Compile>
<Compile Include="MsFTP80.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WebsitePanel.Providers.Base\WebsitePanel.Providers.Base.csproj">
<Project>{684c932a-6c75-46ac-a327-f3689d89eb42}</Project>
<Name>WebsitePanel.Providers.Base</Name>
</ProjectReference>
<ProjectReference Include="..\WebsitePanel.Providers.FTP.IIs70\WebsitePanel.Providers.FTP.IIs70.csproj">
<Project>{a28bd694-c308-449f-8fd2-f08f3d54aba0}</Project>
<Name>WebsitePanel.Providers.FTP.IIs70</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -3477,7 +3477,7 @@ namespace WebsitePanel.Providers.Web
#endregion #endregion
public new bool IsIISInstalled() public override bool IsIISInstalled()
{ {
int value = 0; int value = 0;
RegistryKey root = Registry.LocalMachine; RegistryKey root = Registry.LocalMachine;
@ -3488,7 +3488,7 @@ namespace WebsitePanel.Providers.Web
rk.Close(); rk.Close();
} }
return value == 7 || value == 8; return value == 7;
} }
public override bool IsInstalled() public override bool IsInstalled()

View file

@ -19,13 +19,3 @@ using System.Runtime.InteropServices;
// The following GUID is for the ID of the typelib if this project is exposed to COM // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("0eb18093-bb95-406a-ab78-a2e45f4cb972")] [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:

View file

@ -3368,7 +3368,7 @@ namespace WebsitePanel.Providers.Web
} }
#endregion #endregion
public bool IsIISInstalled() public virtual bool IsIISInstalled()
{ {
int value = 0; int value = 0;
RegistryKey root = Registry.LocalMachine; RegistryKey root = Registry.LocalMachine;

View file

@ -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();
}
}
}

View file

@ -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")]

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{6E348968-461D-45A1-B235-4F552947B9F1}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>WebsitePanel.Providers.Web</RootNamespace>
<AssemblyName>WebsitePanel.Providers.Web.IIs80</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\WebsitePanel.Server\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\WebsitePanel.Server\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\VersionInfo.cs">
<Link>VersionInfo.cs</Link>
</Compile>
<Compile Include="IIs80.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WebsitePanel.Providers.Base\WebsitePanel.Providers.Base.csproj">
<Project>{684c932a-6c75-46ac-a327-f3689d89eb42}</Project>
<Name>WebsitePanel.Providers.Base</Name>
</ProjectReference>
<ProjectReference Include="..\WebsitePanel.Providers.Web.IIs60\WebsitePanel.Providers.Web.IIs60.csproj">
<Project>{9be0317d-e42e-4ff6-9a87-8c801f046ea1}</Project>
<Name>WebsitePanel.Providers.Web.IIs60</Name>
</ProjectReference>
<ProjectReference Include="..\WebsitePanel.Providers.Web.IIS70\WebsitePanel.Providers.Web.IIs70.csproj">
<Project>{1b9dce85-c664-49fc-b6e1-86c63cab88d1}</Project>
<Name>WebsitePanel.Providers.Web.IIs70</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 12.00 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}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Caching Application Block", "Caching Application Block", "{C8E6F2E4-A5B8-486A-A56E-92D864524682}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll = Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll 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 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}" 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 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 Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU 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.ActiveCfg = Release|Any CPU
{27130BBB-76FA-411E-8B4D-51CD4DC821AF}.Release|Mixed Platforms.Build.0 = 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 {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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View file

@ -4,6 +4,7 @@
<add key="WebPortal.ThemeProvider" value="WebsitePanel.Portal.WebPortalThemeProvider, WebsitePanel.Portal.Modules"/> <add key="WebPortal.ThemeProvider" value="WebsitePanel.Portal.WebPortalThemeProvider, WebsitePanel.Portal.Modules"/>
<add key="WebPortal.PageTitleProvider" value="WebsitePanel.Portal.WebPortalPageTitleProvider, WebsitePanel.Portal.Modules"/> <add key="WebPortal.PageTitleProvider" value="WebsitePanel.Portal.WebPortalPageTitleProvider, WebsitePanel.Portal.Modules"/>
<add key="ChartImageHandler" value="storage=file;timeout=20;" /> <add key="ChartImageHandler" value="storage=file;timeout=20;" />
<add key="SessionValidationKey" value="DAD46D476F85E0198BCA134D7AA5CC1D7" />
</appSettings> </appSettings>
<system.web.extensions> <system.web.extensions>
<scripting> <scripting>
@ -56,6 +57,9 @@
<add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/> <add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
<add verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" /> <add verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
</httpHandlers> </httpHandlers>
<httpModules>
<add name="SecureSession" type="WebsitePanel.WebPortal.SecureSessionModule" />
</httpModules>
<!-- Authentication --> <!-- Authentication -->
<authentication mode="Forms"> <authentication mode="Forms">
<forms name=".WEBSITEPANELPORTALAUTHASPX" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" domain="" enableCrossAppRedirects="false"> <forms name=".WEBSITEPANELPORTALAUTHASPX" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" domain="" enableCrossAppRedirects="false">

View file

@ -43,6 +43,7 @@
<AWStatsViewerBuild>$(BuildFolder)\AWStats.Viewer</AWStatsViewerBuild> <AWStatsViewerBuild>$(BuildFolder)\AWStats.Viewer</AWStatsViewerBuild>
<WSPTransportAgentBuild>$(BuildFolder)\WSPTransportAgent</WSPTransportAgentBuild> <WSPTransportAgentBuild>$(BuildFolder)\WSPTransportAgent</WSPTransportAgentBuild>
<LocalizationToolkitBuild>$(BuildFolder)\LocalizationToolkit</LocalizationToolkitBuild> <LocalizationToolkitBuild>$(BuildFolder)\LocalizationToolkit</LocalizationToolkitBuild>
<InstallerBuild>$(BuildFolder)\Installer</InstallerBuild>
<ftphost></ftphost> <ftphost></ftphost>
<ftpUsername></ftpUsername> <ftpUsername></ftpUsername>
@ -85,6 +86,7 @@
<RemoveDir Directories="$(AWStatsViewerBuild)"/> <RemoveDir Directories="$(AWStatsViewerBuild)"/>
<RemoveDir Directories="$(WSPTransportAgentBuild)"/> <RemoveDir Directories="$(WSPTransportAgentBuild)"/>
<RemoveDir Directories="$(LocalizationToolkitBuild)"/> <RemoveDir Directories="$(LocalizationToolkitBuild)"/>
<RemoveDir Directories="$(InstallerBuild)"/>
<RemoveDir Directories="$(BuildFolder)"/> <RemoveDir Directories="$(BuildFolder)"/>
<MakeDir Directories="$(BuildFolder)"/> <MakeDir Directories="$(BuildFolder)"/>
@ -96,6 +98,7 @@
<MakeDir Directories="$(AWStatsViewerBuild)"/> <MakeDir Directories="$(AWStatsViewerBuild)"/>
<MakeDir Directories="$(WSPTransportAgentBuild)"/> <MakeDir Directories="$(WSPTransportAgentBuild)"/>
<MakeDir Directories="$(LocalizationToolkitBuild)"/> <MakeDir Directories="$(LocalizationToolkitBuild)"/>
<MakeDir Directories="$(InstallerBuild)"/>
</Target> </Target>
<Target Name="CreateServerBuild" DependsOnTargets="PrepareBuilds"> <Target Name="CreateServerBuild" DependsOnTargets="PrepareBuilds">
@ -244,6 +247,21 @@
<Target Name="CreateSetupBuild" DependsOnTargets="CreateLocalizationToolkitBuild"> <Target Name="CreateSetupBuild" DependsOnTargets="CreateLocalizationToolkitBuild">
<PropertyGroup>
<InstallerProjectRoot>$(RootFolder)\WebsitePanel.Installer\Sources\WebsitePanel.Installer</InstallerProjectRoot>
<InstallerProjectBin>$(InstallerProjectRoot)\bin\$(BuildConfiguration)</InstallerProjectBin>
</PropertyGroup>
<!-- compile Installer -->
<MSBuild Projects="$(InstallerProjectRoot)\WebsitePanel.Installer.csproj" Properties="Configuration=$(BuildConfiguration)" />
<!-- copy installer binaries for upgrade -->
<ItemGroup>
<InstallerBinaries Include="$(InstallerProjectBin)\*.dll" />
<InstallerBinaries Include="$(InstallerProjectBin)\*.exe" />
</ItemGroup>
<Copy SourceFiles="@(InstallerBinaries)" DestinationFolder="$(InstallerBuild)\%(RecursiveDir)" />
<!-- Compile updater.exe --> <!-- Compile updater.exe -->
<MSBuild Projects="$(RootFolder)\WebsitePanel.Installer\Sources\WebsitePanel.Updater\WebsitePanel.Updater.csproj" Properties="Configuration=$(BuildConfiguration)" /> <MSBuild Projects="$(RootFolder)\WebsitePanel.Installer\Sources\WebsitePanel.Updater\WebsitePanel.Updater.csproj" Properties="Configuration=$(BuildConfiguration)" />
@ -520,12 +538,14 @@
<EnterpriseServerUpdateFiles Include="$(EnterpriseServerUpdate)\**\*.*" /> <EnterpriseServerUpdateFiles Include="$(EnterpriseServerUpdate)\**\*.*" />
<ServerUpdateFiles Include="$(ServerUpdate)\**\*.*" /> <ServerUpdateFiles Include="$(ServerUpdate)\**\*.*" />
<ManualUpdateFiles Include="$(UpdateFolder)\**\*.*" /> <ManualUpdateFiles Include="$(UpdateFolder)\**\*.*" />
<InstallerUpdateFiles Include="$(InstallerBuild)\**\*.*" />
</ItemGroup> </ItemGroup>
<Zip Files="@(PortalUpdateFiles)" ZipFileName="$(DeployFolder)\WebsitePanel-Portal-$(Version)-Update.zip" WorkingDirectory="$(PortalUpdate)" /> <Zip Files="@(PortalUpdateFiles)" ZipFileName="$(DeployFolder)\WebsitePanel-Portal-$(Version)-Update.zip" WorkingDirectory="$(PortalUpdate)" />
<Zip Files="@(EnterpriseServerUpdateFiles)" ZipFileName="$(DeployFolder)\WebsitePanel-EnterpriseServer-$(Version)-Update.zip" WorkingDirectory="$(EnterpriseServerUpdate)" /> <Zip Files="@(EnterpriseServerUpdateFiles)" ZipFileName="$(DeployFolder)\WebsitePanel-EnterpriseServer-$(Version)-Update.zip" WorkingDirectory="$(EnterpriseServerUpdate)" />
<Zip Files="@(ServerUpdateFiles)" ZipFileName="$(DeployFolder)\WebsitePanel-Server-$(Version)-Update.zip" WorkingDirectory="$(ServerUpdate)" /> <Zip Files="@(ServerUpdateFiles)" ZipFileName="$(DeployFolder)\WebsitePanel-Server-$(Version)-Update.zip" WorkingDirectory="$(ServerUpdate)" />
<Zip Files="@(ManualUpdateFiles)" ZipFileName="$(DeployFolder)\Manual-Update.zip" WorkingDirectory="$(UpdateFolder)" /> <Zip Files="@(ManualUpdateFiles)" ZipFileName="$(DeployFolder)\Manual-Update.zip" WorkingDirectory="$(UpdateFolder)" />
<Zip Files="@(InstallerUpdateFiles)" ZipFileName="$(DeployFolder)\WebsitePanel-Installer-$(Version)-Update.zip" WorkingDirectory="$(InstallerBuild)" />
<!-- zip tools --> <!-- zip tools -->
<Zip Files="@(ImportCsvInstallFiles)" ZipFileName="$(ToolsFolder)\WebsitePanel-Import-CsvBulk-$(Version).zip" WorkingDirectory="$(ImportCsvInstall)" /> <Zip Files="@(ImportCsvInstallFiles)" ZipFileName="$(ToolsFolder)\WebsitePanel-Import-CsvBulk-$(Version).zip" WorkingDirectory="$(ImportCsvInstall)" />
@ -544,6 +564,7 @@
<FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(DeployFolder)\WebsitePanel-Portal-$(Version)-Update.zip" RemoteFiles="WebsitePanel-Portal-$(Version)-Update.zip" /> <FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(DeployFolder)\WebsitePanel-Portal-$(Version)-Update.zip" RemoteFiles="WebsitePanel-Portal-$(Version)-Update.zip" />
<FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(DeployFolder)\WebsitePanel-EnterpriseServer-$(Version)-Update.zip" RemoteFiles="WebsitePanel-EnterpriseServer-$(Version)-Update.zip" /> <FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(DeployFolder)\WebsitePanel-EnterpriseServer-$(Version)-Update.zip" RemoteFiles="WebsitePanel-EnterpriseServer-$(Version)-Update.zip" />
<FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(DeployFolder)\WebsitePanel-Server-$(Version)-Update.zip" RemoteFiles="WebsitePanel-Server-$(Version)-Update.zip" /> <FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(DeployFolder)\WebsitePanel-Server-$(Version)-Update.zip" RemoteFiles="WebsitePanel-Server-$(Version)-Update.zip" />
<FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(DeployFolder)\WebsitePanel-Installer-$(Version)-Update.zip" RemoteFiles="WebsitePanel-Installer-$(Version)-Update.zip" />
<FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(ToolsFolder)\WebsitePanel-Import-CsvBulk-$(Version).zip" RemoteFiles="WebsitePanel-Import-CsvBulk-$(Version).zip" /> <FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(ToolsFolder)\WebsitePanel-Import-CsvBulk-$(Version).zip" RemoteFiles="WebsitePanel-Import-CsvBulk-$(Version).zip" />
<FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(ToolsFolder)\WebsitePanel-Import-Enterprise-$(Version).zip" RemoteFiles="WebsitePanel-Import-Enterprise-$(Version).zip" /> <FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(ToolsFolder)\WebsitePanel-Import-Enterprise-$(Version).zip" RemoteFiles="WebsitePanel-Import-Enterprise-$(Version).zip" />
<FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(ToolsFolder)\WebsitePanel-AWStatsViewer-$(Version).zip" RemoteFiles="WebsitePanel-AWStatsViewer-$(Version).zip" /> <FtpUpload Username="$(ftpUsername)" password="$(ftpPassword)" RemoteUri="ftp://$(ftphost)/" LocalFiles="$(ToolsFolder)\WebsitePanel-AWStatsViewer-$(Version).zip" RemoteFiles="WebsitePanel-AWStatsViewer-$(Version).zip" />