Enterprise Storage Security Issue fixed.

This commit is contained in:
vfedosevich 2014-06-26 05:22:27 +03:00
parent fc2f121bf3
commit 619f4d2ac8
6 changed files with 116 additions and 1 deletions

View file

@ -742,7 +742,7 @@ namespace WebsitePanel.EnterpriseServer
if (web.VirtualDirectoryExists(site, vdirName))
return BusinessErrorCodes.ERROR_VDIR_ALREADY_EXISTS;
web.CreateVirtualDirectory(site, dir);
web.CreateEnterpriseStorageVirtualDirectory(site, dir);
return 0;

View file

@ -65,6 +65,7 @@ namespace WebsitePanel.Providers.Web
WebVirtualDirectory[] GetVirtualDirectories(string siteId);
WebVirtualDirectory GetVirtualDirectory(string siteId, string directoryName);
void CreateVirtualDirectory(string siteId, WebVirtualDirectory directory);
void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory);
void UpdateVirtualDirectory(string siteId, WebVirtualDirectory directory);
void DeleteVirtualDirectory(string siteId, string directoryName);

View file

@ -1658,6 +1658,39 @@ namespace WebsitePanel.Providers.Web
}
}
/// <summary>
/// Creates virtual iisDirObject under site (Enterprise Storage) with specified id.
/// </summary>
/// <param name="siteId">Site's id to create virtual iisDirObject under.</param>
/// <param name="iisDirObject">Virtual iisDirObject description.</param>
public override void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory)
{
// Create iisDirObject folder if not exists.
if (!FileUtils.DirectoryExists(directory.ContentPath))
{
FileUtils.CreateDirectory(directory.ContentPath);
}
//
WebSite webSite = GetSite(siteId);
// copy props from parent site
directory.ParentSiteName = siteId;
directory.AspNetInstalled = webSite.AspNetInstalled;
directory.ApplicationPool = webSite.ApplicationPool;
// Create record in IIS's configuration.
webObjectsSvc.CreateVirtualDirectory(siteId, directory.VirtualPath, directory.ContentPath);
using (ServerManager srvman = webObjectsSvc.GetServerManager())
{
PropertyBag bag = anonymAuthSvc.GetAuthenticationSettings(srvman, siteId);
directory.AnonymousUsername = (string)bag[AuthenticationGlobals.AnonymousAuthenticationUserName];
directory.AnonymousUserPassword = (string)bag[AuthenticationGlobals.AnonymousAuthenticationPassword];
}
// Update virtual directory (set parent site pool)
webObjectsSvc.UpdateVirtualDirectory(directory);
// Disable Anonymous Authentication
SetAnonymousAuthentication(directory);
}
/// <summary>
/// Updates virtual iisDirObject settings.
/// </summary>

View file

@ -1165,6 +1165,11 @@ namespace WebsitePanel.Providers.Web
UpdateVirtualDirectory(siteId, directory, false);
}
public virtual void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory)
{
}
public virtual void UpdateVirtualDirectory(string siteId, WebVirtualDirectory directory)
{
UpdateVirtualDirectory(siteId, directory, true);

View file

@ -124,6 +124,8 @@ namespace WebsitePanel.Providers.Web
private System.Threading.SendOrPostCallback CreateVirtualDirectoryOperationCompleted;
private System.Threading.SendOrPostCallback CreateEnterpriseStorageVirtualDirectoryOperationCompleted;
private System.Threading.SendOrPostCallback UpdateVirtualDirectoryOperationCompleted;
private System.Threading.SendOrPostCallback DeleteVirtualDirectoryOperationCompleted;
@ -352,6 +354,9 @@ namespace WebsitePanel.Providers.Web
/// <remarks/>
public event CreateVirtualDirectoryCompletedEventHandler CreateVirtualDirectoryCompleted;
/// <remarks/>
public event CreateEnterpriseStorageVirtualDirectoryCompletedEventHandler CreateEnterpriseStorageVirtualDirectoryCompleted;
/// <remarks/>
public event UpdateVirtualDirectoryCompletedEventHandler UpdateVirtualDirectoryCompleted;
@ -2070,6 +2075,57 @@ namespace WebsitePanel.Providers.Web
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateEnterpriseStorageVirtualDirectory", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory)
{
this.Invoke("CreateEnterpriseStorageVirtualDirectory", new object[] {
siteId,
directory});
}
/// <remarks/>
public System.IAsyncResult BeginCreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CreateEnterpriseStorageVirtualDirectory", new object[] {
siteId,
directory}, callback, asyncState);
}
/// <remarks/>
public void EndCreateEnterpriseStorageVirtualDirectory(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void CreateEnterpriseStorageVirtualDirectoryAsync(string siteId, WebVirtualDirectory directory)
{
this.CreateEnterpriseStorageVirtualDirectoryAsync(siteId, directory, null);
}
/// <remarks/>
public void CreateEnterpriseStorageVirtualDirectoryAsync(string siteId, WebVirtualDirectory directory, object userState)
{
if ((this.CreateEnterpriseStorageVirtualDirectoryOperationCompleted == null))
{
this.CreateEnterpriseStorageVirtualDirectoryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateEnterpriseStorageVirtualDirectoryOperationCompleted);
}
this.InvokeAsync("CreateEnterpriseStorageVirtualDirectory", new object[] {
siteId,
directory}, this.CreateEnterpriseStorageVirtualDirectoryOperationCompleted, userState);
}
private void OnCreateEnterpriseStorageVirtualDirectoryOperationCompleted(object arg)
{
if ((this.CreateEnterpriseStorageVirtualDirectoryCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CreateEnterpriseStorageVirtualDirectoryCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateVirtualDirectory", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
@ -6162,6 +6218,10 @@ namespace WebsitePanel.Providers.Web
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CreateVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
public delegate void CreateEnterpriseStorageVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void UpdateVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);

View file

@ -366,6 +366,22 @@ namespace WebsitePanel.Server
}
}
[WebMethod, SoapHeader("settings")]
public void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory)
{
try
{
Log.WriteStart("'{0}' CreateEnterpriseStorageVirtualDirectory", ProviderSettings.ProviderName);
WebProvider.CreateEnterpriseStorageVirtualDirectory(siteId, directory);
Log.WriteEnd("'{0}' CreateEnterpriseStorageVirtualDirectory", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' CreateEnterpriseStorageVirtualDirectory", ProviderSettings.ProviderName), ex);
throw;
}
}
[WebMethod, SoapHeader("settings")]
public void UpdateVirtualDirectory(string siteId, WebVirtualDirectory directory)
{