merge commit
This commit is contained in:
commit
2af7c5a820
25 changed files with 564 additions and 178 deletions
|
@ -54,6 +54,11 @@ function websitepanel_addons_AddonActivation($params)
|
|||
|
||||
// Retrieve the WebsitePanel Addons module settings
|
||||
$modSettings = websitepanel_addons_GetSettings();
|
||||
if (empty($modSettings['username']) || empty($modSettings['password'])) || empty($modSettings['serverhost'])) || empty($modSettings['serverport'])))
|
||||
{
|
||||
// The module is disabled or has not yet been configured - stop
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the associated WebsitePanel username from WHMCS
|
||||
$results = select_query('tblhosting', 'username', array('id' => $params['serviceid']));
|
||||
|
|
|
@ -53,6 +53,11 @@ function websitepanel_sync_ClientEdit($params)
|
|||
|
||||
// Retrieve the WebsitePanel Addons module settings
|
||||
$modSettings = websitepanel_sync_GetSettings();
|
||||
if (empty($modSettings['username']) || empty($modSettings['password'])) || empty($modSettings['serverhost'])) || empty($modSettings['serverport'])))
|
||||
{
|
||||
// The module is disabled or has not yet been configured - stop
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the WebsitePanel object instance
|
||||
$wsp = new WebsitePanel($modSettings['username'], $modSettings['password'], $modSettings['serverhost'], $modSettings['serverport'], (($modSettings['serversecured']) == 'on' ? TRUE : FALSE));
|
||||
|
@ -76,7 +81,7 @@ function websitepanel_sync_ClientEdit($params)
|
|||
$userDetails = (array)$wsp->get_user_by_username($currentRoot->Username);
|
||||
|
||||
// Update the current user
|
||||
$wsp->update_user_details($userDetails['RoleId'], (($userDetails['RoleId'] == 2) ? 'Reseller' : 'User'), $userDetails['StatusId'], $userDetails['Status'], $userDetails['LoginStatusId'], $userDetails['LoginStatus'], $userDetails['FailedLogins'], $userDetails['UserId'], $userDetails['OwnerId'], $userDetails['Created'], $userDetails['Changed'], $userDetails['IsDemo'], $userDetails['IsPeer'], $currentRoot->Comments, $params['lastname'], $userDetails['Username'], $userDetails['Password'], $params['firstname'], $params['email'], $params['phonenumber'], $params['postcode'], '', '', '', '', $params['country'], $params['address1'] . (!empty($params['address2']) ? " {$params['address2']}" : ''), $params['city'], $params['state'], TRUE, $params['companyname'], (($userDetails['RoleId'] == 2) ? TRUE : FALSE));
|
||||
$wsp->update_user_details($userDetails['RoleId'], (($userDetails['RoleId'] == 2) ? 'Reseller' : 'User'), $userDetails['StatusId'], $userDetails['Status'], $userDetails['LoginStatusId'], $userDetails['LoginStatus'], $userDetails['FailedLogins'], $userDetails['UserId'], $userDetails['OwnerId'], $userDetails['Created'], $userDetails['Changed'], $userDetails['IsDemo'], $userDetails['IsPeer'], $currentRoot->Comments, $userDetails['Username'], $userDetails['Password'], $params['firstname'], $params['lastname'], $params['email'], $params['phonenumber'], $params['postcode'], '', '', '', '', $params['country'], $params['address1'] . (!empty($params['address2']) ? " {$params['address2']}" : ''), $params['city'], $params['state'], TRUE, $params['companyname'], (($userDetails['RoleId'] == 2) ? TRUE : FALSE));
|
||||
|
||||
// Add log entry to client log
|
||||
logactivity("WebsitePanel Sync - Account {$currentRoot->Username} contact details updated successfully", $params['userid']);
|
||||
|
|
|
@ -164,6 +164,10 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
|
||||
private System.Threading.SendOrPostCallback DisableHeliconApeOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback EnableHeliconApeGloballyOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback DisableHeliconApeGloballyOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetHeliconApeFoldersOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetHeliconApeHttpdFolderOperationCompleted;
|
||||
|
@ -384,6 +388,12 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
/// <remarks/>
|
||||
public event DisableHeliconApeCompletedEventHandler DisableHeliconApeCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event EnableHeliconApeGloballyCompletedEventHandler EnableHeliconApeGloballyCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event DisableHeliconApeGloballyCompletedEventHandler DisableHeliconApeGloballyCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetHeliconApeFoldersCompletedEventHandler GetHeliconApeFoldersCompleted;
|
||||
|
||||
|
@ -2705,6 +2715,88 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/EnableHeliconApeGlobally", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public int EnableHeliconApeGlobally(int serviceId) {
|
||||
object[] results = this.Invoke("EnableHeliconApeGlobally", new object[] {
|
||||
serviceId});
|
||||
return ((int)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginEnableHeliconApeGlobally(int serviceId, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("EnableHeliconApeGlobally", new object[] {
|
||||
serviceId}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public int EndEnableHeliconApeGlobally(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((int)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void EnableHeliconApeGloballyAsync(int serviceId) {
|
||||
this.EnableHeliconApeGloballyAsync(serviceId, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void EnableHeliconApeGloballyAsync(int serviceId, object userState) {
|
||||
if ((this.EnableHeliconApeGloballyOperationCompleted == null)) {
|
||||
this.EnableHeliconApeGloballyOperationCompleted = new System.Threading.SendOrPostCallback(this.OnEnableHeliconApeGloballyOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("EnableHeliconApeGlobally", new object[] {
|
||||
serviceId}, this.EnableHeliconApeGloballyOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnEnableHeliconApeGloballyOperationCompleted(object arg) {
|
||||
if ((this.EnableHeliconApeGloballyCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.EnableHeliconApeGloballyCompleted(this, new EnableHeliconApeGloballyCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/DisableHeliconApeGlobally", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public int DisableHeliconApeGlobally(int serviceId) {
|
||||
object[] results = this.Invoke("DisableHeliconApeGlobally", new object[] {
|
||||
serviceId});
|
||||
return ((int)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginDisableHeliconApeGlobally(int serviceId, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("DisableHeliconApeGlobally", new object[] {
|
||||
serviceId}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public int EndDisableHeliconApeGlobally(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((int)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void DisableHeliconApeGloballyAsync(int serviceId) {
|
||||
this.DisableHeliconApeGloballyAsync(serviceId, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void DisableHeliconApeGloballyAsync(int serviceId, object userState) {
|
||||
if ((this.DisableHeliconApeGloballyOperationCompleted == null)) {
|
||||
this.DisableHeliconApeGloballyOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDisableHeliconApeGloballyOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("DisableHeliconApeGlobally", new object[] {
|
||||
serviceId}, this.DisableHeliconApeGloballyOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnDisableHeliconApeGloballyOperationCompleted(object arg) {
|
||||
if ((this.DisableHeliconApeGloballyCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.DisableHeliconApeGloballyCompleted(this, new DisableHeliconApeGloballyCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetHeliconApeFolders", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public HtaccessFolder[] GetHeliconApeFolders(int siteItemId) {
|
||||
|
@ -5332,6 +5424,58 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void EnableHeliconApeGloballyCompletedEventHandler(object sender, EnableHeliconApeGloballyCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class EnableHeliconApeGloballyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal EnableHeliconApeGloballyCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public int Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((int)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void DisableHeliconApeGloballyCompletedEventHandler(object sender, DisableHeliconApeGloballyCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class DisableHeliconApeGloballyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal DisableHeliconApeGloballyCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public int Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((int)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void GetHeliconApeFoldersCompletedEventHandler(object sender, GetHeliconApeFoldersCompletedEventArgs e);
|
||||
|
|
|
@ -2869,7 +2869,6 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Helicon Ape
|
||||
public static int EnableHeliconApe(int siteItemId)
|
||||
{
|
||||
|
@ -2939,7 +2938,48 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <summary>
|
||||
/// Enables Helicon Ape on the server globally. Requires Administrator role to execute.
|
||||
/// </summary>
|
||||
/// <param name="ServiceId"></param>
|
||||
/// <returns></returns>
|
||||
public static int EnableHeliconApeGlobally(int ServiceId)
|
||||
{
|
||||
int accountCheck = SecurityContext.CheckAccount(DemandAccount.IsAdmin | DemandAccount.IsActive | DemandAccount.NotDemo);
|
||||
if (accountCheck < 0)
|
||||
{
|
||||
return accountCheck;
|
||||
}
|
||||
|
||||
WebServer web = GetWebServer(ServiceId);
|
||||
web.EnableHeliconApe("");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Disables Helicon Ape on the server globally. Requires Administrator role to execute.
|
||||
/// </summary>
|
||||
/// <param name="ServiceId"></param>
|
||||
/// <returns></returns>
|
||||
public static int DisableHeliconApeGlobally(int ServiceId)
|
||||
{
|
||||
int accountCheck = SecurityContext.CheckAccount(DemandAccount.IsAdmin | DemandAccount.IsActive | DemandAccount.NotDemo);
|
||||
//
|
||||
if (accountCheck < 0)
|
||||
{
|
||||
return accountCheck;
|
||||
}
|
||||
|
||||
WebServer web = GetWebServer(ServiceId);
|
||||
web.DisableHeliconApe("");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves Helicon Ape extension status from the server. Requires Administrator role to execute.
|
||||
/// </summary>
|
||||
/// <param name="ServiceId"></param>
|
||||
|
|
|
@ -378,6 +378,18 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return WebServerController.DisableHeliconApe(siteItemId);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public int EnableHeliconApeGlobally(int serviceId)
|
||||
{
|
||||
return WebServerController.EnableHeliconApeGlobally(serviceId);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public int DisableHeliconApeGlobally(int serviceId)
|
||||
{
|
||||
return WebServerController.DisableHeliconApeGlobally(serviceId);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public HtaccessFolder[] GetHeliconApeFolders(int siteItemId)
|
||||
{
|
||||
|
|
|
@ -51,7 +51,7 @@ namespace WebsitePanel.Providers.Web
|
|||
#endregion
|
||||
|
||||
#region parsing regexps
|
||||
protected static readonly Regex RE_AUTH_NAME = new Regex(@"^\s*AuthName\s+(.+)\s*$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);
|
||||
protected static readonly Regex RE_AUTH_NAME = new Regex("^\\s*AuthName\\s+\"?([^\"]+)\"?\\s*$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);
|
||||
protected static readonly Regex RE_AUTH_TYPE = new Regex(@"^\s*AuthType\s+(basic|digest)\s*$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);
|
||||
protected static readonly Regex RE_REQUIRE = new Regex(@"^\s*Require\s+(.+)\s*$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);
|
||||
protected static readonly Regex RE_AUTH_PROVIDER = new Regex(@"^\s*Auth(Basic|Digest)Provider\s+(file)\s*$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);
|
||||
|
|
|
@ -30,6 +30,7 @@ using System;
|
|||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using WebsitePanel.Providers.ResultObjects;
|
||||
|
||||
namespace WebsitePanel.Providers.Web
|
||||
{
|
||||
|
@ -61,6 +62,7 @@ namespace WebsitePanel.Providers.Web
|
|||
private bool securedFoldersInstalled;
|
||||
private bool heliconApeInstalled;
|
||||
private bool heliconApeEnabled;
|
||||
private HeliconApeStatus heliconApeStatus;
|
||||
|
||||
public WebSite()
|
||||
{
|
||||
|
@ -179,6 +181,12 @@ namespace WebsitePanel.Providers.Web
|
|||
get { return this.heliconApeEnabled; }
|
||||
set { this.heliconApeEnabled = value; }
|
||||
}
|
||||
|
||||
public HeliconApeStatus HeliconApeStatus
|
||||
{
|
||||
get { return this.heliconApeStatus; }
|
||||
set { this.heliconApeStatus = value; }
|
||||
}
|
||||
}
|
||||
|
||||
[Flags]
|
||||
|
|
|
@ -39,7 +39,7 @@ using WebsitePanel.Server.Utils;
|
|||
using WebsitePanel.Providers.Utils;
|
||||
using WebsitePanel.Providers;
|
||||
using System.Reflection;
|
||||
|
||||
using System.Data.Common;
|
||||
|
||||
namespace WebsitePanel.Providers.Database
|
||||
{
|
||||
|
@ -129,49 +129,36 @@ namespace WebsitePanel.Providers.Database
|
|||
|
||||
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
|
||||
{
|
||||
//
|
||||
|
||||
|
||||
//
|
||||
if (!args.Name.Contains("MySql.Data"))
|
||||
return null;
|
||||
|
||||
if (args.Name.Contains("MySql.Data.resources"))
|
||||
return null;
|
||||
|
||||
//
|
||||
string connectorKeyName = "SOFTWARE\\MySQL AB\\MySQL Connector/Net";
|
||||
string connectorLocation = String.Empty;
|
||||
string connectorVersion = String.Empty;
|
||||
//
|
||||
if (PInvoke.RegistryHive.HKLM.SubKeyExists_x86(connectorKeyName))
|
||||
{
|
||||
connectorLocation = PInvoke.RegistryHive.HKLM.GetSubKeyValue_x86(connectorKeyName, "Location");
|
||||
connectorVersion = PInvoke.RegistryHive.HKLM.GetSubKeyValue_x86(connectorKeyName, "Version");
|
||||
}
|
||||
//
|
||||
if (String.IsNullOrEmpty(connectorLocation))
|
||||
{
|
||||
Log.WriteInfo("Connector location is either null or empty");
|
||||
return null;
|
||||
}
|
||||
|
||||
string assemblyFile = args.Name.Split(',')[0] + ".dll";
|
||||
|
||||
// 1st location
|
||||
string assemblyPath = Path.Combine(connectorLocation, @"Binaries\.NET 2.0\" + assemblyFile);
|
||||
if (!File.Exists(assemblyPath))
|
||||
|
||||
string assemblyFullName = string.Format("MySql.Data, Version={0}.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d", connectorVersion);
|
||||
|
||||
if (assemblyFullName == args.Name)
|
||||
{
|
||||
// 2nd location
|
||||
assemblyPath = Path.Combine(connectorLocation, @"Assemblies\" + assemblyFile);
|
||||
|
||||
if (!File.Exists(assemblyPath))
|
||||
{
|
||||
// 3rd location
|
||||
assemblyPath = Path.Combine(connectorLocation, @"Assemblies\v2.0" + assemblyFile);
|
||||
|
||||
if (!File.Exists(assemblyPath))
|
||||
{
|
||||
Log.WriteInfo("Connector assembly could not be found or does not exist");
|
||||
return null; // sorry, cannot find
|
||||
}
|
||||
}
|
||||
return null; //avoid of stack overflow
|
||||
}
|
||||
|
||||
return Assembly.LoadFrom(assemblyPath);
|
||||
|
||||
return Assembly.Load(assemblyFullName);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -185,8 +172,14 @@ namespace WebsitePanel.Providers.Database
|
|||
|
||||
public virtual bool CheckConnectivity(string databaseName, string username, string password)
|
||||
{
|
||||
MySqlConnection conn = new MySqlConnection(String.Format("server={0};port={1};database={2};uid={3};password={4}",
|
||||
ServerName, ServerPort, databaseName, username, password));
|
||||
MySqlConnection conn = new MySqlConnection(
|
||||
String.Format("server={0};port={1};database={2};uid={3};password={4}",
|
||||
ServerName,
|
||||
ServerPort,
|
||||
databaseName,
|
||||
username,
|
||||
password)
|
||||
);
|
||||
try
|
||||
{
|
||||
conn.Open();
|
||||
|
|
|
@ -32,7 +32,7 @@ using System.Text;
|
|||
using System.Text.RegularExpressions;
|
||||
using System.Data;
|
||||
using Microsoft.Win32;
|
||||
using MySql.Data.MySqlClient;
|
||||
//using MySql.Data.MySqlClient;
|
||||
using System.IO;
|
||||
|
||||
using WebsitePanel.Server.Utils;
|
||||
|
|
|
@ -101,7 +101,11 @@ namespace WebsitePanel.Providers.Web
|
|||
public const string DOTNETPANEL_IISMODULES = "DotNetPanel.IIsModules";
|
||||
|
||||
|
||||
public const string HeliconApeModule = "Helicon Ape";
|
||||
public const string HeliconApeModulePrevName = "Helicon Ape";
|
||||
// true module name
|
||||
public const string HeliconApeModule = "Helicon.Ape";
|
||||
// true handler name
|
||||
public const string HeliconApeHandler = "Helicon.Ape Handler";
|
||||
public const string HeliconApeHandlerPath = "*.apehandler";
|
||||
|
||||
public const string IsapiModule = "IsapiModule";
|
||||
|
@ -1165,6 +1169,7 @@ namespace WebsitePanel.Providers.Web
|
|||
HeliconApeStatus heliconApeStatus = GetHeliconApeStatus(srvman, siteId);
|
||||
site.HeliconApeInstalled = heliconApeStatus.IsInstalled;
|
||||
site.HeliconApeEnabled = heliconApeStatus.IsEnabled;
|
||||
site.HeliconApeStatus = heliconApeStatus;
|
||||
|
||||
//
|
||||
site.SiteState = GetSiteState(srvman, siteId);
|
||||
|
@ -1860,6 +1865,9 @@ namespace WebsitePanel.Providers.Web
|
|||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
|
||||
#region Helicon Ape
|
||||
|
||||
public override HeliconApeStatus GetHeliconApeStatus(string siteId)
|
||||
|
@ -1894,7 +1902,11 @@ namespace WebsitePanel.Providers.Web
|
|||
|
||||
foreach (var moduleEntry in modulesCollection)
|
||||
{
|
||||
if (String.Equals(moduleEntry["name"].ToString(), Constants.HeliconApeModule, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (
|
||||
String.Equals(moduleEntry["name"].ToString(), Constants.HeliconApeModule, StringComparison.InvariantCultureIgnoreCase)
|
||||
||
|
||||
String.Equals(moduleEntry["name"].ToString(), Constants.HeliconApeModulePrevName, StringComparison.InvariantCultureIgnoreCase)
|
||||
)
|
||||
return true;
|
||||
}
|
||||
//
|
||||
|
@ -1986,7 +1998,13 @@ namespace WebsitePanel.Providers.Web
|
|||
private string GetHeliconApeInstallDir(string siteId)
|
||||
{
|
||||
//Check global registration
|
||||
return Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Helicon\\Ape", "InstallDir", string.Empty) as string;
|
||||
string installDir = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Helicon\\Ape", "InstallDir", string.Empty) as string;
|
||||
if (string.Empty == installDir)
|
||||
{
|
||||
installDir = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Helicon\\Ape", "InstallDir", string.Empty) as string;
|
||||
}
|
||||
|
||||
return installDir;
|
||||
}
|
||||
|
||||
private bool IsHeliconApeInstalled(ServerManager srvman, string siteId, string installDir)
|
||||
|
@ -2013,7 +2031,26 @@ namespace WebsitePanel.Providers.Web
|
|||
if (string.IsNullOrEmpty(installDir))
|
||||
return HELICON_APE_NOT_REGISTERED;
|
||||
|
||||
return System.Diagnostics.FileVersionInfo.GetVersionInfo(Path.Combine(installDir, "Helicon.Ape.Editor.dll")).FileVersion;
|
||||
string apeModulePath = Path.Combine(installDir, "bin\\Helicon.Ape.dll");
|
||||
if (File.Exists(apeModulePath))
|
||||
{
|
||||
return System.Diagnostics.FileVersionInfo.GetVersionInfo(apeModulePath).FileVersion;
|
||||
}
|
||||
|
||||
apeModulePath = Path.Combine(installDir, "ManualInstall\\bin\\Helicon.Ape.dll");
|
||||
if (File.Exists(apeModulePath))
|
||||
{
|
||||
return System.Diagnostics.FileVersionInfo.GetVersionInfo(apeModulePath).FileVersion;
|
||||
}
|
||||
|
||||
apeModulePath = Path.Combine(installDir, "Helicon.Ape.dll");
|
||||
if (File.Exists(apeModulePath))
|
||||
{
|
||||
return System.Diagnostics.FileVersionInfo.GetVersionInfo(apeModulePath).FileVersion;
|
||||
}
|
||||
|
||||
|
||||
return HELICON_APE_NOT_REGISTERED;
|
||||
}
|
||||
|
||||
private string GetHeliconApeModuleType(string siteId)
|
||||
|
@ -2147,120 +2184,150 @@ namespace WebsitePanel.Providers.Web
|
|||
return registrationInfo.StartsWith("Registered to:");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enables Helicon Ape module & handler on the web site or server globally.
|
||||
/// </summary>
|
||||
/// <param name="siteId">
|
||||
/// Web site id or empty string ("") for server-wide enabling
|
||||
/// </param>
|
||||
public override void EnableHeliconApe(string siteId)
|
||||
{
|
||||
WebSite webSite = null;
|
||||
using (ServerManager srvman = webObjectsSvc.GetServerManager())
|
||||
if (null == siteId)
|
||||
{
|
||||
//
|
||||
if (String.IsNullOrEmpty(siteId))
|
||||
throw new ArgumentNullException("siteId");
|
||||
|
||||
// Helicon.Ape.ApeModule works for apps working in Integrated Pipeline mode
|
||||
// Switch automatically to the app pool with Integrated Pipeline enabled
|
||||
webSite = webObjectsSvc.GetWebSiteFromIIS(srvman, siteId);
|
||||
//
|
||||
if (webSite == null)
|
||||
throw new ApplicationException(String.Format("Could not find a web site with the following identifier: {0}.", siteId));
|
||||
|
||||
// Fill ASP.NET settings
|
||||
FillAspNetSettingsFromIISObject(srvman, webSite);
|
||||
throw new ArgumentNullException("siteId");
|
||||
}
|
||||
|
||||
//
|
||||
var aphl = new WebAppPoolHelper(ProviderSettings);
|
||||
var currentPool = aphl.match_webapp_pool(webSite);
|
||||
var dotNetVersion = aphl.dotNetVersion(currentPool.Mode);
|
||||
var sisMode = aphl.isolation(currentPool.Mode);
|
||||
// AT least ASP.NET 2.0 is allowed to provide such capabilities...
|
||||
if (dotNetVersion == SiteAppPoolMode.dotNetFramework1)
|
||||
dotNetVersion = SiteAppPoolMode.dotNetFramework2;
|
||||
// and Integrated pipeline...
|
||||
if (aphl.pipeline(currentPool.Mode) != SiteAppPoolMode.Integrated)
|
||||
if ("" != siteId)
|
||||
{
|
||||
// Lookup for the opposite pool matching the criteria
|
||||
var oppositePool = Array.Find<WebAppPool>(aphl.SupportedAppPools.ToArray(),
|
||||
x => aphl.dotNetVersion(x.Mode) == dotNetVersion && aphl.isolation(x.Mode) == sisMode
|
||||
&& aphl.pipeline(x.Mode) == SiteAppPoolMode.Integrated);
|
||||
//
|
||||
webSite.AspNetInstalled = oppositePool.AspNetInstalled;
|
||||
//
|
||||
SetWebSiteApplicationPool(webSite, false);
|
||||
// prepare enabling Ape for web site
|
||||
|
||||
WebSite webSite = null;
|
||||
using (ServerManager srvman = webObjectsSvc.GetServerManager())
|
||||
{
|
||||
// Helicon.Ape.ApeModule works for apps working in Integrated Pipeline mode
|
||||
// Switch automatically to the app pool with Integrated Pipeline enabled
|
||||
webSite = webObjectsSvc.GetWebSiteFromIIS(srvman, siteId);
|
||||
if (webSite == null)
|
||||
throw new ApplicationException(
|
||||
String.Format("Could not find a web site with the following identifier: {0}.", siteId));
|
||||
|
||||
// Fill ASP.NET settings
|
||||
FillAspNetSettingsFromIISObject(srvman, webSite);
|
||||
}
|
||||
|
||||
//
|
||||
var aphl = new WebAppPoolHelper(ProviderSettings);
|
||||
var currentPool = aphl.match_webapp_pool(webSite);
|
||||
var dotNetVersion = aphl.dotNetVersion(currentPool.Mode);
|
||||
var sisMode = aphl.isolation(currentPool.Mode);
|
||||
// AT least ASP.NET 2.0 is allowed to provide such capabilities...
|
||||
if (dotNetVersion == SiteAppPoolMode.dotNetFramework1)
|
||||
dotNetVersion = SiteAppPoolMode.dotNetFramework2;
|
||||
// and Integrated pipeline...
|
||||
if (aphl.pipeline(currentPool.Mode) != SiteAppPoolMode.Integrated)
|
||||
{
|
||||
// Lookup for the opposite pool matching the criteria
|
||||
var oppositePool = Array.Find<WebAppPool>(aphl.SupportedAppPools.ToArray(),
|
||||
x =>
|
||||
aphl.dotNetVersion(x.Mode) == dotNetVersion &&
|
||||
aphl.isolation(x.Mode) == sisMode
|
||||
&& aphl.pipeline(x.Mode) == SiteAppPoolMode.Integrated);
|
||||
//
|
||||
webSite.AspNetInstalled = oppositePool.AspNetInstalled;
|
||||
//
|
||||
SetWebSiteApplicationPool(webSite, false);
|
||||
//
|
||||
using (var srvman = webObjectsSvc.GetServerManager())
|
||||
{
|
||||
var iisSiteObject = srvman.Sites[siteId];
|
||||
iisSiteObject.Applications["/"].ApplicationPoolName = webSite.ApplicationPool;
|
||||
//
|
||||
srvman.CommitChanges();
|
||||
}
|
||||
}
|
||||
|
||||
#region Disable automatically Integrated Windows Authentication
|
||||
|
||||
using (var srvman = webObjectsSvc.GetServerManager())
|
||||
{
|
||||
var iisSiteObject = srvman.Sites[siteId];
|
||||
iisSiteObject.Applications["/"].ApplicationPoolName = webSite.ApplicationPool;
|
||||
PropertyBag winAuthBag = winAuthSvc.GetAuthenticationSettings(srvman, siteId);
|
||||
//
|
||||
srvman.CommitChanges();
|
||||
}
|
||||
}
|
||||
if ((bool) winAuthBag[AuthenticationGlobals.Enabled])
|
||||
{
|
||||
Configuration config = srvman.GetApplicationHostConfiguration();
|
||||
|
||||
#region Disable automatically Integrated Windows Authentication
|
||||
using (var srvman = webObjectsSvc.GetServerManager())
|
||||
{
|
||||
PropertyBag winAuthBag = winAuthSvc.GetAuthenticationSettings(srvman, siteId);
|
||||
//
|
||||
if ((bool)winAuthBag[AuthenticationGlobals.Enabled])
|
||||
ConfigurationSection windowsAuthenticationSection = config.GetSection(
|
||||
"system.webServer/security/authentication/windowsAuthentication",
|
||||
siteId);
|
||||
//
|
||||
windowsAuthenticationSection["enabled"] = false;
|
||||
//
|
||||
srvman.CommitChanges();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Disable automatically Secured Folders
|
||||
|
||||
if (IsSecuredFoldersInstalled(siteId))
|
||||
{
|
||||
Configuration config = srvman.GetApplicationHostConfiguration();
|
||||
|
||||
ConfigurationSection windowsAuthenticationSection = config.GetSection(
|
||||
"system.webServer/security/authentication/windowsAuthentication",
|
||||
siteId);
|
||||
//
|
||||
windowsAuthenticationSection["enabled"] = false;
|
||||
//
|
||||
srvman.CommitChanges();
|
||||
UninstallSecuredFolders(siteId);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Disable automatically Secured Folders
|
||||
if (IsSecuredFoldersInstalled(siteId))
|
||||
{
|
||||
UninstallSecuredFolders(siteId);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
//
|
||||
using (var srvman = webObjectsSvc.GetServerManager())
|
||||
{
|
||||
//
|
||||
Configuration appConfig = srvman.GetApplicationHostConfiguration();
|
||||
|
||||
// add Helicon.Ape module
|
||||
ConfigurationSection modulesSection = appConfig.GetSection(Constants.ModulesSection, siteId);
|
||||
ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();
|
||||
ConfigurationElement moduleAdd = modulesCollection.CreateElement("add");
|
||||
moduleAdd["name"] = Constants.HeliconApeModule;
|
||||
moduleAdd["type"] = GetHeliconApeModuleType(siteId);
|
||||
//
|
||||
modulesCollection.Add(moduleAdd);
|
||||
|
||||
// <add name="Helicon.Ape" />
|
||||
ConfigurationElement heliconApeModuleEntry = modulesCollection.CreateElement("add");
|
||||
heliconApeModuleEntry["name"] = Constants.HeliconApeModule;
|
||||
heliconApeModuleEntry["type"] = GetHeliconApeModuleType(siteId);
|
||||
|
||||
// this way make <clear/> and copy all modules list from ancestor
|
||||
//modulesCollection.AddAt(0, heliconApeModuleEntry);
|
||||
// this way just insert single ape module entry
|
||||
modulesCollection.Add(heliconApeModuleEntry);
|
||||
|
||||
|
||||
|
||||
|
||||
// add Helicon.Ape handler
|
||||
ConfigurationSection handlersSection = appConfig.GetSection(Constants.HandlersSection, siteId);
|
||||
ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
|
||||
ConfigurationElement handlerAdd = handlersCollection.CreateElement("add");
|
||||
handlerAdd["name"] = Constants.HeliconApeModule;
|
||||
handlerAdd["type"] = GetHeliconApeHandlerType(siteId);
|
||||
handlerAdd["path"] = Constants.HeliconApeHandlerPath;
|
||||
handlerAdd["verb"] = "*";
|
||||
handlerAdd["resourceType"] = "Unspecified";
|
||||
//
|
||||
handlersCollection.Add(handlerAdd);
|
||||
//
|
||||
|
||||
// <add name="Helicon.Ape" />
|
||||
ConfigurationElement heliconApeHandlerEntry = handlersCollection.CreateElement("add");
|
||||
heliconApeHandlerEntry["name"] = Constants.HeliconApeHandler;
|
||||
heliconApeHandlerEntry["type"] = GetHeliconApeHandlerType(siteId);
|
||||
heliconApeHandlerEntry["path"] = Constants.HeliconApeHandlerPath;
|
||||
heliconApeHandlerEntry["verb"] = "*";
|
||||
heliconApeHandlerEntry["resourceType"] = "Unspecified";
|
||||
|
||||
handlersCollection.AddAt(0, heliconApeHandlerEntry);
|
||||
|
||||
srvman.CommitChanges();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disables Helicon Ape module & handler on the web site or server globally.
|
||||
/// </summary>
|
||||
/// <param name="siteId">
|
||||
/// Web site id or empty string ("") for server-wide disabling
|
||||
/// </param>
|
||||
public override void DisableHeliconApe(string siteId)
|
||||
{
|
||||
//
|
||||
if (String.IsNullOrEmpty(siteId))
|
||||
if (null == siteId)
|
||||
throw new ArgumentNullException("siteId");
|
||||
//
|
||||
|
||||
using (var srvman = webObjectsSvc.GetServerManager())
|
||||
{
|
||||
//
|
||||
|
@ -2269,40 +2336,48 @@ namespace WebsitePanel.Providers.Web
|
|||
// remove Helicon.Ape module
|
||||
ConfigurationSection modulesSection = appConfig.GetSection(Constants.ModulesSection, siteId);
|
||||
ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();
|
||||
ConfigurationElement htaccessModuleEntry = null;
|
||||
List<ConfigurationElement> heliconApeModuleEntriesList = new List<ConfigurationElement>();
|
||||
foreach (ConfigurationElement moduleEntry in modulesCollection)
|
||||
{
|
||||
if (String.Equals(moduleEntry["name"].ToString(), Constants.HeliconApeModule, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (
|
||||
String.Equals(moduleEntry["name"].ToString(), Constants.HeliconApeModule, StringComparison.InvariantCultureIgnoreCase)
|
||||
||
|
||||
String.Equals(moduleEntry["name"].ToString(), Constants.HeliconApeModulePrevName, StringComparison.InvariantCultureIgnoreCase)
|
||||
)
|
||||
{
|
||||
htaccessModuleEntry = moduleEntry;
|
||||
break;
|
||||
heliconApeModuleEntriesList.Add(moduleEntry);
|
||||
}
|
||||
}
|
||||
if (htaccessModuleEntry != null)
|
||||
foreach (ConfigurationElement heliconApeElement in heliconApeModuleEntriesList)
|
||||
{
|
||||
modulesCollection.Remove(htaccessModuleEntry);
|
||||
modulesCollection.Remove(heliconApeElement);
|
||||
}
|
||||
|
||||
// remove Helicon.Ape handler
|
||||
ConfigurationSection handlersSection = appConfig.GetSection(Constants.HandlersSection, siteId);
|
||||
ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
|
||||
ConfigurationElement htaccessHandlerEntry = null;
|
||||
List<ConfigurationElement> heliconApeHandlerEntriesList = new List<ConfigurationElement>();
|
||||
foreach (ConfigurationElement handlerEntry in handlersCollection)
|
||||
{
|
||||
if (String.Equals(handlerEntry["name"].ToString(), Constants.HeliconApeModule, StringComparison.InvariantCultureIgnoreCase))
|
||||
if (
|
||||
String.Equals(handlerEntry["name"].ToString(), Constants.HeliconApeModule, StringComparison.InvariantCultureIgnoreCase)
|
||||
||
|
||||
String.Equals(handlerEntry["name"].ToString(), Constants.HeliconApeModulePrevName, StringComparison.InvariantCultureIgnoreCase)
|
||||
||
|
||||
String.Equals(handlerEntry["name"].ToString(), Constants.HeliconApeHandler, StringComparison.InvariantCultureIgnoreCase)
|
||||
)
|
||||
{
|
||||
htaccessHandlerEntry = handlerEntry;
|
||||
break;
|
||||
heliconApeHandlerEntriesList.Add(handlerEntry);
|
||||
}
|
||||
}
|
||||
//
|
||||
if (htaccessHandlerEntry != null)
|
||||
foreach (ConfigurationElement heliconApeHandlerEntry in heliconApeHandlerEntriesList)
|
||||
{
|
||||
handlersCollection.Remove(htaccessHandlerEntry);
|
||||
handlersCollection.Remove(heliconApeHandlerEntry);
|
||||
}
|
||||
|
||||
// commit changes to metabase
|
||||
if (htaccessModuleEntry != null || htaccessHandlerEntry != null)
|
||||
if (heliconApeModuleEntriesList.Count > 0 || heliconApeHandlerEntriesList.Count > 0)
|
||||
{
|
||||
srvman.CommitChanges();
|
||||
}
|
||||
|
|
|
@ -219,6 +219,12 @@ namespace WebsitePanel.Server.Code
|
|||
continue;
|
||||
}
|
||||
|
||||
if (product.GetAttributeValue("searchExclude") != null)
|
||||
{
|
||||
// skip it, this is internal not visible product
|
||||
continue;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(filter))
|
||||
{
|
||||
products.Add(product);
|
||||
|
|
|
@ -163,10 +163,10 @@
|
|||
<value>Provisioning Options</value>
|
||||
</data>
|
||||
<data name="PointMailDomain.Text" xml:space="preserve">
|
||||
<value>Point to existing Mail Domain</value>
|
||||
<value>Assign to existing Mail Domain</value>
|
||||
</data>
|
||||
<data name="PointWebSite.Text" xml:space="preserve">
|
||||
<value>Point to existing Web Site</value>
|
||||
<value>Assign to existing Web Site</value>
|
||||
</data>
|
||||
<data name="SubDomainFormatValidator.ErrorMessage" xml:space="preserve">
|
||||
<value>Please, enter correct sub-domain name, for example "subdomain" or "sub.subdomain".</value>
|
||||
|
|
|
@ -121,13 +121,13 @@
|
|||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="DomainDescription.Text" xml:space="preserve">
|
||||
<value>Create a Top-Level Domain (TLD).</value>
|
||||
<value>Create a Top-Level Domain (TLD). You can create a new web site for domain or assign it to an existing web site.</value>
|
||||
</data>
|
||||
<data name="DomainLink.Text" xml:space="preserve">
|
||||
<value>Domain</value>
|
||||
</data>
|
||||
<data name="DomainPointerDescription.Text" xml:space="preserve">
|
||||
<value>Create a Top-Level Domain (TLD) or sub-domain that could point to the existing web site only.</value>
|
||||
<value>Create a Top-Level Domain (TLD) or sub-domain that can point to the existing web site only.</value>
|
||||
</data>
|
||||
<data name="DomainPointerLink.Text" xml:space="preserve">
|
||||
<value>Domain Alias</value>
|
||||
|
@ -136,13 +136,13 @@
|
|||
<value>Please choose what type of domain you would like to add:</value>
|
||||
</data>
|
||||
<data name="ProviderSubDomainDescription.Text" xml:space="preserve">
|
||||
<value>Create a sub-domain under domains allowed by your hosting provider. You could create a new web site for sub-domain or point it to existing one.</value>
|
||||
<value>Create a sub-domain under domains allowed by your hosting provider. You can create a new web site for sub-domain or assign it to an existing web site.</value>
|
||||
</data>
|
||||
<data name="ProviderSubDomainLink.Text" xml:space="preserve">
|
||||
<value>Provider Sub-domain</value>
|
||||
</data>
|
||||
<data name="SubDomainDescription.Text" xml:space="preserve">
|
||||
<value>Create a sub-domain for already added top-level domain. You could create a new web site for sub-domain.</value>
|
||||
<value>Create a sub-domain for already added top-level domain. You can create a new web site for sub-domain or assign it to an existing web site.</value>
|
||||
</data>
|
||||
<data name="SubDomainLink.Text" xml:space="preserve">
|
||||
<value>Sub-domain</value>
|
||||
|
|
|
@ -252,4 +252,7 @@
|
|||
<data name="ServerNameValidator.Text" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="lnkPlatformInstaller.Text">
|
||||
<value xml:space="preserve">Web Platform Installer</value>
|
||||
</data>
|
||||
</root>
|
|
@ -132,6 +132,9 @@
|
|||
<data name="EnableHeliconApe.Text" xml:space="preserve">
|
||||
<value>Enable Helicon Ape</value>
|
||||
</data>
|
||||
<data name="EnableHeliconApeTrial.Text" xml:space="preserve">
|
||||
<value>Enable Helicon Ape (45 days trial)</value>
|
||||
</data>
|
||||
<data name="gvHeliconApeFolders.Empty" xml:space="preserve">
|
||||
<value>Click "Add Folder" button to add .htaccess folder</value>
|
||||
</data>
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
</asp:Panel>
|
||||
|
||||
<asp:Panel id="PointWebSitePanel" runat="server" style="padding-bottom: 15px;">
|
||||
<asp:CheckBox ID="PointWebSite" runat="server" meta:resourcekey="PointWebSite" Text="Point to Web Site" CssClass="Checkbox Bold"
|
||||
<asp:CheckBox ID="PointWebSite" runat="server" meta:resourcekey="PointWebSite" Text="Assign to Web Site" CssClass="Checkbox Bold"
|
||||
AutoPostBack="true" /><br />
|
||||
<div style="padding-left: 20px;">
|
||||
<asp:DropDownList ID="WebSitesList" Runat="server" CssClass="NormalTextBox" DataTextField="Name" DataValueField="ID"></asp:DropDownList>
|
||||
|
@ -55,7 +55,7 @@
|
|||
</asp:Panel>
|
||||
|
||||
<asp:Panel id="PointMailDomainPanel" runat="server" style="padding-bottom: 15px;">
|
||||
<asp:CheckBox ID="PointMailDomain" runat="server" meta:resourcekey="PointMailDomain" Text="Point to Mail Domain" CssClass="Checkbox Bold"
|
||||
<asp:CheckBox ID="PointMailDomain" runat="server" meta:resourcekey="PointMailDomain" Text="Assign to Mail Domain" CssClass="Checkbox Bold"
|
||||
AutoPostBack="true" /><br />
|
||||
<div style="padding-left: 20px;">
|
||||
<asp:DropDownList ID="MailDomainsList" Runat="server" CssClass="NormalTextBox" DataTextField="Name" DataValueField="ID"></asp:DropDownList>
|
||||
|
|
|
@ -99,14 +99,14 @@ namespace WebsitePanel.Portal
|
|||
// load package context
|
||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||
|
||||
if ((type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) && !IsPostBack)
|
||||
if ((type == DomainType.DomainPointer || (type == DomainType.Domain)) && !IsPostBack)
|
||||
{
|
||||
// bind web sites
|
||||
WebSitesList.DataSource = ES.Services.WebServers.GetWebSites(PanelSecurity.PackageId, false);
|
||||
WebSitesList.DataBind();
|
||||
}
|
||||
|
||||
if ((type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted)) && !IsPostBack)
|
||||
if ((type == DomainType.DomainPointer || (type == DomainType.Domain)) && !IsPostBack)
|
||||
{
|
||||
// bind mail domains
|
||||
MailDomainsList.DataSource = ES.Services.MailServers.GetMailDomains(PanelSecurity.PackageId, false);
|
||||
|
@ -130,12 +130,12 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
|
||||
// point Web site
|
||||
PointWebSitePanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted))
|
||||
PointWebSitePanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain))
|
||||
&& cntx.Groups.ContainsKey(ResourceGroups.Web) && WebSitesList.Items.Count > 0;
|
||||
WebSitesList.Enabled = PointWebSite.Checked;
|
||||
|
||||
// point mail domain
|
||||
PointMailDomainPanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted))
|
||||
PointMailDomainPanel.Visible = (type == DomainType.DomainPointer || (type == DomainType.Domain))
|
||||
&& cntx.Groups.ContainsKey(ResourceGroups.Mail) && MailDomainsList.Items.Count > 0;
|
||||
MailDomainsList.Enabled = PointMailDomain.Checked;
|
||||
|
||||
|
@ -205,14 +205,14 @@ namespace WebsitePanel.Portal
|
|||
// load package context
|
||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||
|
||||
if (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted))
|
||||
if (type == DomainType.DomainPointer || (type == DomainType.Domain))
|
||||
{
|
||||
|
||||
if (PointWebSite.Checked && WebSitesList.Items.Count > 0)
|
||||
pointWebSiteId = Utils.ParseInt(WebSitesList.SelectedValue, 0);
|
||||
}
|
||||
|
||||
if (type == DomainType.DomainPointer || (type == DomainType.Domain && !cntx.Quotas[Quotas.OS_DOMAINPOINTERS].QuotaExhausted))
|
||||
if (type == DomainType.DomainPointer || (type == DomainType.Domain))
|
||||
{
|
||||
if (PointMailDomain.Checked && MailDomainsList.Items.Count > 0)
|
||||
pointMailDomainId = Utils.ParseInt(MailDomainsList.SelectedValue, 0);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (c) 2011, Outercurve Foundation.
|
||||
// Copyright (c) 2012, Outercurve Foundation.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification,
|
||||
|
|
|
@ -151,6 +151,9 @@ namespace WebsitePanel.Portal
|
|||
ddlTheme.Visible = false;
|
||||
lblTheme.Visible = false;
|
||||
}
|
||||
|
||||
// set focus on username field
|
||||
txtUsername.Focus();
|
||||
}
|
||||
|
||||
protected void cmdForgotPassword_Click(object sender, EventArgs e)
|
||||
|
|
|
@ -202,7 +202,11 @@
|
|||
<value>.htaccess</value>
|
||||
</data>
|
||||
<data name="lclHeliconApeInstallNote.Text" xml:space="preserve">
|
||||
<value>Helicon Ape product provides .htaccess and .htpasswd files support on IIS 7+ and includes all major Apache modules. Note that Helicon Ape is not yet installed on the server. <br/><br/>Please <a href="http://www.helicontech.com/ape/doc/wsp_install.htm" target="_blank">download and install</a> Helicon Ape to activate this feature.</value>
|
||||
<value>Helicon Ape provides .htaccess and .htpasswd files support and includes all major Apache modules.
|
||||
This is essential tool to fine-tune IIS web sites, improve performance, security,
|
||||
search engines rankings and for compatibility with many open source applications.
|
||||
<br/>
|
||||
Click on the link below to install Helicon Ape on the server:</value>
|
||||
</data>
|
||||
<data name="lblHtaccessAssembly.Text" xml:space="preserve">
|
||||
<value>Module Assembly:</value>
|
||||
|
@ -252,4 +256,7 @@
|
|||
<data name="txtPublicSharedIP.Text" xml:space="preserve">
|
||||
<value>Web Sites Public Shared Address:</value>
|
||||
</data>
|
||||
<data name="chkHeliconApeGlobalRegistration.Text">
|
||||
<value xml:space="preserve">Register Helicon Ape module globally:</value>
|
||||
</data>
|
||||
</root>
|
|
@ -427,6 +427,8 @@
|
|||
</td>
|
||||
<td class="Normal" valign="top">
|
||||
<asp:Localize ID="Localize1" runat="server" meta:resourcekey="lclHeliconApeInstallNote" />
|
||||
<br/><br/>
|
||||
<asp:LinkButton runat="server" ID="InstallHeliconApeLink" Text="Install Helicon Ape" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -458,9 +460,18 @@
|
|||
</td>
|
||||
<td class="Normal" valign="top">
|
||||
<asp:Button ID="EditHeliconApeConfButton" runat="server" class="Button2"
|
||||
Text="Edit httpd.conf (server config)" onclick="EditHeliconApeConfButton_Click"
|
||||
/></td>
|
||||
Text="Edit httpd.conf (server config)" onclick="EditHeliconApeConfButton_Click" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<asp:Label runat="server" AssociatedControlID="chkHeliconApeGlobalRegistration" meta:resourcekey="chkHeliconApeGlobalRegistration">Register Helicon Ape module globally:</asp:Label>
|
||||
</td>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkHeliconApeGlobalRegistration" runat="server" style="margin-left: -4px;"/>
|
||||
(<asp:Label runat="server" AssociatedControlID="chkHeliconApeGlobalRegistration">Uncheck this box to enable managing Helicon Ape using hosting plan policies.</asp:Label>)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</asp:Panel>
|
||||
</fieldset>
|
||||
|
|
|
@ -150,17 +150,36 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
txtSecureFoldersModuleAsm.Text = settings["SecureFoldersModuleAssembly"];
|
||||
|
||||
//Helicon Ape
|
||||
WebsitePanel.Providers.ResultObjects.HeliconApeStatus sts = ES.Services.WebServers.GetHeliconApeStatus(int.Parse(Request.QueryString["ServiceID"]));
|
||||
Providers.ResultObjects.HeliconApeStatus sts = ES.Services.WebServers.GetHeliconApeStatus(int.Parse(Request.QueryString["ServiceID"]));
|
||||
|
||||
if (sts.IsInstalled)
|
||||
{
|
||||
downloadApePanel.Visible = false;
|
||||
txtHeliconApeVersion.Text = sts.Version;
|
||||
lblHeliconRegistrationText.Text = sts.RegistrationInfo;
|
||||
|
||||
if (sts.IsEnabled)
|
||||
{
|
||||
chkHeliconApeGlobalRegistration.Checked = true;
|
||||
}
|
||||
ViewState["HeliconApeInitiallyEnabled"] = chkHeliconApeGlobalRegistration.Checked;
|
||||
}
|
||||
else
|
||||
{
|
||||
configureApePanel.Visible = false;
|
||||
|
||||
// Build url manually, EditUrl throws exception: module is Null
|
||||
// pid=Servers&mid=137&ctl=edit_platforminstaller&ServerID=1&Product=HeliconApe
|
||||
|
||||
List<string> qsParts= new List<string>();
|
||||
|
||||
qsParts.Add("pid=Servers");
|
||||
qsParts.Add("ctl=edit_platforminstaller");
|
||||
qsParts.Add("mid=" + Request.QueryString["mid"]);
|
||||
qsParts.Add("ServerID=" + Request.QueryString["ServerID"]);
|
||||
qsParts.Add("WPIProduct=HeliconApe");
|
||||
|
||||
InstallHeliconApeLink.Attributes["href"] = "Default.aspx?" + String.Join("&", qsParts.ToArray());
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -254,6 +273,19 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
|
||||
ActiveDirectoryIntegration.SaveSettings(settings);
|
||||
|
||||
// Helicon Ape
|
||||
bool registerHeliconApeGlobbally = chkHeliconApeGlobalRegistration.Checked;
|
||||
if (registerHeliconApeGlobbally != (bool)ViewState["HeliconApeInitiallyEnabled"])
|
||||
{
|
||||
if (registerHeliconApeGlobbally)
|
||||
{
|
||||
ES.Services.WebServers.EnableHeliconApeGlobally(int.Parse(Request.QueryString["ServiceID"]));
|
||||
}
|
||||
else
|
||||
{
|
||||
ES.Services.WebServers.DisableHeliconApeGlobally(int.Parse(Request.QueryString["ServiceID"]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -279,6 +311,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
settings["GalleryAppsAlwaysIgnoreDependencies"] = chkGalleryAppsAlwaysIgnoreDependencies.Checked.ToString();
|
||||
}
|
||||
|
||||
/*
|
||||
protected void DownladAndIstallApeLinkButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
ES.Services.WebServers.InstallHeliconApe(PanelRequest.ServiceId);
|
||||
|
@ -286,6 +319,7 @@ namespace WebsitePanel.Portal.ProviderControls
|
|||
//Redirect to avoid 2-nd call
|
||||
Response.Redirect(this.Context.Request.Url.AbsoluteUri);
|
||||
}
|
||||
*/
|
||||
|
||||
public string GetHttpdEditControlUrl(string ctrlKey, string name)
|
||||
{
|
||||
|
|
|
@ -669,6 +669,15 @@ namespace WebsitePanel.Portal.ProviderControls {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize Localize1;
|
||||
|
||||
/// <summary>
|
||||
/// InstallHeliconApeLink control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.LinkButton InstallHeliconApeLink;
|
||||
|
||||
/// <summary>
|
||||
/// configureApePanel control.
|
||||
/// </summary>
|
||||
|
@ -732,6 +741,15 @@ namespace WebsitePanel.Portal.ProviderControls {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button EditHeliconApeConfButton;
|
||||
|
||||
/// <summary>
|
||||
/// chkHeliconApeGlobalRegistration control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkHeliconApeGlobalRegistration;
|
||||
|
||||
/// <summary>
|
||||
/// secOther control.
|
||||
/// </summary>
|
||||
|
|
|
@ -108,6 +108,16 @@ namespace WebsitePanel.Portal
|
|||
ShowProgressPanel();
|
||||
}
|
||||
|
||||
string gotoProduct = Request.QueryString["WPIProduct"];
|
||||
if (!string.IsNullOrEmpty(gotoProduct))
|
||||
{
|
||||
ArrayList wpiProductsForInstall = GetProductsToInstallList();
|
||||
wpiProductsForInstall.Add(gotoProduct);
|
||||
SetProductsToInstallList(wpiProductsForInstall);
|
||||
|
||||
btnInstall_Click(sender, e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -38,23 +38,12 @@ using System.Web.UI.WebControls.WebParts;
|
|||
using System.Web.UI.HtmlControls;
|
||||
|
||||
using WebsitePanel.Providers.Web;
|
||||
using WebsitePanel.Providers.ResultObjects;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class WebSitesHeliconApeControl : WebsitePanelControlBase
|
||||
{
|
||||
private bool IsHeliconApeInstalled
|
||||
{
|
||||
get { return ViewState["IsHeliconApeInstalled"] != null ? (bool)ViewState["IsHeliconApeInstalled"] : false; }
|
||||
set { ViewState["IsHeliconApeInstalled"] = value; }
|
||||
}
|
||||
|
||||
private bool IsHeliconApeEnabled
|
||||
{
|
||||
get { return ViewState["IsHeliconApeEnabled"] != null ? (bool)ViewState["IsHeliconApeEnabled"] : false; }
|
||||
set { ViewState["IsHeliconApeEnabled"] = value; }
|
||||
|
||||
}
|
||||
|
||||
private bool IsSecuredFoldersInstalled
|
||||
{
|
||||
|
@ -62,9 +51,16 @@ namespace WebsitePanel.Portal
|
|||
set { ViewState["IsSecuredFoldersInstalled"] = value; }
|
||||
}
|
||||
|
||||
private HeliconApeStatus HeliconApeStatus
|
||||
{
|
||||
get { return (HeliconApeStatus)ViewState["HeliconApeStatus"]; }
|
||||
set { ViewState["HeliconApeStatus"] = value; }
|
||||
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (IsHeliconApeInstalled)
|
||||
if (HeliconApeStatus.IsInstalled)
|
||||
{
|
||||
if (!IsPostBack)
|
||||
{
|
||||
|
@ -90,12 +86,12 @@ namespace WebsitePanel.Portal
|
|||
public void BindHeliconApe(WebSite site)
|
||||
{
|
||||
// save initial state
|
||||
IsHeliconApeInstalled = site.HeliconApeInstalled;
|
||||
IsHeliconApeEnabled = site.HeliconApeEnabled;
|
||||
IsSecuredFoldersInstalled = site.SecuredFoldersInstalled;
|
||||
this.IsSecuredFoldersInstalled = site.SecuredFoldersInstalled;
|
||||
this.HeliconApeStatus = site.HeliconApeStatus;
|
||||
|
||||
|
||||
// Render a warning message about the automatic site's settings change
|
||||
if (!IsHeliconApeEnabled && site.IIs7)
|
||||
if (!HeliconApeStatus.IsEnabled && site.IIs7)
|
||||
{
|
||||
// Ensure the message is displayed only when neccessary
|
||||
if (site.EnableWindowsAuthentication || !site.AspNetInstalled.EndsWith("I") || site.SecuredFoldersInstalled)
|
||||
|
@ -113,11 +109,21 @@ namespace WebsitePanel.Portal
|
|||
|
||||
private void ToggleControls()
|
||||
{
|
||||
if (IsHeliconApeInstalled)
|
||||
if (HeliconApeStatus.IsInstalled)
|
||||
{
|
||||
bool IsHeliconApeEnabled = HeliconApeStatus.IsEnabled;
|
||||
|
||||
// toggle button
|
||||
btnToggleHeliconApe.Text = GetLocalizedString(
|
||||
IsHeliconApeEnabled ? "DisableHeliconApe.Text" : "EnableHeliconApe.Text");
|
||||
if (IsHeliconApeEnabled)
|
||||
{
|
||||
btnToggleHeliconApe.Text = GetLocalizedString("DisableHeliconApe.Text");
|
||||
}
|
||||
else
|
||||
{
|
||||
btnToggleHeliconApe.Text = GetLocalizedString("EnableHeliconApe.Text");
|
||||
}
|
||||
|
||||
|
||||
|
||||
// toggle panels
|
||||
HeliconApeFoldersPanel.Visible = IsHeliconApeEnabled;
|
||||
|
@ -165,7 +171,7 @@ namespace WebsitePanel.Portal
|
|||
try
|
||||
{
|
||||
int result = 0;
|
||||
if (IsHeliconApeEnabled)
|
||||
if (HeliconApeStatus.IsEnabled)
|
||||
{
|
||||
// uninstall folders
|
||||
result = ES.Services.WebServers.DisableHeliconApe(PanelRequest.ItemID);
|
||||
|
@ -189,7 +195,10 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
|
||||
// change state
|
||||
IsHeliconApeEnabled = !IsHeliconApeEnabled;
|
||||
HeliconApeStatus status = HeliconApeStatus;
|
||||
status.IsEnabled = !status.IsEnabled;
|
||||
|
||||
HeliconApeStatus = status;
|
||||
|
||||
// bind items
|
||||
ToggleControls();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue