From 2f5e8cdc7d50ef2c7ee04e56a7db468df7bef317 Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Fri, 28 Feb 2014 16:24:30 +0300 Subject: [PATCH] fixed webdav root path --- .../EnterpriseStorageController.cs | 41 +++++++++++-------- .../EnterpriseStorage/IEnterpriseStorage.cs | 2 +- .../Windows2012.cs | 6 ++- .../EnterpriseStorageProxy.cs | 19 +++++---- .../EnterpriseStorage.asmx.cs | 4 +- 5 files changed, 43 insertions(+), 29 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs index 9afa57be..76f7541d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs @@ -448,12 +448,19 @@ namespace WebsitePanel.EnterpriseServer StringDictionary esSesstings = ServerController.GetServiceSettings(esId); - es.CreateFolder(org.OrganizationId, folderName); + var setting = ObjectUtils.CreateListFromDataReader( + DataProvider.GetEnterpriseFolders(itemId)).LastOrDefault(x => !x.IsEmpty()) + ?? new WebDavSetting(esSesstings["LocationDrive"], esSesstings["UsersHome"], esSesstings["UsersDomain"]); - SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType); - DataProvider.AddEntepriseFolder(itemId, folderName, quota, esSesstings["LocationDrive"], - esSesstings["UsersHome"], esSesstings["UsersDomain"]); + es.CreateFolder(org.OrganizationId, folderName, setting); + + DataProvider.AddEntepriseFolder(itemId, folderName, quota, + setting.LocationDrive, setting.HomeFolder, setting.Domain); + + SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType, setting); + + DataProvider.UpdateEnterpriseFolder(itemId, folderName, folderName, quota); if (addDefaultGroup) { @@ -522,14 +529,13 @@ namespace WebsitePanel.EnterpriseServer return; } - EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); - - es.CreateFolder(org.OrganizationId, folderName); - // check if it's not root folder if (!string.IsNullOrEmpty(folderName)) { - SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType); + var webDavSetting = ObjectUtils.FillObjectFromDataReader( + DataProvider.GetEnterpriseFolder(itemId, folderName)); + + SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType, webDavSetting); DataProvider.UpdateEnterpriseFolder(itemId, folderName, folderName, quota); } @@ -963,7 +969,7 @@ namespace WebsitePanel.EnterpriseServer } - private static void SetFolderQuota(int packageId, string orgId, string folderName, int quotaSize, QuotaType quotaType) + private static void SetFolderQuota(int packageId, string orgId, string folderName, int quotaSize, QuotaType quotaType, WebDavSetting setting) { if (quotaSize == 0) return; @@ -980,13 +986,16 @@ namespace WebsitePanel.EnterpriseServer if (esServiceId != 0) { - StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId); + var curSetting = setting; - string usersHome = esSesstings["UsersHome"]; - string usersDomain = esSesstings["UsersDomain"]; - string locationDrive = esSesstings["LocationDrive"]; + if (curSetting == null || curSetting.IsEmpty()) + { + StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId); - var orgFolder = Path.Combine(usersHome, orgId, folderName); + curSetting = new WebDavSetting(esSesstings["LocationDrive"], esSesstings["UsersHome"], esSesstings["UsersDomain"]); + } + + var orgFolder = Path.Combine(curSetting.HomeFolder, orgId, folderName); var os = GetOS(packageId); @@ -1011,7 +1020,7 @@ namespace WebsitePanel.EnterpriseServer #endregion - os.SetQuotaLimitOnFolder(orgFolder, locationDrive, quotaType, quotaSize.ToString() + unit, 0, String.Empty, String.Empty); + os.SetQuotaLimitOnFolder(orgFolder, curSetting.LocationDrive, quotaType, quotaSize.ToString() + unit, 0, String.Empty, String.Empty); } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs index 155120b4..df3c489f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs @@ -40,7 +40,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage { SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings); SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting); - void CreateFolder(string organizationId, string folder); + void CreateFolder(string organizationId, string folder, WebDavSetting setting); SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting); void DeleteFolder(string organizationId, string folder, WebDavSetting setting); bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs index 6914ed20..22bbd04e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs @@ -152,9 +152,11 @@ namespace WebsitePanel.Providers.EnterpriseStorage return folder; } - public void CreateFolder(string organizationId, string folder) + public void CreateFolder(string organizationId, string folder, WebDavSetting setting) { - FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder)); + var webDavSetting = GetWebDavSetting(setting); + + FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder)); } public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting) diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs index 063f7e10..2fe1d914 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs @@ -221,19 +221,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateFolder", 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 CreateFolder(string organizationId, string folder) + public void CreateFolder(string organizationId, string folder, WebDavSetting setting) { this.Invoke("CreateFolder", new object[] { organizationId, - folder}); + folder, + setting}); } /// - public System.IAsyncResult BeginCreateFolder(string organizationId, string folder, System.AsyncCallback callback, object asyncState) + public System.IAsyncResult BeginCreateFolder(string organizationId, string folder, WebDavSetting setting, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateFolder", new object[] { organizationId, - folder}, callback, asyncState); + folder, + setting}, callback, asyncState); } /// @@ -243,13 +245,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage } /// - public void CreateFolderAsync(string organizationId, string folder) + public void CreateFolderAsync(string organizationId, string folder, WebDavSetting setting) { - this.CreateFolderAsync(organizationId, folder, null); + this.CreateFolderAsync(organizationId, folder, setting, null); } /// - public void CreateFolderAsync(string organizationId, string folder, object userState) + public void CreateFolderAsync(string organizationId, string folder, WebDavSetting setting, object userState) { if ((this.CreateFolderOperationCompleted == null)) { @@ -257,7 +259,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage } this.InvokeAsync("CreateFolder", new object[] { organizationId, - folder}, this.CreateFolderOperationCompleted, userState); + folder, + setting}, this.CreateFolderOperationCompleted, userState); } private void OnCreateFolderOperationCompleted(object arg) diff --git a/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs index 5acdecd7..54eeea5e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs @@ -93,12 +93,12 @@ namespace WebsitePanel.Server } [WebMethod, SoapHeader("settings")] - public void CreateFolder(string organizationId, string folder) + public void CreateFolder(string organizationId, string folder, WebDavSetting setting) { try { Log.WriteStart("'{0}' CreateFolder", ProviderSettings.ProviderName); - EnterpriseStorageProvider.CreateFolder(organizationId, folder); + EnterpriseStorageProvider.CreateFolder(organizationId, folder, setting); Log.WriteEnd("'{0}' CreateFolder", ProviderSettings.ProviderName); } catch (Exception ex)