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);
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"],
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<WebDavSetting>(
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;
@ -979,14 +985,17 @@ namespace WebsitePanel.EnterpriseServer
int esServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.EnterpriseStorage);
if (esServiceId != 0)
{
var curSetting = setting;
if (curSetting == null || curSetting.IsEmpty())
{
StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
string usersHome = esSesstings["UsersHome"];
string usersDomain = esSesstings["UsersDomain"];
string locationDrive = esSesstings["LocationDrive"];
curSetting = new WebDavSetting(esSesstings["LocationDrive"], esSesstings["UsersHome"], esSesstings["UsersDomain"]);
}
var orgFolder = Path.Combine(usersHome, orgId, folderName);
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)
{

View file

@ -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);

View file

@ -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)

View file

@ -221,19 +221,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/>
[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});
}
/// <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[] {
organizationId,
folder}, callback, asyncState);
folder,
setting}, callback, asyncState);
}
/// <remarks/>
@ -243,13 +245,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
/// <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/>
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)

View file

@ -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)