diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs
index d4a8196b..214dda5a 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs
@@ -85,6 +85,12 @@ namespace WebsitePanel.EnterpriseServer
private System.Threading.SendOrPostCallback RenameEnterpriseFolderOperationCompleted;
+ private System.Threading.SendOrPostCallback CreateEnterpriseStorageOperationCompleted;
+
+ private System.Threading.SendOrPostCallback CheckEnterpriseStorageInitializationOperationCompleted;
+
+ private System.Threading.SendOrPostCallback CheckUsersDomainExistsOperationCompleted;
+
///
public esEnterpriseStorage()
{
@@ -121,6 +127,15 @@ namespace WebsitePanel.EnterpriseServer
///
public event RenameEnterpriseFolderCompletedEventHandler RenameEnterpriseFolderCompleted;
+ ///
+ public event CreateEnterpriseStorageCompletedEventHandler CreateEnterpriseStorageCompleted;
+
+ ///
+ public event CheckEnterpriseStorageInitializationCompletedEventHandler CheckEnterpriseStorageInitializationCompleted;
+
+ ///
+ public event CheckUsersDomainExistsCompletedEventHandler CheckUsersDomainExistsCompleted;
+
///
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckFileServicesInstallation", 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 bool CheckFileServicesInstallation(int serviceId)
@@ -656,6 +671,160 @@ namespace WebsitePanel.EnterpriseServer
}
}
+ ///
+ [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CreateEnterpriseStorage", 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 ResultObject CreateEnterpriseStorage(int packageId, int itemId)
+ {
+ object[] results = this.Invoke("CreateEnterpriseStorage", new object[] {
+ packageId,
+ itemId});
+ return ((ResultObject)(results[0]));
+ }
+
+ ///
+ public System.IAsyncResult BeginCreateEnterpriseStorage(int packageId, int itemId, System.AsyncCallback callback, object asyncState)
+ {
+ return this.BeginInvoke("CreateEnterpriseStorage", new object[] {
+ packageId,
+ itemId}, callback, asyncState);
+ }
+
+ ///
+ public ResultObject EndCreateEnterpriseStorage(System.IAsyncResult asyncResult)
+ {
+ object[] results = this.EndInvoke(asyncResult);
+ return ((ResultObject)(results[0]));
+ }
+
+ ///
+ public void CreateEnterpriseStorageAsync(int packageId, int itemId)
+ {
+ this.CreateEnterpriseStorageAsync(packageId, itemId, null);
+ }
+
+ ///
+ public void CreateEnterpriseStorageAsync(int packageId, int itemId, object userState)
+ {
+ if ((this.CreateEnterpriseStorageOperationCompleted == null))
+ {
+ this.CreateEnterpriseStorageOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateEnterpriseStorageOperationCompleted);
+ }
+ this.InvokeAsync("CreateEnterpriseStorage", new object[] {
+ packageId,
+ itemId}, this.CreateEnterpriseStorageOperationCompleted, userState);
+ }
+
+ private void OnCreateEnterpriseStorageOperationCompleted(object arg)
+ {
+ if ((this.CreateEnterpriseStorageCompleted != null))
+ {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.CreateEnterpriseStorageCompleted(this, new CreateEnterpriseStorageCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ ///
+ [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckEnterpriseStorageInitialization" +
+ "", 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 bool CheckEnterpriseStorageInitialization(int packageId, int itemId)
+ {
+ object[] results = this.Invoke("CheckEnterpriseStorageInitialization", new object[] {
+ packageId,
+ itemId});
+ return ((bool)(results[0]));
+ }
+
+ ///
+ public System.IAsyncResult BeginCheckEnterpriseStorageInitialization(int packageId, int itemId, System.AsyncCallback callback, object asyncState)
+ {
+ return this.BeginInvoke("CheckEnterpriseStorageInitialization", new object[] {
+ packageId,
+ itemId}, callback, asyncState);
+ }
+
+ ///
+ public bool EndCheckEnterpriseStorageInitialization(System.IAsyncResult asyncResult)
+ {
+ object[] results = this.EndInvoke(asyncResult);
+ return ((bool)(results[0]));
+ }
+
+ ///
+ public void CheckEnterpriseStorageInitializationAsync(int packageId, int itemId)
+ {
+ this.CheckEnterpriseStorageInitializationAsync(packageId, itemId, null);
+ }
+
+ ///
+ public void CheckEnterpriseStorageInitializationAsync(int packageId, int itemId, object userState)
+ {
+ if ((this.CheckEnterpriseStorageInitializationOperationCompleted == null))
+ {
+ this.CheckEnterpriseStorageInitializationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckEnterpriseStorageInitializationOperationCompleted);
+ }
+ this.InvokeAsync("CheckEnterpriseStorageInitialization", new object[] {
+ packageId,
+ itemId}, this.CheckEnterpriseStorageInitializationOperationCompleted, userState);
+ }
+
+ private void OnCheckEnterpriseStorageInitializationOperationCompleted(object arg)
+ {
+ if ((this.CheckEnterpriseStorageInitializationCompleted != null))
+ {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.CheckEnterpriseStorageInitializationCompleted(this, new CheckEnterpriseStorageInitializationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
+ ///
+ [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckUsersDomainExists", 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 bool CheckUsersDomainExists(int itemId)
+ {
+ object[] results = this.Invoke("CheckUsersDomainExists", new object[] {
+ itemId});
+ return ((bool)(results[0]));
+ }
+
+ ///
+ public System.IAsyncResult BeginCheckUsersDomainExists(int itemId, System.AsyncCallback callback, object asyncState)
+ {
+ return this.BeginInvoke("CheckUsersDomainExists", new object[] {
+ itemId}, callback, asyncState);
+ }
+
+ ///
+ public bool EndCheckUsersDomainExists(System.IAsyncResult asyncResult)
+ {
+ object[] results = this.EndInvoke(asyncResult);
+ return ((bool)(results[0]));
+ }
+
+ ///
+ public void CheckUsersDomainExistsAsync(int itemId)
+ {
+ this.CheckUsersDomainExistsAsync(itemId, null);
+ }
+
+ ///
+ public void CheckUsersDomainExistsAsync(int itemId, object userState)
+ {
+ if ((this.CheckUsersDomainExistsOperationCompleted == null))
+ {
+ this.CheckUsersDomainExistsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckUsersDomainExistsOperationCompleted);
+ }
+ this.InvokeAsync("CheckUsersDomainExists", new object[] {
+ itemId}, this.CheckUsersDomainExistsOperationCompleted, userState);
+ }
+
+ private void OnCheckUsersDomainExistsOperationCompleted(object arg)
+ {
+ if ((this.CheckUsersDomainExistsCompleted != null))
+ {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.CheckUsersDomainExistsCompleted(this, new CheckUsersDomainExistsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
///
public new void CancelAsync(object userState)
{
@@ -962,4 +1131,94 @@ namespace WebsitePanel.EnterpriseServer
}
}
}
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
+ public delegate void CreateEnterpriseStorageCompletedEventHandler(object sender, CreateEnterpriseStorageCompletedEventArgs e);
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class CreateEnterpriseStorageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
+ {
+
+ private object[] results;
+
+ internal CreateEnterpriseStorageCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState)
+ {
+ this.results = results;
+ }
+
+ ///
+ public ResultObject Result
+ {
+ get
+ {
+ this.RaiseExceptionIfNecessary();
+ return ((ResultObject)(this.results[0]));
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
+ public delegate void CheckEnterpriseStorageInitializationCompletedEventHandler(object sender, CheckEnterpriseStorageInitializationCompletedEventArgs e);
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class CheckEnterpriseStorageInitializationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
+ {
+
+ private object[] results;
+
+ internal CheckEnterpriseStorageInitializationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState)
+ {
+ this.results = results;
+ }
+
+ ///
+ public bool Result
+ {
+ get
+ {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
+ public delegate void CheckUsersDomainExistsCompletedEventHandler(object sender, CheckUsersDomainExistsCompletedEventArgs e);
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class CheckUsersDomainExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
+ {
+
+ private object[] results;
+
+ internal CheckUsersDomainExistsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState)
+ {
+ this.results = results;
+ }
+
+ ///
+ public bool Result
+ {
+ get
+ {
+ this.RaiseExceptionIfNecessary();
+ return ((bool)(this.results[0]));
+ }
+ }
+ }
}
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
index 388e841b..097c6223 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
@@ -53,9 +53,24 @@ namespace WebsitePanel.EnterpriseServer
{
#region Public Methods
+ public static bool CheckEnterpriseStorageInitialization(int packageId, int itemId)
+ {
+ return CheckEnterpriseStorageInitializationInternal(packageId, itemId);
+ }
+
+ public static ResultObject CreateEnterpriseStorage(int packageId, int itemId)
+ {
+ return CreateEnterpriseStorageInternal(packageId, itemId);
+ }
+
+ public static ResultObject DeleteEnterpriseStorage(int packageId, int itemId)
+ {
+ return DeleteEnterpriseStorageInternal(packageId,itemId);
+ }
+
public static SystemFile[] GetFolders(int itemId)
{
- return GetFoldersInternal(itemId);
+ return GetFoldersInternal(itemId);
}
public static SystemFile GetFolder(int itemId, string folderName)
@@ -63,6 +78,11 @@ namespace WebsitePanel.EnterpriseServer
return GetFolderInternal(itemId, folderName);
}
+ public static SystemFile GetFolder(int itemId)
+ {
+ return GetFolder(itemId, string.Empty);
+ }
+
public static ResultObject CreateFolder(int itemId)
{
return CreateFolder(itemId, string.Empty);
@@ -114,8 +134,169 @@ namespace WebsitePanel.EnterpriseServer
return RenameFolderInternal(itemId, oldFolder, newFolder);
}
+ public static bool CheckUsersDomainExists(int itemId)
+ {
+ return CheckUsersDomainExistsInternal(itemId);
+ }
+
#endregion
+ protected static bool CheckUsersDomainExistsInternal(int itemId)
+ {
+ Organization org = OrganizationController.GetOrganization(itemId);
+
+ return CheckUsersDomainExistsInternal(itemId, org.PackageId);
+ }
+
+ protected static bool CheckUsersDomainExistsInternal(int itemId, int packageId)
+ {
+ int webServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Web);
+ var esServiceId = GetEnterpriseStorageServiceID(packageId);
+
+ StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
+
+ string usersDomain = esSesstings["UsersDomain"];
+
+ WebServer web = new WebServer();
+ ServiceProviderProxy.Init(web, webServiceId);
+
+ if (web.SiteExists(usersDomain))
+ return true;
+
+ return false;
+ }
+
+ protected static bool CheckEnterpriseStorageInitializationInternal(int packageId, int itemId)
+ {
+ bool checkResult = true;
+
+ var esServiceId = GetEnterpriseStorageServiceID(packageId);
+ int webServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Web);
+
+ Organization org = OrganizationController.GetOrganization(itemId);
+
+ if (org == null)
+ {
+ return false;
+ }
+
+ //root folder not created
+ if (GetFolder(itemId) == null)
+ {
+ checkResult = false;
+ }
+
+ //checking if virtual directory is created
+ StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
+
+ string usersDomain = esSesstings["UsersDomain"];
+
+ WebServer web = new WebServer();
+ ServiceProviderProxy.Init(web, webServiceId);
+
+ if (!web.VirtualDirectoryExists(usersDomain, org.OrganizationId))
+ {
+ checkResult = false;
+ }
+
+
+ return checkResult;
+ }
+
+ protected static ResultObject CreateEnterpriseStorageInternal(int packageId, int itemId)
+ {
+ ResultObject result = TaskManager.StartResultTask("ORGANIZATION", "CREATE_ORGANIZATION_ENTERPRISE_STORAGE", itemId, packageId);
+
+ try
+ {
+ int esServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.EnterpriseStorage);
+
+ if (esServiceId != 0)
+ {
+ StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
+
+ Organization org = OrganizationController.GetOrganization(itemId);
+
+ string usersHome = esSesstings["UsersHome"];
+ string usersDomain = esSesstings["UsersDomain"];
+ string locationDrive = esSesstings["LocationDrive"];
+
+ string homePath = string.Format("{0}:\\{1}", locationDrive, usersHome);
+
+ EnterpriseStorageController.CreateFolder(itemId);
+
+ WebServerController.AddWebDavDirectory(packageId, usersDomain, org.OrganizationId, homePath);
+
+ int osId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
+ bool enableHardQuota = (esSesstings["enablehardquota"] != null)
+ ? bool.Parse(esSesstings["enablehardquota"])
+ : false;
+
+ if (enableHardQuota && osId != 0 && OperatingSystemController.CheckFileServicesInstallation(osId))
+ {
+ FilesController.SetFolderQuota(packageId, Path.Combine(usersHome, org.OrganizationId),
+ locationDrive, Quotas.ENTERPRISESTORAGE_DISKSTORAGESPACE);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ result.AddError("ENTERPRISE_STORAGE_CREATE_FOLDER", ex);
+ }
+ finally
+ {
+ if (!result.IsSuccess)
+ {
+ TaskManager.CompleteResultTask(result);
+ }
+ else
+ {
+ TaskManager.CompleteResultTask();
+ }
+ }
+
+ return result;
+ }
+
+ protected static ResultObject DeleteEnterpriseStorageInternal(int packageId, int itemId)
+ {
+ ResultObject result = TaskManager.StartResultTask("ORGANIZATION", "CLEANUP_ORGANIZATION_ENTERPRISE_STORAGE", itemId, packageId);
+
+ try
+ {
+ int esId = PackageController.GetPackageServiceId(packageId, ResourceGroups.EnterpriseStorage);
+
+ Organization org = OrganizationController.GetOrganization(itemId);
+
+ if (esId != 0)
+ {
+ StringDictionary esSesstings = ServerController.GetServiceSettings(esId);
+
+ string usersDomain = esSesstings["UsersDomain"];
+
+ WebServerController.DeleteWebDavDirectory(packageId, usersDomain, org.OrganizationId);
+ EnterpriseStorageController.DeleteFolder(itemId);
+
+ }
+ }
+ catch (Exception ex)
+ {
+ result.AddError("ENTERPRISE_STORAGE_CLEANUP", ex);
+ }
+ finally
+ {
+ if (!result.IsSuccess)
+ {
+ TaskManager.CompleteResultTask(result);
+ }
+ else
+ {
+ TaskManager.CompleteResultTask();
+ }
+ }
+
+ return result;
+ }
private static EnterpriseStorage GetEnterpriseStorage(int serviceId)
{
@@ -166,7 +347,6 @@ namespace WebsitePanel.EnterpriseServer
}
}
-
protected static SystemFile RenameFolderInternal(int itemId, string oldFolder, string newFolder)
{
try
@@ -311,21 +491,24 @@ namespace WebsitePanel.EnterpriseServer
return null;
}
- EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
- List folders = es.GetFolders(org.OrganizationId).Where(x => x.Name.Contains(filterValue)).ToList();
-
- switch (sortColumn)
+ if (CheckUsersDomainExistsInternal(itemId, org.PackageId))
{
- case "Size":
- folders = folders.OrderBy(x => x.Size).ToList();
- break;
- default:
- folders = folders.OrderBy(x => x.Name).ToList();
- break;
- }
+ EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
+ List folders = es.GetFolders(org.OrganizationId).Where(x => x.Name.Contains(filterValue)).ToList();
- result.RecordsCount = folders.Count;
- result.PageItems = folders.Skip(startRow).Take(maximumRows).ToArray();
+ switch (sortColumn)
+ {
+ case "Size":
+ folders = folders.OrderBy(x => x.Size).ToList();
+ break;
+ default:
+ folders = folders.OrderBy(x => x.Name).ToList();
+ break;
+ }
+
+ result.RecordsCount = folders.Count;
+ result.PageItems = folders.Skip(startRow).Take(maximumRows).ToArray();
+ }
}
catch { /*skip exception*/}
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
index a2dc1d4a..0099c991 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
@@ -418,36 +418,6 @@ namespace WebsitePanel.EnterpriseServer
};
PackageController.AddPackageItem(orgDomain);
-
- //Create Enterprise storage
-
- int esServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.EnterpriseStorage);
-
- if (esServiceId != 0)
- {
- StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
-
- string usersHome = esSesstings["UsersHome"];
- string usersDomain = esSesstings["UsersDomain"];
- string locationDrive = esSesstings["LocationDrive"];
-
- string homePath = string.Format("{0}:\\{1}",locationDrive, usersHome);
-
- EnterpriseStorageController.CreateFolder(itemId);
-
- WebServerController.AddWebDavDirectory(packageId, usersDomain, organizationId, homePath);
-
- int osId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
- bool enableHardQuota = (esSesstings["enablehardquota"] != null)
- ? bool.Parse(esSesstings["enablehardquota"])
- : false;
-
- if (enableHardQuota && osId != 0 && OperatingSystemController.CheckFileServicesInstallation(osId))
- {
- FilesController.SetFolderQuota(packageId, Path.Combine(usersHome, organizationId),
- locationDrive, Quotas.ENTERPRISESTORAGE_DISKSTORAGESPACE);
- }
- }
}
catch (Exception ex)
{
@@ -746,24 +716,10 @@ namespace WebsitePanel.EnterpriseServer
}
//Cleanup Enterprise storage
- int esId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.EnterpriseStorage);
- if (esId != 0)
+ if (EnterpriseStorageController.DeleteEnterpriseStorage(org.PackageId, itemId).IsSuccess == false)
{
- StringDictionary esSesstings = ServerController.GetServiceSettings(esId);
-
- string usersDomain = esSesstings["UsersDomain"];
-
- try
- {
- WebServerController.DeleteWebDavDirectory(org.PackageId, usersDomain, org.OrganizationId);
- EnterpriseStorageController.DeleteFolder(itemId);
- }
- catch (Exception ex)
- {
- successful = false;
- TaskManager.WriteError(ex);
- }
+ successful = false;
}
//Cleanup Exchange
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/WebServers/WebServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/WebServers/WebServerController.cs
index cae1da64..75f415ff 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/WebServers/WebServerController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/WebServers/WebServerController.cs
@@ -4632,8 +4632,6 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and
return false;
}
- siteId = RemoveProtocolFromUrl(siteId);
-
var webServer = GetWebServer(GetWebServerServiceID(org.PackageId));
return webServer.GetDirectoryBrowseEnabled(siteId);
@@ -4648,23 +4646,11 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and
return;
}
- siteId = RemoveProtocolFromUrl(siteId);
-
var webServer = GetWebServer(GetWebServerServiceID(org.PackageId));
webServer.SetDirectoryBrowseEnabled(siteId, enabled);
}
- private static string RemoveProtocolFromUrl(string input)
- {
- if (input.Contains("//"))
- {
- return System.Text.RegularExpressions.Regex.Split(input, "//")[1];
- }
-
- return input;
- }
-
#endregion
private static int GetWebServerServiceID(int packageId)
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs
index 638886e6..a97a8cd7 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs
@@ -116,5 +116,23 @@ namespace WebsitePanel.EnterpriseServer
{
return EnterpriseStorageController.RenameFolder(itemId, oldName, newName);
}
+
+ [WebMethod]
+ public ResultObject CreateEnterpriseStorage(int packageId, int itemId)
+ {
+ return EnterpriseStorageController.CreateEnterpriseStorage(packageId, itemId);
+ }
+
+ [WebMethod]
+ public bool CheckEnterpriseStorageInitialization(int packageId, int itemId)
+ {
+ return EnterpriseStorageController.CheckEnterpriseStorageInitialization(packageId, itemId);
+ }
+
+ [WebMethod]
+ public bool CheckUsersDomainExists(int itemId)
+ {
+ return EnterpriseStorageController.CheckUsersDomainExists(itemId);
+ }
}
}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
index 948d93fa..c407d08f 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
@@ -100,7 +100,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
public SystemFile GetFolder(string organizationId, string folderName)
{
string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folderName);
- SystemFile folder = new SystemFile();
+ SystemFile folder = null;
if (Directory.Exists(fullName))
{
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs
index 0a203841..a46b5731 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs
@@ -3775,17 +3775,33 @@ namespace WebsitePanel.Providers.Web
public override bool GetDirectoryBrowseEnabled(string siteId)
{
- using (ServerManager srvman = webObjectsSvc.GetServerManager())
- {
- var enabled = dirBrowseSvc.GetDirectoryBrowseSettings(srvman, siteId)[DirectoryBrowseGlobals.Enabled];
+ var uri = new Uri(siteId);
+ var host = uri.Host;
+ var site = uri.Host + uri.PathAndQuery;
- return enabled != null ? (bool)enabled : false;
+ if (SiteExists(host))
+ {
+ using (ServerManager srvman = webObjectsSvc.GetServerManager())
+ {
+ var enabled = dirBrowseSvc.GetDirectoryBrowseSettings(srvman, site)[DirectoryBrowseGlobals.Enabled];
+
+ return enabled != null ? (bool)enabled : false;
+ }
}
+
+ return false;
}
public override void SetDirectoryBrowseEnabled(string siteId, bool enabled)
{
- dirBrowseSvc.SetDirectoryBrowseEnabled(siteId, enabled);
+ var uri = new Uri(siteId);
+ var host = uri.Host;
+ var site = uri.Host + uri.PathAndQuery;
+
+ if (SiteExists(host))
+ {
+ dirBrowseSvc.SetDirectoryBrowseEnabled(site, enabled);
+ }
}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs
index 36610f03..1ec41b3d 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs
@@ -100,26 +100,27 @@ namespace WebsitePanel.Providers.Web
public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder)
{
- using (ServerManager serverManager = new ServerManager())
+ var rules = new List();
+ try
{
- Configuration config = serverManager.GetApplicationHostConfiguration();
-
- ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder));
-
- ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
-
- var rules = new List();
- try
+ using (ServerManager serverManager = new ServerManager())
{
+ Configuration config = serverManager.GetApplicationHostConfiguration();
+
+ ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder));
+
+ ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
+
+
foreach (var rule in authoringRulesCollection)
{
rules.Add(rule.ToWebDavFolderRule());
}
}
- catch { }
-
- return rules.ToArray();
}
+ catch { }
+
+ return rules.ToArray();
}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
index d6bb4628..00edd2fb 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
@@ -5358,5 +5358,7 @@
Remote Desktop Services
+
+ Website is not created
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.cs
index bfe407d3..ecf80a9b 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx.cs
@@ -35,6 +35,18 @@ namespace WebsitePanel.Portal.ExchangeServer
{
public partial class EnterpriseStorageCreateFolder : WebsitePanelModuleBase
{
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!IsPostBack)
+ {
+ if (!ES.Services.EnterpriseStorage.CheckUsersDomainExists(PanelRequest.ItemID))
+ {
+ Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders",
+ "ItemID=" + PanelRequest.ItemID));
+ }
+ }
+ }
+
protected void btnCreate_Click(object sender, EventArgs e)
{
@@ -42,6 +54,21 @@ namespace WebsitePanel.Portal.ExchangeServer
return;
try
{
+ foreach (var invalidChar in System.IO.Path.GetInvalidFileNameChars())
+ {
+ if (txtFolderName.Text.Contains(invalidChar.ToString()))
+ {
+ messageBox.ShowErrorMessage("FILES_CREATE_FILE");
+
+ return;
+ }
+ }
+
+ if (!ES.Services.EnterpriseStorage.CheckEnterpriseStorageInitialization(PanelSecurity.PackageId, PanelRequest.ItemID))
+ {
+ ES.Services.EnterpriseStorage.CreateEnterpriseStorage(PanelSecurity.PackageId, PanelRequest.ItemID);
+ }
+
ResultObject result = ES.Services.EnterpriseStorage.CreateEnterpriseFolder(PanelRequest.ItemID, txtFolderName.Text);
if (!result.IsSuccess && result.ErrorCodes.Count > 0)
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx.cs
index 74b6bdfc..a56fba80 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx.cs
@@ -49,6 +49,12 @@ namespace WebsitePanel.Portal.ExchangeServer
{
if (!IsPostBack)
{
+ if (!ES.Services.EnterpriseStorage.CheckUsersDomainExists(PanelRequest.ItemID))
+ {
+ Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders",
+ "ItemID=" + PanelRequest.ItemID));
+ }
+
BindSettings();
}
}
@@ -92,25 +98,44 @@ namespace WebsitePanel.Portal.ExchangeServer
{
bool redirectNeeded = false;
+ string fileName = PanelRequest.FolderID;
+ string fileUrl = lblFolderUrl.Text;
+
litFolderName.Text = txtFolderName.Text;
- // SystemFile folder = ES.Services.EnterpriseStorage.GetEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID);
- SystemFile folder = new SystemFile();
+ SystemFile folder = null;
+ if (!ES.Services.EnterpriseStorage.CheckEnterpriseStorageInitialization(PanelSecurity.PackageId, PanelRequest.ItemID))
+ {
+ ES.Services.EnterpriseStorage.CreateEnterpriseStorage(PanelSecurity.PackageId, PanelRequest.ItemID);
+ }
+
+ //File is renaming
if (PanelRequest.FolderID != txtFolderName.Text)
{
- if (txtFolderName.Text.Contains("\\"))
+ //check if filename is correct
+ foreach (var invalidChar in System.IO.Path.GetInvalidFileNameChars())
{
- throw new Exception("Wrong file name");
+ if (txtFolderName.Text.Contains(invalidChar.ToString()))
+ {
+ messageBox.ShowErrorMessage("FILES_RENAME_FILE");
+
+ return;
+ }
}
folder = ES.Services.EnterpriseStorage.RenameEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID, txtFolderName.Text);
+
+ // file is renamed - new name and url
+ fileName = folder.Name;
+ fileUrl = folder.Url;
+
redirectNeeded = true;
}
- ES.Services.EnterpriseStorage.SetEnterpriseFolderPermissions(PanelRequest.ItemID, redirectNeeded ? folder.Name : PanelRequest.FolderID, permissions.GetPemissions());
+ ES.Services.EnterpriseStorage.SetEnterpriseFolderPermissions(PanelRequest.ItemID, fileName, permissions.GetPemissions());
- ES.Services.WebServers.SetDirectoryBrowseEnabled(PanelRequest.ItemID, redirectNeeded ? folder.Url : lblFolderUrl.Text, chkDirectoryBrowsing.Checked);
+ ES.Services.WebServers.SetDirectoryBrowseEnabled(PanelRequest.ItemID, fileUrl, chkDirectoryBrowsing.Checked);
if (redirectNeeded)
{
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.cs
index 04bee17f..dea4ca60 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx.cs
@@ -41,7 +41,16 @@ namespace WebsitePanel.Portal.ExchangeServer
{
if (!IsPostBack)
{
- BindEnterpriseStorageStats();
+ if (ES.Services.EnterpriseStorage.CheckUsersDomainExists(PanelRequest.ItemID))
+ {
+ BindEnterpriseStorageStats();
+ }
+ else
+ {
+ btnAddFolder.Enabled = false;
+
+ messageBox.ShowWarningMessage("WEB_SITE_IS_NOT_CREATED");
+ }
}
}