add default group for creating enterprise folder

save enterprise settings for enterprise folder
This commit is contained in:
vfedosevich 2014-02-11 21:13:00 +03:00
parent 329e9c10fe
commit 878f67013e
17 changed files with 491 additions and 174 deletions

View file

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

View file

@ -304,20 +304,22 @@ namespace WebsitePanel.EnterpriseServer
/// <remarks/>
[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]));
}
/// <remarks/>
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);
}
/// <remarks/>
@ -328,13 +330,13 @@ namespace WebsitePanel.EnterpriseServer
}
/// <remarks/>
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);
}
/// <remarks/>
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)

View file

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

View file

@ -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<WebDavSetting>(
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<WebDavSetting>(
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<WebDavSetting>(
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<ResultObject>("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<WebDavSetting>(
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<ExchangeAccount>(
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<WebDavFolderRule>() {
new WebDavFolderRule
{
Roles = new List<string>() { securityGroup.AccountName },
Read = true,
Write = true,
Pathes = new List<string>() { "*" }
}
};
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<WebDavSetting>(
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<SystemFile> folders = es.GetFolders(org.OrganizationId).Where(x => x.Name.Contains(filterValue)).ToList();
var webDavSettings = ObjectUtils.CreateListFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolders(itemId)).ToArray();
List<SystemFile> 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<WebDavSetting>(
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<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folder));
return es.GetFolderWebDavRules(org.OrganizationId, folder, webDavSetting);
}
catch (Exception ex)
{

View file

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

View file

@ -38,13 +38,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// </summary>
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();
}

View file

@ -6,7 +6,6 @@ using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Providers.Web
{
public enum WebDavAccess
{
Read = 1,

View file

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

View file

@ -332,6 +332,7 @@
<Compile Include="Web\SharedSSLFolder.cs" />
<Compile Include="Web\SSLCertificate.cs" />
<Compile Include="Web\WebDavFolderRule.cs" />
<Compile Include="Web\WebDavSetting.cs" />
<Compile Include="Web\WebFolder.cs" />
<Compile Include="Web\WebGroup.cs" />
<Compile Include="Web\WebSite.cs" />

View file

@ -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<UserPermission>();
@ -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;
}
}
}

View file

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

View file

@ -112,18 +112,20 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/>
[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]));
}
/// <remarks/>
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);
}
/// <remarks/>
@ -134,20 +136,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
/// <remarks/>
public void GetFoldersAsync(string organizationId)
public void GetFoldersAsync(string organizationId, WebDavSetting[] settings)
{
this.GetFoldersAsync(organizationId, null);
this.GetFoldersAsync(organizationId, settings, null);
}
/// <remarks/>
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
/// <remarks/>
[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]));
}
/// <remarks/>
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);
}
/// <remarks/>
@ -186,13 +191,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
/// <remarks/>
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);
}
/// <remarks/>
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
/// <remarks/>
[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});
}
/// <remarks/>
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);
}
/// <remarks/>
@ -288,13 +296,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
/// <remarks/>
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);
}
/// <remarks/>
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
/// <remarks/>
[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]));
}
/// <remarks/>
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
}
/// <remarks/>
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);
}
/// <remarks/>
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
/// <remarks/>
[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]));
}
/// <remarks/>
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);
}
/// <remarks/>
@ -397,13 +411,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
/// <remarks/>
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);
}
/// <remarks/>
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
/// <remarks/>
[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]));
}
/// <remarks/>
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);
}
/// <remarks/>
@ -499,13 +516,13 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
/// <remarks/>
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);
}
/// <remarks/>
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)

View file

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

View file

@ -141,4 +141,7 @@
<data name="locTitle" xml:space="preserve">
<value>Create New Folder</value>
</data>
<data name="locAddDefaultGroup" xml:space="preserve">
<value>Add Default Group</value>
</data>
</root>

View file

@ -32,6 +32,13 @@
ErrorMessage="Enter Folder Name" ValidationGroup="CreateFolder" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locAddDefaultGroup" runat="server" meta:resourcekey="locAddDefaultGroup" Text="Add Default Group:"></asp:Localize></td>
<td>
<asp:CheckBox id="chkAddDefaultGroup" runat="server" Checked="true"></asp:CheckBox>
</td>
</tr>
</table>
<div class="FormFooterClean">
<asp:Button id="btnCreate" runat="server" Text="Create Folder" CssClass="Button1" meta:resourcekey="btnCreate" ValidationGroup="CreateFolder" OnClick="btnCreate_Click"></asp:Button>

View file

@ -69,7 +69,7 @@ namespace WebsitePanel.Portal.ExchangeServer
ES.Services.EnterpriseStorage.CreateEnterpriseStorage(PanelSecurity.PackageId, PanelRequest.ItemID);
}
ResultObject result = ES.Services.EnterpriseStorage.CreateEnterpriseFolder(PanelRequest.ItemID, txtFolderName.Text);
ResultObject result = ES.Services.EnterpriseStorage.CreateEnterpriseFolder(PanelRequest.ItemID, txtFolderName.Text, chkAddDefaultGroup.Checked);
if (!result.IsSuccess && result.ErrorCodes.Count > 0)
{

View file

@ -1,31 +1,3 @@
// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -121,6 +93,24 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireFolderName;
/// <summary>
/// locAddDefaultGroup control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locAddDefaultGroup;
/// <summary>
/// chkAddDefaultGroup control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox chkAddDefaultGroup;
/// <summary>
/// btnCreate control.
/// </summary>