diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
index 7398203b..200a52fb 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
@@ -586,7 +586,7 @@ namespace WebsitePanel.EnterpriseServer
var userGroups = OrganizationController.GetSecurityGroupsByMember(itemId, accountId);
- foreach (var folder in es.GetFolders(org.OrganizationId, webDavSettings))
+ foreach (var folder in es.GetFoldersWithoutFrsm(org.OrganizationId, webDavSettings))
{
var permissions = ConvertToESPermission(itemId,folder.Rules);
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs
index 892864a9..ae907208 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs
@@ -39,6 +39,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
public interface IEnterpriseStorage
{
SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings);
+ SystemFile[] GetFoldersWithoutFrsm(string organizationId, WebDavSetting[] settings);
SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting);
void CreateFolder(string organizationId, string folder, WebDavSetting setting);
SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting);
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
index f0a8caf3..67b2d1ff 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
@@ -122,6 +122,49 @@ namespace WebsitePanel.Providers.EnterpriseStorage
return (SystemFile[]) items.ToArray(typeof (SystemFile));
}
+ public SystemFile[] GetFoldersWithoutFrsm(string organizationId, WebDavSetting[] settings)
+ {
+ ArrayList items = new ArrayList();
+
+ var webDavSettings = GetWebDavSettings(settings);
+
+ foreach (var setting in webDavSettings)
+ {
+ string rootPath = string.Format("{0}:\\{1}\\{2}", setting.LocationDrive, setting.HomeFolder,
+ organizationId);
+
+ if (Directory.Exists(rootPath))
+ {
+ DirectoryInfo root = new DirectoryInfo(rootPath);
+ IWebDav webdav = new Web.WebDav(setting);
+
+ // get directories
+ DirectoryInfo[] dirs = root.GetDirectories();
+
+ foreach (DirectoryInfo dir in dirs)
+ {
+ SystemFile folder = new SystemFile();
+
+ folder.Name = dir.Name;
+ folder.FullName = dir.FullName;
+ folder.IsDirectory = true;
+
+ if (folder.Size == -1)
+ {
+ folder.Size = FileUtils.BytesToMb(FileUtils.CalculateFolderSize(dir.FullName));
+ }
+
+ folder.Url = string.Format("https://{0}/{1}/{2}", setting.Domain, organizationId, dir.Name);
+ folder.Rules = webdav.GetFolderWebDavRules(organizationId, dir.Name);
+
+ items.Add(folder);
+ }
+ }
+ }
+
+ return (SystemFile[])items.ToArray(typeof(SystemFile));
+ }
+
public SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting)
{
var webDavSetting = GetWebDavSetting(setting);
diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs
index f43357e6..2fd82337 100644
--- a/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs
@@ -11,10 +11,6 @@
//
// This source code was auto-generated by wsdl, Version=2.0.50727.3038.
//
-
-using WebsitePanel.Providers.OS;
-using WebsitePanel.Providers.Web;
-
namespace WebsitePanel.Providers.EnterpriseStorage {
using System.Xml.Serialization;
using System.Web.Services;
@@ -22,6 +18,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
using System.Web.Services.Protocols;
using System;
using System.Diagnostics;
+ using WebsitePanel.Providers.OS;
+ using WebsitePanel.Providers.Web;
///
@@ -36,6 +34,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
private System.Threading.SendOrPostCallback GetFoldersOperationCompleted;
+ private System.Threading.SendOrPostCallback GetFoldersWithoutFrsmOperationCompleted;
+
private System.Threading.SendOrPostCallback GetFolderOperationCompleted;
private System.Threading.SendOrPostCallback CreateFolderOperationCompleted;
@@ -60,6 +60,9 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
///
public event GetFoldersCompletedEventHandler GetFoldersCompleted;
+ ///
+ public event GetFoldersWithoutFrsmCompletedEventHandler GetFoldersWithoutFrsmCompleted;
+
///
public event GetFolderCompletedEventHandler GetFolderCompleted;
@@ -129,6 +132,51 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
}
}
+ ///
+ [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
+ [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFoldersWithoutFrsm", 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 SystemFile[] GetFoldersWithoutFrsm(string organizationId, WebDavSetting[] settings) {
+ object[] results = this.Invoke("GetFoldersWithoutFrsm", new object[] {
+ organizationId,
+ settings});
+ return ((SystemFile[])(results[0]));
+ }
+
+ ///
+ public System.IAsyncResult BeginGetFoldersWithoutFrsm(string organizationId, WebDavSetting[] settings, System.AsyncCallback callback, object asyncState) {
+ return this.BeginInvoke("GetFoldersWithoutFrsm", new object[] {
+ organizationId,
+ settings}, callback, asyncState);
+ }
+
+ ///
+ public SystemFile[] EndGetFoldersWithoutFrsm(System.IAsyncResult asyncResult) {
+ object[] results = this.EndInvoke(asyncResult);
+ return ((SystemFile[])(results[0]));
+ }
+
+ ///
+ public void GetFoldersWithoutFrsmAsync(string organizationId, WebDavSetting[] settings) {
+ this.GetFoldersWithoutFrsmAsync(organizationId, settings, null);
+ }
+
+ ///
+ public void GetFoldersWithoutFrsmAsync(string organizationId, WebDavSetting[] settings, object userState) {
+ if ((this.GetFoldersWithoutFrsmOperationCompleted == null)) {
+ this.GetFoldersWithoutFrsmOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFoldersWithoutFrsmOperationCompleted);
+ }
+ this.InvokeAsync("GetFoldersWithoutFrsm", new object[] {
+ organizationId,
+ settings}, this.GetFoldersWithoutFrsmOperationCompleted, userState);
+ }
+
+ private void OnGetFoldersWithoutFrsmOperationCompleted(object arg) {
+ if ((this.GetFoldersWithoutFrsmCompleted != null)) {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetFoldersWithoutFrsmCompleted(this, new GetFoldersWithoutFrsmCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
+
///
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
@@ -544,6 +592,32 @@ namespace WebsitePanel.Providers.EnterpriseStorage {
}
}
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
+ public delegate void GetFoldersWithoutFrsmCompletedEventHandler(object sender, GetFoldersWithoutFrsmCompletedEventArgs e);
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetFoldersWithoutFrsmCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
+
+ private object[] results;
+
+ internal GetFoldersWithoutFrsmCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState) {
+ this.results = results;
+ }
+
+ ///
+ public SystemFile[] Result {
+ get {
+ this.RaiseExceptionIfNecessary();
+ return ((SystemFile[])(this.results[0]));
+ }
+ }
+ }
+
///
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
public delegate void GetFolderCompletedEventHandler(object sender, GetFolderCompletedEventArgs e);
diff --git a/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs
index ecd4878c..6a27c78a 100644
--- a/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs
@@ -75,6 +75,23 @@ namespace WebsitePanel.Server
}
}
+ [WebMethod, SoapHeader("settings")]
+ public SystemFile[] GetFoldersWithoutFrsm(string organizationId, WebDavSetting[] settings)
+ {
+ try
+ {
+ Log.WriteStart("'{0}' GetFolders", ProviderSettings.ProviderName);
+ SystemFile[] result = EnterpriseStorageProvider.GetFoldersWithoutFrsm(organizationId, settings);
+ 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, WebDavSetting setting)
{