partial commit enterprise storage

This commit is contained in:
robvde 2013-08-20 09:22:41 +04:00
parent 8b9677c92c
commit c912242fa2
4 changed files with 138 additions and 2 deletions

View file

@ -28,6 +28,7 @@
using System;
using System.Collections;
using WebsitePanel.Providers.OS;
namespace WebsitePanel.Providers.EnterpriseStorage
{
@ -36,6 +37,10 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// </summary>
public interface IEnterpriseStorage
{
SystemFile[] GetFolders(string organizationId);
SystemFile GetFolder(string organizationId, string folder);
void CreateFolder(string organizationId, string folder);
void DeleteFolder(string organizationId, string folder);
void SetFolderQuota(string organizationId, string folder, long quota);
}
}

View file

@ -41,6 +41,7 @@ namespace WebsitePanel.Providers.OS
private DateTime changed;
private bool isDirectory;
private long size;
private long quota;
private bool isEmpty;
public SystemFile()

View file

@ -1,5 +1,6 @@
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;
@ -21,6 +22,52 @@ namespace WebsitePanel.Providers.EnterpriseStorage.Windows2012
#endregion
#region Folders
public SystemFile[] GetFolders(string organizationId)
{
ArrayList items = new ArrayList();
DirectoryInfo root = new DirectoryInfo(string.Format("{0}\\{1}", UsersHome, organizationId));
// get directories
DirectoryInfo[] dirs = root.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
string fullName = System.IO.Path.Combine(string.Format("{0}\\{1}", UsersHome, organizationId), dir.Name);
SystemFile fi = new SystemFile(dir.Name, fullName, true, 0, dir.CreationTime, dir.LastWriteTime);
items.Add(fi);
// check if the directory is empty
fi.IsEmpty = (Directory.GetFileSystemEntries(fullName).Length == 0);
}
return (SystemFile[])items.ToArray(typeof(SystemFile));
}
public SystemFile GetFolder(string organizationId, string folder)
{
DirectoryInfo root = new DirectoryInfo(string.Format("{0}\\{1}\\{2}", UsersHome, organizationId, folder));
string fullName = string.Format("{0}\\{1}\\{2}", UsersHome, organizationId, folder);
return new SystemFile(root.Name, fullName, true, 0, root.CreationTime, root.LastWriteTime);
}
public void CreateFolder(string organizationId, string folder)
{
FileUtils.CreateDirectory(string.Format("{0}\\{1}\\{2}", UsersHome, organizationId, folder));
}
public void DeleteFolder(string organizationId, string folder)
{
FileUtils.DeleteDirectoryRecursive(string.Format("{0}\\{1}\\{2}", UsersHome, organizationId, folder));
}
public void SetFolderQuota(string organizationId, string folder, long quota)
{
}
#endregion
#region HostingServiceProvider methods
public override string[] Install()
{

View file

@ -37,6 +37,7 @@ using Microsoft.Web.Services3;
using WebsitePanel.Providers;
using WebsitePanel.Providers.EnterpriseStorage;
using WebsitePanel.Providers.OS;
using WebsitePanel.Server.Utils;
namespace WebsitePanel.Server
@ -50,12 +51,94 @@ namespace WebsitePanel.Server
[ToolboxItem(false)]
public class EnterpriseStorage : HostingServiceProviderWebService, IEnterpriseStorage
{
private IEnterpriseStorage RDSProvider
private IEnterpriseStorage EnterpriseStorageProvider
{
get { return (IEnterpriseStorage)Provider; }
}
[WebMethod, SoapHeader("settings")]
public SystemFile[] GetFolders(string organizationId)
{
try
{
Log.WriteStart("'{0}' GetFolders", ProviderSettings.ProviderName);
SystemFile[] result = EnterpriseStorageProvider.GetFolders(organizationId);
Log.WriteEnd("'{0}' GetFolders", ProviderSettings.ProviderName);
return result;
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' GetFolders", ProviderSettings.ProviderName), ex);
throw;
}
}
[WebMethod, SoapHeader("settings")]
public SystemFile GetFolder(string organizationId, string folder)
{
try
{
Log.WriteStart("'{0}' GetFolder", ProviderSettings.ProviderName);
SystemFile result = EnterpriseStorageProvider.GetFolder(organizationId, folder);
Log.WriteEnd("'{0}' GetFolder", ProviderSettings.ProviderName);
return result;
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' GetFolder", ProviderSettings.ProviderName), ex);
throw;
}
}
[WebMethod, SoapHeader("settings")]
public void CreateFolder(string organizationId, string folder)
{
try
{
Log.WriteStart("'{0}' CreateFolder", ProviderSettings.ProviderName);
EnterpriseStorageProvider.CreateFolder(organizationId, folder);
Log.WriteEnd("'{0}' CreateFolder", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' CreateFolder", ProviderSettings.ProviderName), ex);
throw;
}
}
[WebMethod, SoapHeader("settings")]
public void DeleteFolder(string organizationId, string folder)
{
try
{
Log.WriteStart("'{0}' DeleteFolder", ProviderSettings.ProviderName);
EnterpriseStorageProvider.DeleteFolder(organizationId, folder);
Log.WriteEnd("'{0}' DeleteFolder", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' DeleteFolder", ProviderSettings.ProviderName), ex);
throw;
}
}
[WebMethod, SoapHeader("settings")]
public void SetFolderQuota(string organizationId, string folder, long quota)
{
try
{
Log.WriteStart("'{0}' SetFolderQuota", ProviderSettings.ProviderName);
EnterpriseStorageProvider.SetFolderQuota(organizationId, folder,quota);
Log.WriteEnd("'{0}' SetFolderQuota", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' SetFolderQuota", ProviderSettings.ProviderName), ex);
throw;
}
}
}
}