diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql
index 7d8add41..ed0eb6d3 100644
--- a/WebsitePanel/Database/update_db.sql
+++ b/WebsitePanel/Database/update_db.sql
@@ -3035,4 +3035,133 @@ END
GO
UPDATE [dbo].[Quotas] SET [QuotaDescription] = N'Disk Storage Space (Mb)' WHERE [QuotaName] = 'EnterpriseStorage.DiskStorageSpace'
+GO
+
+--Enterprise Storage
+IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='EnterpriseFolders' AND COLS.name='LocationDrive')
+BEGIN
+ALTER TABLE [dbo].[EnterpriseFolders] ADD
+ [LocationDrive] NVARCHAR(255) NULL
+END
+GO
+
+IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='EnterpriseFolders' AND COLS.name='HomeFolder')
+BEGIN
+ALTER TABLE [dbo].[EnterpriseFolders] ADD
+ [HomeFolder] NVARCHAR(255) NULL
+END
+GO
+
+IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='EnterpriseFolders' AND COLS.name='Domain')
+BEGIN
+ALTER TABLE [dbo].[EnterpriseFolders] ADD
+ [Domain] NVARCHAR(255) NULL
+END
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetEnterpriseFolders')
+DROP PROCEDURE GetEnterpriseFolders
+GO
+
+CREATE PROCEDURE [dbo].[GetEnterpriseFolders]
+(
+ @ItemID INT
+)
+AS
+
+SELECT DISTINCT LocationDrive, HomeFolder, Domain FROM EnterpriseFolders
+WHERE ItemID = @ItemID
+GO
+
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetEnterpriseFolder')
+DROP PROCEDURE GetEnterpriseFolder
+GO
+
+CREATE PROCEDURE [dbo].[GetEnterpriseFolder]
+(
+ @ItemID INT,
+ @FolderName NVARCHAR(255)
+)
+AS
+
+SELECT LocationDrive, HomeFolder, Domain FROM EnterpriseFolders
+WHERE ItemID = @ItemID AND FolderName = @FolderName
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddEnterpriseFolder')
+DROP PROCEDURE [dbo].[AddEnterpriseFolder]
+GO
+
+CREATE PROCEDURE [dbo].[AddEnterpriseFolder]
+(
+ @FolderID INT OUTPUT,
+ @ItemID INT,
+ @FolderName NVARCHAR(255),
+ @LocationDrive NVARCHAR(255),
+ @HomeFolder NVARCHAR(255),
+ @Domain NVARCHAR(255)
+)
+AS
+
+INSERT INTO EnterpriseFolders
+(
+ ItemID,
+ FolderName,
+ LocationDrive,
+ HomeFolder,
+ Domain
+)
+VALUES
+(
+ @ItemID,
+ @FolderName,
+ @LocationDrive,
+ @HomeFolder,
+ @Domain
+)
+
+SET @FolderID = SCOPE_IDENTITY()
+
+RETURN
+GO
+
+DECLARE @serviceId int
+SET @serviceId = (SELECT TOP(1) ServiceId FROM Services WHERE ProviderID = 600)
+
+DECLARE @locationDrive nvarchar(255)
+SET @locationDrive = (SELECT TOP(1) PropertyValue FROM ServiceProperties WHERE PropertyName = 'locationdrive' AND ServiceID = @serviceId)
+DECLARE @homeFolder nvarchar(255)
+SET @homeFolder = (SELECT TOP(1) PropertyValue FROM ServiceProperties WHERE PropertyName = 'usershome' AND ServiceID = @serviceId)
+DECLARE @domain nvarchar(255)
+SET @domain = (SELECT TOP(1) PropertyValue FROM ServiceProperties WHERE PropertyName = 'usersdomain' AND ServiceID = @serviceId)
+
+UPDATE EnterpriseFolders SET
+ LocationDrive = @locationDrive,
+ HomeFolder = @homeFolder,
+ Domain = @domain
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetOrganizationGroupsByDisplayName')
+DROP PROCEDURE [dbo].[GetOrganizationGroupsByDisplayName]
+GO
+
+CREATE PROCEDURE [dbo].[GetOrganizationGroupsByDisplayName]
+(
+ @ItemID int,
+ @DisplayName NVARCHAR(255)
+)
+AS
+SELECT
+ AccountID,
+ ItemID,
+ AccountType,
+ AccountName,
+ DisplayName,
+ UserPrincipalName
+FROM
+ ExchangeAccounts
+WHERE
+ ItemID = @ItemID AND DisplayName = @DisplayName AND (AccountType IN (8, 9))
+RETURN
GO
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs
index a64f9834..113e48d2 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs
@@ -304,20 +304,22 @@ namespace WebsitePanel.EnterpriseServer
///
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CreateEnterpriseFolder", RequestNamespace = "http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace = "http://smbsaas/websitepanel/enterpriseserver", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
- public ResultObject CreateEnterpriseFolder(int itemId, string folderName)
+ public ResultObject CreateEnterpriseFolder(int itemId, string folderName, bool addDefaultGroup)
{
object[] results = this.Invoke("CreateEnterpriseFolder", new object[] {
itemId,
- folderName});
+ folderName,
+ addDefaultGroup});
return ((ResultObject)(results[0]));
}
///
- public System.IAsyncResult BeginCreateEnterpriseFolder(int itemId, string folderName, System.AsyncCallback callback, object asyncState)
+ public System.IAsyncResult BeginCreateEnterpriseFolder(int itemId, string folderName, bool addDefaultGroup, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CreateEnterpriseFolder", new object[] {
itemId,
- folderName}, callback, asyncState);
+ folderName,
+ addDefaultGroup}, callback, asyncState);
}
///
@@ -328,13 +330,13 @@ namespace WebsitePanel.EnterpriseServer
}
///
- public void CreateEnterpriseFolderAsync(int itemId, string folderName)
+ public void CreateEnterpriseFolderAsync(int itemId, string folderName, bool addDefaultGroup)
{
- this.CreateEnterpriseFolderAsync(itemId, folderName, null);
+ this.CreateEnterpriseFolderAsync(itemId, folderName, addDefaultGroup, null);
}
///
- public void CreateEnterpriseFolderAsync(int itemId, string folderName, object userState)
+ public void CreateEnterpriseFolderAsync(int itemId, string folderName, bool addDefaultGroup, object userState)
{
if ((this.CreateEnterpriseFolderOperationCompleted == null))
{
@@ -342,7 +344,8 @@ namespace WebsitePanel.EnterpriseServer
}
this.InvokeAsync("CreateEnterpriseFolder", new object[] {
itemId,
- folderName}, this.CreateEnterpriseFolderOperationCompleted, userState);
+ folderName,
+ addDefaultGroup}, this.CreateEnterpriseFolderOperationCompleted, userState);
}
private void OnCreateEnterpriseFolderOperationCompleted(object arg)
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs
index 6dc8c467..b6e7a97a 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs
@@ -3092,6 +3092,17 @@ namespace WebsitePanel.EnterpriseServer
);
}
+ public static IDataReader GetOrganizationGroupsByDisplayName(int itemId, string displayName)
+ {
+ return SqlHelper.ExecuteReader(
+ ConnectionString,
+ CommandType.StoredProcedure,
+ "GetOrganizationGroupsByDisplayName",
+ new SqlParameter("@ItemID", itemId),
+ new SqlParameter("@DisplayName", displayName)
+ );
+ }
+
public static IDataReader SearchOrganizationAccounts(int actorId, int itemId,
string filterColumn, string filterValue, string sortColumn, bool includeMailboxes)
{
@@ -4158,7 +4169,7 @@ namespace WebsitePanel.EnterpriseServer
#region Enterprise Storage
- public static int AddEntepriseFolder(int itemId, string folderName)
+ public static int AddEntepriseFolder(int itemId, string folderName, string locationDrive, string homeFolder, string domain)
{
SqlParameter prmId = new SqlParameter("@FolderID", SqlDbType.Int);
prmId.Direction = ParameterDirection.Output;
@@ -4169,7 +4180,11 @@ namespace WebsitePanel.EnterpriseServer
"AddEnterpriseFolder",
prmId,
new SqlParameter("@ItemID", itemId),
- new SqlParameter("@FolderName", folderName));
+ new SqlParameter("@FolderName", folderName),
+ new SqlParameter("@LocationDrive", locationDrive),
+ new SqlParameter("@HomeFolder", homeFolder),
+ new SqlParameter("@Domain", domain)
+ );
// read identity
return Convert.ToInt32(prmId.Value);
@@ -4197,6 +4212,27 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@FolderQuota", folderQuota));
}
+ public static IDataReader GetEnterpriseFolders(int itemId)
+ {
+ return SqlHelper.ExecuteReader(
+ ConnectionString,
+ CommandType.StoredProcedure,
+ "GetEnterpriseFolders",
+ new SqlParameter("@ItemID", itemId)
+ );
+ }
+
+ public static IDataReader GetEnterpriseFolder(int itemId, string folderName)
+ {
+ return SqlHelper.ExecuteReader(
+ ConnectionString,
+ CommandType.StoredProcedure,
+ "GetEnterpriseFolder",
+ new SqlParameter("@ItemID", itemId),
+ new SqlParameter("@FolderName", folderName)
+ );
+ }
+
#endregion
}
}
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
index bc333377..8d1ee486 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
@@ -87,12 +87,12 @@ namespace WebsitePanel.EnterpriseServer
public static ResultObject CreateFolder(int itemId)
{
- return CreateFolder(itemId, string.Empty);
+ return CreateFolder(itemId, string.Empty, false);
}
- public static ResultObject CreateFolder(int itemId, string folderName)
+ public static ResultObject CreateFolder(int itemId, string folderName, bool addDefaultGroup)
{
- return CreateFolderInternal(itemId, folderName);
+ return CreateFolderInternal(itemId, folderName, addDefaultGroup);
}
public static ResultObject DeleteFolder(int itemId)
@@ -354,7 +354,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(serviceId);
- return es.GetFolders(org.OrganizationId);
+ var webDavSettings = ObjectUtils.CreateListFromDataReader(
+ DataProvider.GetEnterpriseFolders(itemId)).ToArray();
+
+ return es.GetFolders(org.OrganizationId, webDavSettings);
}
catch (Exception ex)
{
@@ -375,7 +378,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
- return es.GetFolder(org.OrganizationId, folderName);
+ var webDavSetting = ObjectUtils.FillObjectFromDataReader(
+ DataProvider.GetEnterpriseFolder(itemId, folderName));
+
+ return es.GetFolder(org.OrganizationId, folderName, webDavSetting);
}
catch (Exception ex)
{
@@ -396,9 +402,12 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
- if (es.GetFolder(org.OrganizationId, newFolder) == null)
+ var webDavSetting = ObjectUtils.FillObjectFromDataReader(
+ DataProvider.GetEnterpriseFolder(itemId, oldFolder));
+
+ if (webDavSetting == null)
{
- SystemFile folder = es.RenameFolder(org.OrganizationId, oldFolder, newFolder);
+ SystemFile folder = es.RenameFolder(org.OrganizationId, oldFolder, newFolder, webDavSetting);
DataProvider.UpdateEnterpriseFolder(itemId, oldFolder, newFolder, folder.FRSMQuotaGB);
@@ -413,7 +422,7 @@ namespace WebsitePanel.EnterpriseServer
}
}
- protected static ResultObject CreateFolderInternal(int itemId, string folderName)
+ protected static ResultObject CreateFolderInternal(int itemId, string folderName, bool addDefaultGroup)
{
ResultObject result = TaskManager.StartResultTask("ENTERPRISE_STORAGE", "CREATE_FOLDER");
@@ -430,11 +439,46 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
- if (es.GetFolder(org.OrganizationId, folderName) == null)
+ var webDavSetting = ObjectUtils.FillObjectFromDataReader(
+ DataProvider.GetEnterpriseFolder(itemId, folderName));
+
+ if (webDavSetting == null)
{
+ int esId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.EnterpriseStorage);
+
+ StringDictionary esSesstings = ServerController.GetServiceSettings(esId);
+
es.CreateFolder(org.OrganizationId, folderName);
- DataProvider.AddEntepriseFolder(itemId, folderName);
+ DataProvider.AddEntepriseFolder(itemId, folderName, esSesstings["LocationDrive"],
+ esSesstings["UsersHome"], esSesstings["UsersDomain"]);
+
+ if (addDefaultGroup)
+ {
+ var groupName = string.Format("{0} Folder Users", folderName);
+
+ var accountId = ObjectUtils.CreateListFromDataReader(
+ DataProvider.GetOrganizationGroupsByDisplayName(itemId, groupName)).Select(g => g.AccountId).FirstOrDefault();
+
+ if (accountId == null)
+ {
+ accountId = OrganizationController.CreateSecurityGroup(itemId, groupName);
+ }
+
+ var securityGroup = OrganizationController.GetSecurityGroupGeneralSettings(itemId, accountId);
+
+ var rules = new List() {
+ new WebDavFolderRule
+ {
+ Roles = new List() { securityGroup.AccountName },
+ Read = true,
+ Write = true,
+ Pathes = new List() { "*" }
+ }
+ };
+
+ es.SetFolderWebDavRules(org.OrganizationId, folderName, webDavSetting, rules.ToArray());
+ }
}
else
{
@@ -519,7 +563,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
- es.DeleteFolder(org.OrganizationId, folderName);
+ var webDavSetting = ObjectUtils.FillObjectFromDataReader(
+ DataProvider.GetEnterpriseFolder(itemId, folderName));
+
+ es.DeleteFolder(org.OrganizationId, folderName, webDavSetting);
DataProvider.DeleteEnterpriseFolder(itemId, folderName);
}
@@ -595,7 +642,11 @@ namespace WebsitePanel.EnterpriseServer
if (CheckUsersDomainExistsInternal(itemId, org.PackageId))
{
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
- List folders = es.GetFolders(org.OrganizationId).Where(x => x.Name.Contains(filterValue)).ToList();
+
+ var webDavSettings = ObjectUtils.CreateListFromDataReader(
+ DataProvider.GetEnterpriseFolders(itemId)).ToArray();
+
+ List folders = es.GetFolders(org.OrganizationId, webDavSettings).Where(x => x.Name.Contains(filterValue)).ToList();
switch (sortColumn)
{
@@ -720,7 +771,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
- es.SetFolderWebDavRules(org.OrganizationId, folder, rules);
+ var webDavSetting = ObjectUtils.FillObjectFromDataReader(
+ DataProvider.GetEnterpriseFolder(itemId, folder));
+
+ es.SetFolderWebDavRules(org.OrganizationId, folder, webDavSetting, rules);
}
catch (Exception ex)
{
@@ -754,7 +808,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
- return es.GetFolderWebDavRules(org.OrganizationId, folder);
+ var webDavSetting = ObjectUtils.FillObjectFromDataReader(
+ DataProvider.GetEnterpriseFolder(itemId, folder));
+
+ return es.GetFolderWebDavRules(org.OrganizationId, folder, webDavSetting);
}
catch (Exception ex)
{
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs
index bfa15387..eed5ba06 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs
@@ -76,9 +76,9 @@ namespace WebsitePanel.EnterpriseServer
}
[WebMethod]
- public ResultObject CreateEnterpriseFolder(int itemId, string folderName)
+ public ResultObject CreateEnterpriseFolder(int itemId, string folderName, bool addDefaultGroup)
{
- return EnterpriseStorageController.CreateFolder(itemId, folderName);
+ return EnterpriseStorageController.CreateFolder(itemId, folderName, addDefaultGroup);
}
[WebMethod]
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs
index dbcc97cc..155120b4 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs
@@ -38,13 +38,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
///
public interface IEnterpriseStorage
{
- SystemFile[] GetFolders(string organizationId);
- SystemFile GetFolder(string organizationId, string folderName);
+ SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings);
+ SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting);
void CreateFolder(string organizationId, string folder);
- SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder);
- void DeleteFolder(string organizationId, string folder);
- bool SetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules);
- WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder);
+ 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);
+ WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting);
bool CheckFileServicesInstallation();
}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebDavFolderRule.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebDavFolderRule.cs
index 44815d80..f0cc3f4a 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebDavFolderRule.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebDavFolderRule.cs
@@ -6,7 +6,6 @@ using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Providers.Web
{
-
public enum WebDavAccess
{
Read = 1,
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebDavSetting.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebDavSetting.cs
new file mode 100644
index 00000000..3a0688a7
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/WebDavSetting.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace WebsitePanel.Providers.Web
+{
+ public class WebDavSetting
+ {
+ public string LocationDrive { get; set; }
+ public string HomeFolder { get; set; }
+ public string Domain { get; set; }
+
+ public WebDavSetting() { }
+
+ public WebDavSetting(string locationDrive, string homeFolder, string domain)
+ {
+ LocationDrive = locationDrive;
+ HomeFolder = homeFolder;
+ Domain = domain;
+ }
+
+ public bool IsEmpty()
+ {
+ return string.IsNullOrEmpty(LocationDrive) && string.IsNullOrEmpty(HomeFolder) && string.IsNullOrEmpty(Domain);
+ }
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
index 76bc8c69..3e0c109c 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
@@ -332,6 +332,7 @@
+
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
index 28896298..6914ed20 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
@@ -62,55 +62,63 @@ namespace WebsitePanel.Providers.EnterpriseStorage
#endregion
#region Folders
- public SystemFile[] GetFolders(string organizationId)
+ public SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings)
{
ArrayList items = new ArrayList();
- string rootPath = string.Format("{0}:\\{1}\\{2}", LocationDrive, UsersHome, organizationId);
- var windows = new WebsitePanel.Providers.OS.Windows2012();
+ var webDavSettings = GetWebDavSettings(settings);
- if (Directory.Exists(rootPath))
+ foreach (var setting in webDavSettings)
{
- DirectoryInfo root = new DirectoryInfo(rootPath);
- IWebDav webdav = new Web.WebDav(UsersDomain);
+ string rootPath = string.Format("{0}:\\{1}\\{2}", setting.LocationDrive, setting.HomeFolder, organizationId);
- // get directories
- DirectoryInfo[] dirs = root.GetDirectories();
- foreach (DirectoryInfo dir in dirs)
+ var windows = new WebsitePanel.Providers.OS.Windows2012();
+
+ if (Directory.Exists(rootPath))
{
- string fullName = System.IO.Path.Combine(rootPath, dir.Name);
+ DirectoryInfo root = new DirectoryInfo(rootPath);
+ IWebDav webdav = new Web.WebDav(setting);
- SystemFile folder = new SystemFile();
-
- folder.Name = dir.Name;
- folder.FullName = dir.FullName;
- folder.IsDirectory = true;
-
- Quota quota = windows.GetQuotaOnFolder(fullName, string.Empty, string.Empty);
-
- folder.Size = quota.Usage;
-
- if (folder.Size == -1)
+ // get directories
+ DirectoryInfo[] dirs = root.GetDirectories();
+ foreach (DirectoryInfo dir in dirs)
{
- folder.Size = FileUtils.BytesToMb(FileUtils.CalculateFolderSize(dir.FullName));
- }
+ string fullName = System.IO.Path.Combine(rootPath, dir.Name);
- folder.Url = string.Format("https://{0}/{1}/{2}", UsersDomain, organizationId, dir.Name);
- folder.Rules = webdav.GetFolderWebDavRules(organizationId, dir.Name);
- folder.FRSMQuotaMB = quota.Size;
- folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB);
- folder.FsrmQuotaType = quota.QuotaType;
-
- items.Add(folder);
+ SystemFile folder = new SystemFile();
+
+ folder.Name = dir.Name;
+ folder.FullName = dir.FullName;
+ folder.IsDirectory = true;
+
+ Quota quota = windows.GetQuotaOnFolder(fullName, string.Empty, string.Empty);
+
+ folder.Size = quota.Usage;
+
+ 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);
+ folder.FRSMQuotaMB = quota.Size;
+ folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB);
+ folder.FsrmQuotaType = quota.QuotaType;
+
+ items.Add(folder);
+ }
}
}
return (SystemFile[])items.ToArray(typeof(SystemFile));
}
- public SystemFile GetFolder(string organizationId, string folderName)
+ public SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting)
{
- string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folderName);
+ var webDavSetting = GetWebDavSetting(setting);
+
+ string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folderName);
SystemFile folder = null;
var windows = new WebsitePanel.Providers.OS.Windows2012();
@@ -134,8 +142,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
folder.Size = FileUtils.BytesToMb(FileUtils.CalculateFolderSize(root.FullName));
}
- folder.Url = string.Format("https://{0}/{1}/{2}", UsersDomain, organizationId, folderName);
- folder.Rules = GetFolderWebDavRules(organizationId, folderName);
+ folder.Url = string.Format("https://{0}/{1}/{2}", webDavSetting.Domain, organizationId, folderName);
+ folder.Rules = GetFolderWebDavRules(organizationId, folderName, webDavSetting);
folder.FRSMQuotaMB = quota.Size;
folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB);
folder.FsrmQuotaType = quota.QuotaType;
@@ -149,24 +157,28 @@ namespace WebsitePanel.Providers.EnterpriseStorage
FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder));
}
- public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder)
+ public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
{
- var oldPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, originalFolder);
- var newPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, newFolder);
+ var webDavSetting = GetWebDavSetting(setting);
+
+ var oldPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, originalFolder);
+ var newPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, newFolder);
FileUtils.MoveFile(oldPath,newPath);
- IWebDav webdav = new WebDav(UsersDomain);
+ IWebDav webdav = new WebDav(webDavSetting);
//deleting old folder rules
webdav.DeleteAllWebDavRules(organizationId, originalFolder);
- return GetFolder(organizationId, newFolder);
+ return GetFolder(organizationId, newFolder, webDavSetting);
}
- public void DeleteFolder(string organizationId, string folder)
+ public void DeleteFolder(string organizationId, string folder, WebDavSetting setting)
{
- string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder);
+ var webDavSetting = GetWebDavSetting(setting);
+
+ string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder);
DirectoryInfo treeRoot = new DirectoryInfo(rootPath);
@@ -176,7 +188,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
while (dirs.Length > 0)
{
foreach (DirectoryInfo dir in dirs)
- DeleteFolder(organizationId, folder != string.Empty ? string.Format("{0}\\{1}", folder, dir.Name) : dir.Name);
+ DeleteFolder(organizationId, folder != string.Empty ? string.Format("{0}\\{1}", folder, dir.Name) : dir.Name, webDavSetting);
dirs = treeRoot.GetDirectories();
}
@@ -189,7 +201,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
File.Delete(file);
}
- IWebDav webdav = new WebDav(UsersDomain);
+ IWebDav webdav = new WebDav(webDavSetting);
webdav.DeleteAllWebDavRules(organizationId, folder);
@@ -197,7 +209,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
}
- public bool SetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules)
+ public bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules)
{
var users = new List();
@@ -224,20 +236,24 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
}
- string path = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder);
+ var webDavSetting = GetWebDavSetting(setting);
+
+ string path = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder);
SecurityUtils.ResetNtfsPermissions(path);
SecurityUtils.GrantGroupNtfsPermissions(path, users.ToArray(), false, new RemoteServerSettings(), null, null);
- IWebDav webdav = new WebDav(UsersDomain);
+ IWebDav webdav = new WebDav(webDavSetting);
return webdav.SetFolderWebDavRules(organizationId, folder, rules);
}
- public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder)
+ public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting)
{
- IWebDav webdav = new WebDav(UsersDomain);
+ var webDavSetting = GetWebDavSetting(setting);
+
+ IWebDav webdav = new WebDav(webDavSetting);
return webdav.GetFolderWebDavRules(organizationId, folder);
}
@@ -326,5 +342,34 @@ namespace WebsitePanel.Providers.EnterpriseStorage
return version == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2012;
}
+ protected WebDavSetting GetWebDavSetting(WebDavSetting setting)
+ {
+ if (setting == null || setting.IsEmpty())
+ {
+ return new WebDavSetting(LocationDrive, UsersHome, UsersDomain);
+ }
+
+ return setting;
+ }
+
+ protected WebDavSetting[] GetWebDavSettings(WebDavSetting[] settings)
+ {
+ var webDavSettings = new ArrayList();
+
+ foreach (var setting in settings)
+ {
+ if (!setting.IsEmpty())
+ {
+ webDavSettings.Add(setting);
+ }
+ }
+
+ if (webDavSettings.Count == 0)
+ {
+ return new WebDavSetting[] { GetWebDavSetting(new WebDavSetting()) };
+ }
+
+ return settings;
+ }
}
}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs
index 1ec41b3d..48b947de 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.WebDav/WebDav.cs
@@ -13,13 +13,13 @@ namespace WebsitePanel.Providers.Web
{
#region Fields
- private string _usersDomain;
+ protected WebDavSetting _Setting;
#endregion
- public WebDav(string domain)
+ public WebDav(WebDavSetting setting)
{
- _usersDomain = domain;
+ _Setting = setting;
}
public void CreateWebDavRule(string organizationId, string folder, WebDavFolderRule rule)
@@ -28,7 +28,7 @@ namespace WebsitePanel.Providers.Web
{
Configuration config = serverManager.GetApplicationHostConfiguration();
- ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder));
+ ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _Setting.Domain, organizationId, folder));
ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
@@ -61,7 +61,7 @@ namespace WebsitePanel.Providers.Web
{
Configuration config = serverManager.GetApplicationHostConfiguration();
- ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder));
+ ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _Setting.Domain, organizationId, folder));
ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
@@ -107,7 +107,7 @@ namespace WebsitePanel.Providers.Web
{
Configuration config = serverManager.GetApplicationHostConfiguration();
- ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder));
+ ConfigurationSection authoringRulesSection = config.GetSection("system.webServer/webdav/authoringRules", string.Format("{0}/{1}/{2}", _Setting.Domain, organizationId, folder));
ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
@@ -133,7 +133,7 @@ namespace WebsitePanel.Providers.Web
Configuration config = serverManager.GetApplicationHostConfiguration();
- config.RemoveLocationPath(string.Format("{0}/{1}/{2}", _usersDomain, organizationId, folder));
+ config.RemoveLocationPath(string.Format("{0}/{1}/{2}", _Setting.Domain, organizationId, folder));
serverManager.CommitChanges();
return true;
}
diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs
index 81bed424..063f7e10 100644
--- a/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs
@@ -112,18 +112,20 @@ namespace WebsitePanel.Providers.EnterpriseStorage
///
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolders", 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[] GetFolders(string organizationId)
+ public SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings)
{
object[] results = this.Invoke("GetFolders", new object[] {
- organizationId});
+ organizationId,
+ settings});
return ((SystemFile[])(results[0]));
}
///
- public System.IAsyncResult BeginGetFolders(string organizationId, System.AsyncCallback callback, object asyncState)
+ public System.IAsyncResult BeginGetFolders(string organizationId, WebDavSetting[] settings, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("GetFolders", new object[] {
- organizationId}, callback, asyncState);
+ organizationId,
+ settings}, callback, asyncState);
}
///
@@ -134,20 +136,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
///
- public void GetFoldersAsync(string organizationId)
+ public void GetFoldersAsync(string organizationId, WebDavSetting[] settings)
{
- this.GetFoldersAsync(organizationId, null);
+ this.GetFoldersAsync(organizationId, settings, null);
}
///
- public void GetFoldersAsync(string organizationId, object userState)
+ public void GetFoldersAsync(string organizationId, WebDavSetting[] settings, object userState)
{
if ((this.GetFoldersOperationCompleted == null))
{
this.GetFoldersOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFoldersOperationCompleted);
}
this.InvokeAsync("GetFolders", new object[] {
- organizationId}, this.GetFoldersOperationCompleted, userState);
+ organizationId,
+ settings}, this.GetFoldersOperationCompleted, userState);
}
private void OnGetFoldersOperationCompleted(object arg)
@@ -162,20 +165,22 @@ namespace WebsitePanel.Providers.EnterpriseStorage
///
[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)]
- public SystemFile GetFolder(string organizationId, string folder)
+ public SystemFile GetFolder(string organizationId, string folder, WebDavSetting setting)
{
object[] results = this.Invoke("GetFolder", new object[] {
organizationId,
- folder});
+ folder,
+ setting});
return ((SystemFile)(results[0]));
}
///
- public System.IAsyncResult BeginGetFolder(string organizationId, string folder, System.AsyncCallback callback, object asyncState)
+ public System.IAsyncResult BeginGetFolder(string organizationId, string folder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("GetFolder", new object[] {
organizationId,
- folder}, callback, asyncState);
+ folder,
+ setting}, callback, asyncState);
}
///
@@ -186,13 +191,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
///
- public void GetFolderAsync(string organizationId, string folder)
+ public void GetFolderAsync(string organizationId, string folder, WebDavSetting setting)
{
- this.GetFolderAsync(organizationId, folder, null);
+ this.GetFolderAsync(organizationId, folder, setting, null);
}
///
- public void GetFolderAsync(string organizationId, string folder, object userState)
+ public void GetFolderAsync(string organizationId, string folder, WebDavSetting setting, object userState)
{
if ((this.GetFolderOperationCompleted == null))
{
@@ -200,7 +205,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
this.InvokeAsync("GetFolder", new object[] {
organizationId,
- folder}, this.GetFolderOperationCompleted, userState);
+ folder,
+ setting}, this.GetFolderOperationCompleted, userState);
}
private void OnGetFolderOperationCompleted(object arg)
@@ -266,19 +272,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
///
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteFolder", 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 DeleteFolder(string organizationId, string folder)
+ public void DeleteFolder(string organizationId, string folder, WebDavSetting setting)
{
this.Invoke("DeleteFolder", new object[] {
organizationId,
- folder});
+ folder,
+ setting});
}
///
- public System.IAsyncResult BeginDeleteFolder(string organizationId, string folder, System.AsyncCallback callback, object asyncState)
+ public System.IAsyncResult BeginDeleteFolder(string organizationId, string folder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("DeleteFolder", new object[] {
organizationId,
- folder}, callback, asyncState);
+ folder,
+ setting}, callback, asyncState);
}
///
@@ -288,13 +296,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
///
- public void DeleteFolderAsync(string organizationId, string folder)
+ public void DeleteFolderAsync(string organizationId, string folder, WebDavSetting setting)
{
- this.DeleteFolderAsync(organizationId, folder, null);
+ this.DeleteFolderAsync(organizationId, folder, setting, null);
}
///
- public void DeleteFolderAsync(string organizationId, string folder, object userState)
+ public void DeleteFolderAsync(string organizationId, string folder, WebDavSetting setting, object userState)
{
if ((this.DeleteFolderOperationCompleted == null))
{
@@ -302,7 +310,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
this.InvokeAsync("DeleteFolder", new object[] {
organizationId,
- folder}, this.DeleteFolderOperationCompleted, userState);
+ folder,
+ setting}, this.DeleteFolderOperationCompleted, userState);
}
private void OnDeleteFolderOperationCompleted(object arg)
@@ -317,21 +326,23 @@ namespace WebsitePanel.Providers.EnterpriseStorage
///
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetFolderWebDavRules", 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 bool SetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules)
+ public bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules)
{
object[] results = this.Invoke("SetFolderWebDavRules", new object[] {
organizationId,
folder,
+ setting,
rules});
return ((bool)(results[0]));
}
///
- public System.IAsyncResult BeginSetFolderWebDavRules(string organizationId, string folder, WebDavFolderRule[] rules, System.AsyncCallback callback, object asyncState)
+ public System.IAsyncResult BeginSetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("SetFolderWebDavRules", new object[] {
organizationId,
folder,
+ setting,
rules}, callback, asyncState);
}
@@ -343,13 +354,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
///
- public void SetFolderWebDavRulesAsync(string organizationId, string folder, WebDavFolderRule[] rules)
+ public void SetFolderWebDavRulesAsync(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules)
{
- this.SetFolderWebDavRulesAsync(organizationId, folder, rules, null);
+ this.SetFolderWebDavRulesAsync(organizationId, folder, setting, rules, null);
}
///
- public void SetFolderWebDavRulesAsync(string organizationId, string folder, WebDavFolderRule[] rules, object userState)
+ public void SetFolderWebDavRulesAsync(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules, object userState)
{
if ((this.SetFolderWebDavRulesOperationCompleted == null))
{
@@ -358,6 +369,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
this.InvokeAsync("SetFolderWebDavRules", new object[] {
organizationId,
folder,
+ setting,
rules}, this.SetFolderWebDavRulesOperationCompleted, userState);
}
@@ -373,20 +385,22 @@ namespace WebsitePanel.Providers.EnterpriseStorage
///
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolderWebDavRules", 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 WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder)
+ public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting)
{
object[] results = this.Invoke("GetFolderWebDavRules", new object[] {
organizationId,
- folder});
+ folder,
+ setting});
return ((WebDavFolderRule[])(results[0]));
}
///
- public System.IAsyncResult BeginGetFolderWebDavRules(string organizationId, string folder, System.AsyncCallback callback, object asyncState)
+ public System.IAsyncResult BeginGetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("GetFolderWebDavRules", new object[] {
organizationId,
- folder}, callback, asyncState);
+ folder,
+ setting}, callback, asyncState);
}
///
@@ -397,13 +411,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
///
- public void GetFolderWebDavRulesAsync(string organizationId, string folder)
+ public void GetFolderWebDavRulesAsync(string organizationId, string folder, WebDavSetting setting)
{
- this.GetFolderWebDavRulesAsync(organizationId, folder, null);
+ this.GetFolderWebDavRulesAsync(organizationId, folder, setting, null);
}
///
- public void GetFolderWebDavRulesAsync(string organizationId, string folder, object userState)
+ public void GetFolderWebDavRulesAsync(string organizationId, string folder, WebDavSetting setting, object userState)
{
if ((this.GetFolderWebDavRulesOperationCompleted == null))
{
@@ -411,7 +425,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
this.InvokeAsync("GetFolderWebDavRules", new object[] {
organizationId,
- folder}, this.GetFolderWebDavRulesOperationCompleted, userState);
+ folder,
+ setting}, this.GetFolderWebDavRulesOperationCompleted, userState);
}
private void OnGetFolderWebDavRulesOperationCompleted(object arg)
@@ -473,22 +488,24 @@ namespace WebsitePanel.Providers.EnterpriseStorage
///
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RenameFolder", 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 RenameFolder(string organizationId, string originalFolder, string newFolder)
+ public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
{
object[] results = this.Invoke("RenameFolder", new object[] {
organizationId,
originalFolder,
- newFolder});
+ newFolder,
+ setting});
return ((SystemFile)(results[0]));
}
///
- public System.IAsyncResult BeginRenameFolder(string organizationId, string originalFolder, string newFolder, System.AsyncCallback callback, object asyncState)
+ public System.IAsyncResult BeginRenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("RenameFolder", new object[] {
organizationId,
originalFolder,
- newFolder}, callback, asyncState);
+ newFolder,
+ setting}, callback, asyncState);
}
///
@@ -499,13 +516,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
///
- public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder)
+ public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
{
- this.RenameFolderAsync(organizationId, originalFolder, newFolder, null);
+ this.RenameFolderAsync(organizationId, originalFolder, newFolder, setting, null);
}
///
- public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder, object userState)
+ public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder, WebDavSetting setting, object userState)
{
if ((this.RenameFolderOperationCompleted == null))
{
@@ -514,7 +531,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
this.InvokeAsync("RenameFolder", new object[] {
organizationId,
originalFolder,
- newFolder}, this.RenameFolderOperationCompleted, userState);
+ newFolder,
+ setting}, this.RenameFolderOperationCompleted, userState);
}
private void OnRenameFolderOperationCompleted(object arg)
diff --git a/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs
index 002a4c98..5acdecd7 100644
--- a/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs
@@ -39,6 +39,7 @@ using WebsitePanel.Providers;
using WebsitePanel.Providers.EnterpriseStorage;
using WebsitePanel.Providers.OS;
using WebsitePanel.Server.Utils;
+using WebsitePanel.Providers.Web;
namespace WebsitePanel.Server
{
@@ -58,12 +59,12 @@ namespace WebsitePanel.Server
[WebMethod, SoapHeader("settings")]
- public SystemFile[] GetFolders(string organizationId)
+ public SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings)
{
try
{
Log.WriteStart("'{0}' GetFolders", ProviderSettings.ProviderName);
- SystemFile[] result = EnterpriseStorageProvider.GetFolders(organizationId);
+ SystemFile[] result = EnterpriseStorageProvider.GetFolders(organizationId, settings);
Log.WriteEnd("'{0}' GetFolders", ProviderSettings.ProviderName);
return result;
}
@@ -75,12 +76,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
- public SystemFile GetFolder(string organizationId, string folder)
+ public SystemFile GetFolder(string organizationId, string folder, WebDavSetting setting)
{
try
{
Log.WriteStart("'{0}' GetFolder", ProviderSettings.ProviderName);
- SystemFile result = EnterpriseStorageProvider.GetFolder(organizationId, folder);
+ SystemFile result = EnterpriseStorageProvider.GetFolder(organizationId, folder, setting);
Log.WriteEnd("'{0}' GetFolder", ProviderSettings.ProviderName);
return result;
}
@@ -108,12 +109,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
- public void DeleteFolder(string organizationId, string folder)
+ public void DeleteFolder(string organizationId, string folder, WebDavSetting setting)
{
try
{
Log.WriteStart("'{0}' DeleteFolder", ProviderSettings.ProviderName);
- EnterpriseStorageProvider.DeleteFolder(organizationId, folder);
+ EnterpriseStorageProvider.DeleteFolder(organizationId, folder, setting);
Log.WriteEnd("'{0}' DeleteFolder", ProviderSettings.ProviderName);
}
catch (Exception ex)
@@ -124,12 +125,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
- public bool SetFolderWebDavRules(string organizationId, string folder, Providers.Web.WebDavFolderRule[] rules)
+ public bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, Providers.Web.WebDavFolderRule[] rules)
{
try
{
Log.WriteStart("'{0}' SetFolderWebDavRules", ProviderSettings.ProviderName);
- return EnterpriseStorageProvider.SetFolderWebDavRules(organizationId, folder, rules);
+ return EnterpriseStorageProvider.SetFolderWebDavRules(organizationId, folder, setting, rules);
Log.WriteEnd("'{0}' SetFolderWebDavRules", ProviderSettings.ProviderName);
}
catch (Exception ex)
@@ -140,12 +141,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
- public Providers.Web.WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder)
+ public Providers.Web.WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting)
{
try
{
Log.WriteStart("'{0}' GetFolderWebDavRules", ProviderSettings.ProviderName);
- return EnterpriseStorageProvider.GetFolderWebDavRules(organizationId, folder);
+ return EnterpriseStorageProvider.GetFolderWebDavRules(organizationId, folder, setting);
Log.WriteEnd("'{0}' GetFolderWebDavRules", ProviderSettings.ProviderName);
}
catch (Exception ex)
@@ -172,12 +173,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
- public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder)
+ public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
{
try
{
Log.WriteStart("'{0}' RenameFolder", ProviderSettings.ProviderName);
- return EnterpriseStorageProvider.RenameFolder(organizationId, originalFolder, newFolder);
+ return EnterpriseStorageProvider.RenameFolder(organizationId, originalFolder, newFolder, setting);
Log.WriteEnd("'{0}' RenameFolder", ProviderSettings.ProviderName);
}
catch (Exception ex)
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/EnterpriseStorageCreateFolder.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/EnterpriseStorageCreateFolder.ascx.resx
index 82a41d20..a36ab7a7 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/EnterpriseStorageCreateFolder.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/EnterpriseStorageCreateFolder.ascx.resx
@@ -141,4 +141,7 @@
Create New Folder
+
+ Add Default Group
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx
index 396fa46e..26a80b92 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx
@@ -32,6 +32,13 @@
ErrorMessage="Enter Folder Name" ValidationGroup="CreateFolder" Display="Dynamic" Text="*" SetFocusOnError="True">
+
+
+ |
+
+
+ |
+