fixed webdav root path

This commit is contained in:
vfedosevich 2014-02-28 16:24:30 +03:00
parent eed185b894
commit 2f5e8cdc7d
5 changed files with 43 additions and 29 deletions

View file

@ -448,12 +448,19 @@ namespace WebsitePanel.EnterpriseServer
StringDictionary esSesstings = ServerController.GetServiceSettings(esId); StringDictionary esSesstings = ServerController.GetServiceSettings(esId);
es.CreateFolder(org.OrganizationId, folderName); var setting = ObjectUtils.CreateListFromDataReader<WebDavSetting>(
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"], es.CreateFolder(org.OrganizationId, folderName, setting);
esSesstings["UsersHome"], esSesstings["UsersDomain"]);
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) if (addDefaultGroup)
{ {
@ -522,14 +529,13 @@ namespace WebsitePanel.EnterpriseServer
return; return;
} }
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
es.CreateFolder(org.OrganizationId, folderName);
// check if it's not root folder // check if it's not root folder
if (!string.IsNullOrEmpty(folderName)) if (!string.IsNullOrEmpty(folderName))
{ {
SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType); var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folderName));
SetFolderQuota(org.PackageId, org.OrganizationId, folderName, quota, quotaType, webDavSetting);
DataProvider.UpdateEnterpriseFolder(itemId, folderName, folderName, quota); 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) if (quotaSize == 0)
return; return;
@ -980,13 +986,16 @@ namespace WebsitePanel.EnterpriseServer
if (esServiceId != 0) if (esServiceId != 0)
{ {
StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId); var curSetting = setting;
string usersHome = esSesstings["UsersHome"]; if (curSetting == null || curSetting.IsEmpty())
string usersDomain = esSesstings["UsersDomain"]; {
string locationDrive = esSesstings["LocationDrive"]; 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); var os = GetOS(packageId);
@ -1011,7 +1020,7 @@ namespace WebsitePanel.EnterpriseServer
#endregion #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) catch (Exception ex)
{ {

View file

@ -40,7 +40,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
{ {
SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings); SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings);
SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting); 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); SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting);
void DeleteFolder(string organizationId, string folder, WebDavSetting setting); void DeleteFolder(string organizationId, string folder, WebDavSetting setting);
bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules); bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules);

View file

@ -152,9 +152,11 @@ namespace WebsitePanel.Providers.EnterpriseStorage
return folder; 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) public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)

View file

@ -221,19 +221,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/> /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [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)] [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[] { this.Invoke("CreateFolder", new object[] {
organizationId, organizationId,
folder}); folder,
setting});
} }
/// <remarks/> /// <remarks/>
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[] { return this.BeginInvoke("CreateFolder", new object[] {
organizationId, organizationId,
folder}, callback, asyncState); folder,
setting}, callback, asyncState);
} }
/// <remarks/> /// <remarks/>
@ -243,13 +245,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
/// <remarks/> /// <remarks/>
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);
} }
/// <remarks/> /// <remarks/>
public void CreateFolderAsync(string organizationId, string folder, object userState) public void CreateFolderAsync(string organizationId, string folder, WebDavSetting setting, object userState)
{ {
if ((this.CreateFolderOperationCompleted == null)) if ((this.CreateFolderOperationCompleted == null))
{ {
@ -257,7 +259,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
} }
this.InvokeAsync("CreateFolder", new object[] { this.InvokeAsync("CreateFolder", new object[] {
organizationId, organizationId,
folder}, this.CreateFolderOperationCompleted, userState); folder,
setting}, this.CreateFolderOperationCompleted, userState);
} }
private void OnCreateFolderOperationCompleted(object arg) private void OnCreateFolderOperationCompleted(object arg)

View file

@ -93,12 +93,12 @@ namespace WebsitePanel.Server
} }
[WebMethod, SoapHeader("settings")] [WebMethod, SoapHeader("settings")]
public void CreateFolder(string organizationId, string folder) public void CreateFolder(string organizationId, string folder, WebDavSetting setting)
{ {
try try
{ {
Log.WriteStart("'{0}' CreateFolder", ProviderSettings.ProviderName); Log.WriteStart("'{0}' CreateFolder", ProviderSettings.ProviderName);
EnterpriseStorageProvider.CreateFolder(organizationId, folder); EnterpriseStorageProvider.CreateFolder(organizationId, folder, setting);
Log.WriteEnd("'{0}' CreateFolder", ProviderSettings.ProviderName); Log.WriteEnd("'{0}' CreateFolder", ProviderSettings.ProviderName);
} }
catch (Exception ex) catch (Exception ex)