update functionallity enterprise storage

This commit is contained in:
vfedosevich 2013-11-05 17:54:40 +03:00
parent 922009d402
commit 8784e493d5
28 changed files with 10952 additions and 8121 deletions

View file

@ -7,10 +7,17 @@ namespace WebsitePanel.EnterpriseServer.Base.HostedSolution
{
public class ESPermission
{
string displayName;
string account;
string access;
bool isGroup;
public string DisplayName
{
get { return displayName; }
set { displayName = value; }
}
public string Account
{
get { return account; }
@ -29,4 +36,5 @@ namespace WebsitePanel.EnterpriseServer.Base.HostedSolution
set { isGroup = value; }
}
}
}

View file

@ -55,6 +55,8 @@ namespace WebsitePanel.EnterpriseServer
private System.Threading.SendOrPostCallback GetEnterpriseFoldersPagedOperationCompleted;
private System.Threading.SendOrPostCallback RenameEnterpriseFolderOperationCompleted;
/// <remarks/>
public esEnterpriseStorage()
{
@ -88,6 +90,9 @@ namespace WebsitePanel.EnterpriseServer
/// <remarks/>
public event GetEnterpriseFoldersPagedCompletedEventHandler GetEnterpriseFoldersPagedCompleted;
/// <remarks/>
public event RenameEnterpriseFolderCompletedEventHandler RenameEnterpriseFolderCompleted;
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckFileServicesInstallation", 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 bool CheckFileServicesInstallation(int serviceId)
@ -568,6 +573,61 @@ namespace WebsitePanel.EnterpriseServer
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/RenameEnterpriseFolder", 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 SystemFile RenameEnterpriseFolder(int itemId, string oldName, string newName)
{
object[] results = this.Invoke("RenameEnterpriseFolder", new object[] {
itemId,
oldName,
newName});
return ((SystemFile)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginRenameEnterpriseFolder(int itemId, string oldName, string newName, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("RenameEnterpriseFolder", new object[] {
itemId,
oldName,
newName}, callback, asyncState);
}
/// <remarks/>
public SystemFile EndRenameEnterpriseFolder(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((SystemFile)(results[0]));
}
/// <remarks/>
public void RenameEnterpriseFolderAsync(int itemId, string oldName, string newName)
{
this.RenameEnterpriseFolderAsync(itemId, oldName, newName, null);
}
/// <remarks/>
public void RenameEnterpriseFolderAsync(int itemId, string oldName, string newName, object userState)
{
if ((this.RenameEnterpriseFolderOperationCompleted == null))
{
this.RenameEnterpriseFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRenameEnterpriseFolderOperationCompleted);
}
this.InvokeAsync("RenameEnterpriseFolder", new object[] {
itemId,
oldName,
newName}, this.RenameEnterpriseFolderOperationCompleted, userState);
}
private void OnRenameEnterpriseFolderOperationCompleted(object arg)
{
if ((this.RenameEnterpriseFolderCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.RenameEnterpriseFolderCompleted(this, new RenameEnterpriseFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState)
{
@ -844,4 +904,34 @@ namespace WebsitePanel.EnterpriseServer
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void RenameEnterpriseFolderCompletedEventHandler(object sender, RenameEnterpriseFolderCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class RenameEnterpriseFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal RenameEnterpriseFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public SystemFile Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((SystemFile)(this.results[0]));
}
}
}
}

View file

@ -100,7 +100,7 @@ namespace WebsitePanel.EnterpriseServer
public static ESPermission[] GetFolderPermission(int itemId, string folder)
{
return ConvertToESPermission(GetFolderWebDavRulesInternal(itemId, folder));
return ConvertToESPermission(itemId,GetFolderWebDavRulesInternal(itemId, folder));
}
public static bool CheckFileServicesInstallation(int serviceId)
@ -109,6 +109,11 @@ namespace WebsitePanel.EnterpriseServer
return es.CheckFileServicesInstallation();
}
public static SystemFile RenameFolder(int itemId, string oldFolder, string newFolder)
{
return RenameFolderInternal(itemId, oldFolder, newFolder);
}
#endregion
@ -161,6 +166,28 @@ namespace WebsitePanel.EnterpriseServer
}
}
protected static SystemFile RenameFolderInternal(int itemId, string oldFolder, string newFolder)
{
try
{
// load organization
Organization org = OrganizationController.GetOrganization(itemId);
if (org == null)
{
return null;
}
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
return es.RenameFolder(org.OrganizationId, oldFolder, newFolder);
}
catch (Exception ex)
{
throw ex;
}
}
protected static ResultObject CreateFolderInternal(int itemId, string folderName)
{
ResultObject result = TaskManager.StartResultTask<ResultObject>("ENTERPRISE_STORAGE", "CREATE_FOLDER");
@ -240,7 +267,8 @@ namespace WebsitePanel.EnterpriseServer
if (org == null)
return null;
string accountTypes = string.Format("{0}, {1}", ((int)ExchangeAccountType.SecurityGroup), ((int)ExchangeAccountType.User));
string accountTypes = string.Format("{0}, {1}, {2}", ((int)ExchangeAccountType.SecurityGroup),
(int)ExchangeAccountType.DefaultSecurityGroup, ((int)ExchangeAccountType.User));
if (PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.Exchange) != 0)
{
@ -257,25 +285,16 @@ namespace WebsitePanel.EnterpriseServer
foreach (ExchangeAccount tmpAccount in tmpAccounts.ToArray())
{
bool bSuccess = false;
if (tmpAccount.AccountType == ExchangeAccountType.SecurityGroup || tmpAccount.AccountType == ExchangeAccountType.SecurityGroup
? OrganizationController.GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) == null
: OrganizationController.GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) == null)
continue;
switch (tmpAccount.AccountType)
{
case ExchangeAccountType.SecurityGroup:
bSuccess = OrganizationController.GetSecurityGroupGeneralSettings(itemId, tmpAccount.AccountId) != null;
break;
default:
bSuccess = OrganizationController.GetUserGeneralSettings(itemId, tmpAccount.AccountId) != null;
break;
}
if (bSuccess)
{
exAccounts.Add(tmpAccount);
}
}
return exAccounts;
}
protected static SystemFilesPaged GetEnterpriseFoldersPagedInternal(int itemId, string filterValue, string sortColumn,
@ -423,7 +442,7 @@ namespace WebsitePanel.EnterpriseServer
return rules.ToArray();
}
private static ESPermission[] ConvertToESPermission(WebDavFolderRule[] rules)
private static ESPermission[] ConvertToESPermission(int itemId, WebDavFolderRule[] rules)
{
var permissions = new List<ESPermission>();
@ -435,6 +454,31 @@ namespace WebsitePanel.EnterpriseServer
permission.IsGroup = rule.Roles.Any();
var orgObj = OrganizationController.GetAccountByAccountName(itemId, permission.Account);
if (orgObj == null)
continue;
if (permission.IsGroup)
{
var secGroupObj = OrganizationController.GetSecurityGroupGeneralSettings(itemId, orgObj.AccountId);
if (secGroupObj == null)
continue;
permission.DisplayName = secGroupObj.DisplayName;
}
else
{
var userObj = OrganizationController.GetUserGeneralSettings(itemId, orgObj.AccountId);
if (userObj == null)
continue;
permission.DisplayName = userObj.DisplayName;
}
if (rule.Read && !rule.Write)
{
permission.Access = "Read-Only";
@ -444,10 +488,12 @@ namespace WebsitePanel.EnterpriseServer
permission.Access = "Read-Write";
}
permissions.Add(permission);
}
return permissions.ToArray();
}
}
}

View file

@ -4619,5 +4619,57 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and
return result;
}
#endregion
#region Directory Browsing
public static bool GetDirectoryBrowseEnabled(int itemId, string siteId)
{
// load organization
var org = OrganizationController.GetOrganization(itemId);
if (org == null)
{
return false;
}
siteId = RemoveProtocolFromUrl(siteId);
var webServer = GetWebServer(GetWebServerServiceID(org.PackageId));
return webServer.GetDirectoryBrowseEnabled(siteId);
}
public static void SetDirectoryBrowseEnabled(int itemId, string siteId, bool enabled)
{
// load organization
var org = OrganizationController.GetOrganization(itemId);
if (org == null)
{
return;
}
siteId = RemoveProtocolFromUrl(siteId);
var webServer = GetWebServer(GetWebServerServiceID(org.PackageId));
webServer.SetDirectoryBrowseEnabled(siteId, enabled);
}
private static string RemoveProtocolFromUrl(string input)
{
if (input.Contains("//"))
{
return System.Text.RegularExpressions.Regex.Split(input, "//")[1];
}
return input;
}
#endregion
private static int GetWebServerServiceID(int packageId)
{
return PackageController.GetPackageServiceId(packageId, ResourceGroups.Web);
}
}
}

View file

@ -110,5 +110,11 @@ namespace WebsitePanel.EnterpriseServer
{
return EnterpriseStorageController.GetEnterpriseFoldersPaged(itemId, filterValue, sortColumn, startRow, maximumRows);
}
[WebMethod]
public SystemFile RenameEnterpriseFolder(int itemId, string oldName, string newName)
{
return EnterpriseStorageController.RenameFolder(itemId, oldName, newName);
}
}
}

View file

@ -625,5 +625,22 @@ namespace WebsitePanel.EnterpriseServer
}
#endregion
#region Directory Browsing
[WebMethod]
public bool GetDirectoryBrowseEnabled(int itemId, string site)
{
return WebServerController.GetDirectoryBrowseEnabled(itemId, site);
}
[WebMethod]
public void SetDirectoryBrowseEnabled(int itemId, string site, bool enabled)
{
WebServerController.SetDirectoryBrowseEnabled(itemId, site, enabled);
}
#endregion
}
}

View file

@ -41,9 +41,11 @@ namespace WebsitePanel.Providers.EnterpriseStorage
SystemFile[] GetFolders(string organizationId);
SystemFile GetFolder(string organizationId, string folderName);
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);
bool CheckFileServicesInstallation();
}
}

View file

@ -32,6 +32,8 @@ using WebsitePanel.Providers.HostedSolution;
using WebsitePanel.Providers.ResultObjects;
using WebsitePanel.Providers.WebAppGallery;
using WebsitePanel.Providers.Common;
using Microsoft.Web.Administration;
using Microsoft.Web.Management.Server;
namespace WebsitePanel.Providers.Web
{
@ -166,6 +168,8 @@ namespace WebsitePanel.Providers.Web
SSLCertificate ImportCertificate(WebSite website);
bool CheckCertificate(WebSite webSite);
//Directory Browseing
bool GetDirectoryBrowseEnabled(string siteId);
void SetDirectoryBrowseEnabled(string siteId, bool enabled);
}
}

View file

@ -57,6 +57,14 @@
<WarningsAsErrors>618</WarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.DirectoryServices" />

View file

@ -112,6 +112,21 @@ 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)
{
var oldPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, originalFolder);
var newPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, newFolder);
FileUtils.MoveFile(oldPath,newPath);
IWebDav webdav = new WebDav(UsersDomain);
//deleting old folder rules
webdav.DeleteAllWebDavRules(organizationId, originalFolder);
return GetFolder(organizationId, newFolder);
}
public void DeleteFolder(string organizationId, string folder)
{
string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folder);

View file

@ -3746,6 +3746,27 @@ namespace WebsitePanel.Providers.Web
return itemsDiskspace.ToArray();
}
#endregion
#region Directory Browsing
public override bool GetDirectoryBrowseEnabled(string siteId)
{
using (ServerManager srvman = webObjectsSvc.GetServerManager())
{
var enabled = dirBrowseSvc.GetDirectoryBrowseSettings(srvman, siteId)[DirectoryBrowseGlobals.Enabled];
return enabled != null ? (bool)enabled : false;
}
}
public override void SetDirectoryBrowseEnabled(string siteId, bool enabled)
{
dirBrowseSvc.SetDirectoryBrowseEnabled(siteId, enabled);
}
#endregion
public override bool IsIISInstalled()

View file

@ -56,6 +56,8 @@ using System.Xml.Serialization;
using System.Text.RegularExpressions;
using WebsitePanel.Providers.Common;
using System.Collections.Specialized;
using Microsoft.Web.Administration;
using Microsoft.Web.Management.Server;
namespace WebsitePanel.Providers.Web
{
@ -3412,6 +3414,27 @@ namespace WebsitePanel.Providers.Web
}
#endregion
#region Directory Browsing
public virtual bool GetDirectoryBrowseEnabled(string siteId)
{
ManagementObject objVirtDir = wmi.GetObject(String.Format("IIsWebVirtualDirSetting='{0}'", GetVirtualDirectoryPath(siteId, "")));
return objVirtDir.Properties["EnableDirBrowsing"].Value != null ? (bool)objVirtDir.Properties["EnableDirBrowsing"].Value : false;
}
public virtual void SetDirectoryBrowseEnabled(string siteId, bool enabled)
{
ManagementObject objSite = wmi.GetObject(String.Format("IIsWebServerSetting='{0}'", siteId));
WebSite site = GetSite(siteId);
site.EnableDirectoryBrowsing = enabled;
FillWmiObjectFromVirtualDirectory(objSite, site, false);
objSite.Put();
}
#endregion
public virtual bool IsIISInstalled()
{
int value = 0;
@ -3737,10 +3760,5 @@ namespace WebsitePanel.Providers.Web
throw new NotSupportedException();
}
#endregion
}
}

View file

@ -67,11 +67,19 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\Microsoft.Practices.ObjectBuilder.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Deployment, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.PlatformInstaller, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.PlatformInstaller.dll</HintPath>

View file

@ -30,6 +30,14 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />

View file

@ -71,16 +71,18 @@ namespace WebsitePanel.Providers.EnterpriseStorage
private System.Threading.SendOrPostCallback DeleteFolderOperationCompleted;
private System.Threading.SendOrPostCallback CheckFileServicesInstallationOperationCompleted;
private System.Threading.SendOrPostCallback SetFolderWebDavRulesOperationCompleted;
private System.Threading.SendOrPostCallback GetFolderWebDavRulesOperationCompleted;
private System.Threading.SendOrPostCallback CheckFileServicesInstallationOperationCompleted;
private System.Threading.SendOrPostCallback RenameFolderOperationCompleted;
/// <remarks/>
public EnterpriseStorage()
{
this.Url = "http://localhost:9003/EnterpriseStorage.asmx";
this.Url = "http://localhost:9004/EnterpriseStorage.asmx";
}
/// <remarks/>
@ -95,15 +97,18 @@ namespace WebsitePanel.Providers.EnterpriseStorage
/// <remarks/>
public event DeleteFolderCompletedEventHandler DeleteFolderCompleted;
/// <remarks/>
public event CheckFileServicesInstallationCompletedEventHandler CheckFileServicesInstallationCompleted;
/// <remarks/>
public event SetFolderWebDavRulesCompletedEventHandler SetFolderWebDavRulesCompleted;
/// <remarks/>
public event GetFolderWebDavRulesCompletedEventHandler GetFolderWebDavRulesCompleted;
/// <remarks/>
public event CheckFileServicesInstallationCompletedEventHandler CheckFileServicesInstallationCompleted;
/// <remarks/>
public event RenameFolderCompletedEventHandler RenameFolderCompleted;
/// <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)]
@ -309,53 +314,6 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckFileServicesInstallation", 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 CheckFileServicesInstallation()
{
object[] results = this.Invoke("CheckFileServicesInstallation", new object[0]);
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCheckFileServicesInstallation(System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CheckFileServicesInstallation", new object[0], callback, asyncState);
}
/// <remarks/>
public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void CheckFileServicesInstallationAsync()
{
this.CheckFileServicesInstallationAsync(null);
}
/// <remarks/>
public void CheckFileServicesInstallationAsync(object userState)
{
if ((this.CheckFileServicesInstallationOperationCompleted == null))
{
this.CheckFileServicesInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckFileServicesInstallationOperationCompleted);
}
this.InvokeAsync("CheckFileServicesInstallation", new object[0], this.CheckFileServicesInstallationOperationCompleted, userState);
}
private void OnCheckFileServicesInstallationOperationCompleted(object arg)
{
if ((this.CheckFileServicesInstallationCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CheckFileServicesInstallationCompleted(this, new CheckFileServicesInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <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)]
@ -465,6 +423,109 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckFileServicesInstallation", 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 CheckFileServicesInstallation()
{
object[] results = this.Invoke("CheckFileServicesInstallation", new object[0]);
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCheckFileServicesInstallation(System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CheckFileServicesInstallation", new object[0], callback, asyncState);
}
/// <remarks/>
public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void CheckFileServicesInstallationAsync()
{
this.CheckFileServicesInstallationAsync(null);
}
/// <remarks/>
public void CheckFileServicesInstallationAsync(object userState)
{
if ((this.CheckFileServicesInstallationOperationCompleted == null))
{
this.CheckFileServicesInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckFileServicesInstallationOperationCompleted);
}
this.InvokeAsync("CheckFileServicesInstallation", new object[0], this.CheckFileServicesInstallationOperationCompleted, userState);
}
private void OnCheckFileServicesInstallationOperationCompleted(object arg)
{
if ((this.CheckFileServicesInstallationCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CheckFileServicesInstallationCompleted(this, new CheckFileServicesInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <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)
{
object[] results = this.Invoke("RenameFolder", new object[] {
organizationId,
originalFolder,
newFolder});
return ((SystemFile)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginRenameFolder(string organizationId, string originalFolder, string newFolder, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("RenameFolder", new object[] {
organizationId,
originalFolder,
newFolder}, callback, asyncState);
}
/// <remarks/>
public SystemFile EndRenameFolder(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((SystemFile)(results[0]));
}
/// <remarks/>
public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder)
{
this.RenameFolderAsync(organizationId, originalFolder, newFolder, null);
}
/// <remarks/>
public void RenameFolderAsync(string organizationId, string originalFolder, string newFolder, object userState)
{
if ((this.RenameFolderOperationCompleted == null))
{
this.RenameFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRenameFolderOperationCompleted);
}
this.InvokeAsync("RenameFolder", new object[] {
organizationId,
originalFolder,
newFolder}, this.RenameFolderOperationCompleted, userState);
}
private void OnRenameFolderOperationCompleted(object arg)
{
if ((this.RenameFolderCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.RenameFolderCompleted(this, new RenameFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState)
{
@ -540,36 +601,6 @@ namespace WebsitePanel.Providers.EnterpriseStorage
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void DeleteFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CheckFileServicesInstallationCompletedEventHandler(object sender, CheckFileServicesInstallationCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CheckFileServicesInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal CheckFileServicesInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public bool Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void SetFolderWebDavRulesCompletedEventHandler(object sender, SetFolderWebDavRulesCompletedEventArgs e);
@ -629,4 +660,64 @@ namespace WebsitePanel.Providers.EnterpriseStorage
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CheckFileServicesInstallationCompletedEventHandler(object sender, CheckFileServicesInstallationCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CheckFileServicesInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal CheckFileServicesInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public bool Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void RenameFolderCompletedEventHandler(object sender, RenameFolderCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class RenameFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal RenameFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public SystemFile Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((SystemFile)(this.results[0]));
}
}
}
}

View file

@ -140,6 +140,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Ente
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.HostedSolution.Lync2013HP", "WebsitePanel.Providers.HostedSolution.Lync2013HP\WebsitePanel.Providers.HostedSolution.Lync2013HP.csproj", "{D92F6235-8E5D-47C1-B96A-A2BE40E17889}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Web.WebDav", "WebsitePanel.Providers.Web.WebDav\WebsitePanel.Providers.Web.WebDav.csproj", "{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -720,6 +722,16 @@ Global
{D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D92F6235-8E5D-47C1-B96A-A2BE40E17889}.Release|x86.ActiveCfg = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Debug|x86.ActiveCfg = Debug|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|Any CPU.Build.0 = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CE2DF3D7-D6FF-48FA-B2EA-7B836FCBF698}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View file

@ -170,5 +170,21 @@ namespace WebsitePanel.Server
throw;
}
}
[WebMethod, SoapHeader("settings")]
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder)
{
try
{
Log.WriteStart("'{0}' RenameFolder", ProviderSettings.ProviderName);
return EnterpriseStorageProvider.RenameFolder(organizationId, originalFolder, newFolder);
Log.WriteEnd("'{0}' RenameFolder", ProviderSettings.ProviderName);
}
catch (Exception ex)
{
Log.WriteError(String.Format("'{0}' RenameFolder", ProviderSettings.ProviderName), ex);
throw;
}
}
}
}

View file

@ -42,6 +42,8 @@ using WebsitePanel.Server.Utils;
using WebsitePanel.Providers.ResultObjects;
using WebsitePanel.Providers.WebAppGallery;
using WebsitePanel.Providers.Common;
using Microsoft.Web.Administration;
using Microsoft.Web.Management.Server;
namespace WebsitePanel.Server
{
@ -1621,5 +1623,21 @@ namespace WebsitePanel.Server
return WebProvider.CheckCertificate(webSite);
}
#endregion
#region Directory Browsing
[WebMethod, SoapHeader("settings")]
public bool GetDirectoryBrowseEnabled(string siteId)
{
return WebProvider.GetDirectoryBrowseEnabled(siteId);
}
[WebMethod, SoapHeader("settings")]
public void SetDirectoryBrowseEnabled(string siteId, bool enabled)
{
WebProvider.SetDirectoryBrowseEnabled(siteId, enabled);
}
#endregion
}
}

View file

@ -47,11 +47,19 @@
<WarningsAsErrors>618</WarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Web.Administration, Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.Deployment, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Web.PlatformInstaller, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\References\Microsoft\Microsoft.Web.PlatformInstaller.dll</HintPath>

View file

@ -30,7 +30,7 @@
<tr>
<td class="FormLabel150"><asp:Localize ID="locFolderName" runat="server" meta:resourcekey="locFolderName" Text="Folder Name:"></asp:Localize></td>
<td>
<asp:TextBox ID="txtFolderName" runat="server" CssClass="HugeTextBox200" ReadOnly="true"></asp:TextBox>
<asp:TextBox ID="txtFolderName" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireFolderName" runat="server" meta:resourcekey="valRequireFolderName" ControlToValidate="txtFolderName"
ErrorMessage="Enter Folder Name" ValidationGroup="EditFolder" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
<br />
@ -41,6 +41,13 @@
<td class="FormLabel150"><asp:Localize ID="locFolderUrl" runat="server" meta:resourcekey="locFolderUrl" Text="Folder Url:"></asp:Localize></td>
<td><asp:Label runat="server" ID="lblFolderUrl" /></td>
</tr>
<tr><td>&nbsp;</td></tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locDirectoryBrowsing" runat="server" meta:resourcekey="locDirectoryBrowsing" Text="Enable Directory Browsing:"></asp:Localize></td>
<td>
<asp:CheckBox id="chkDirectoryBrowsing" runat="server"></asp:CheckBox>
</td>
</tr>
<tr><td>&nbsp;</td></tr>
<tr>
<td colspan="2">
@ -50,14 +57,7 @@
</fieldset>
</tr>
<tr><td>&nbsp;</td></tr>
<tr>
<td class="FormLabel150" colspan="2"><asp:Localize ID="locNotes" runat="server" meta:resourcekey="locNotes" Text="Notes:"></asp:Localize></td>
</tr>
<tr>
<td colspan="2">
<asp:TextBox ID="txtNotes" runat="server" CssClass="TextBox200" Rows="4" TextMode="MultiLine"></asp:TextBox>
</td>
</tr>
</table>
<div class="FormFooterClean">

View file

@ -72,9 +72,10 @@ namespace WebsitePanel.Portal.ExchangeServer
var esPermissions = ES.Services.EnterpriseStorage.GetEnterpriseFolderPermissions(PanelRequest.ItemID,folder.Name);
chkDirectoryBrowsing.Checked = ES.Services.WebServers.GetDirectoryBrowseEnabled(PanelRequest.ItemID, folder.Url);
permissions.SetPermissions(esPermissions);
txtNotes.Text = folder.GetValue<string>("Notes");
}
catch (Exception ex)
{
@ -89,11 +90,33 @@ namespace WebsitePanel.Portal.ExchangeServer
try
{
bool redirectNeeded = false;
litFolderName.Text = txtFolderName.Text;
SystemFile folder = ES.Services.EnterpriseStorage.GetEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID);
// SystemFile folder = ES.Services.EnterpriseStorage.GetEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID);
SystemFile folder = new SystemFile();
ES.Services.EnterpriseStorage.SetEnterpriseFolderPermissions(PanelRequest.ItemID, folder.Name, permissions.GetPemissions());
if (PanelRequest.FolderID != txtFolderName.Text)
{
if (txtFolderName.Text.Contains("\\"))
{
throw new Exception("Wrong file name");
}
folder = ES.Services.EnterpriseStorage.RenameEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID, txtFolderName.Text);
redirectNeeded = true;
}
ES.Services.EnterpriseStorage.SetEnterpriseFolderPermissions(PanelRequest.ItemID, redirectNeeded ? folder.Name : PanelRequest.FolderID, permissions.GetPemissions());
ES.Services.WebServers.SetDirectoryBrowseEnabled(PanelRequest.ItemID, redirectNeeded ? folder.Url : lblFolderUrl.Text, chkDirectoryBrowsing.Checked);
if (redirectNeeded)
{
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders",
"ItemID=" + PanelRequest.ItemID));
}
messageBox.ShowSuccessMessage("ENTERPRISE_STORAGE_UPDATE_FOLDER_SETTINGS");
}

View file

@ -120,6 +120,24 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblFolderUrl;
/// <summary>
/// locDirectoryBrowsing 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 locDirectoryBrowsing;
/// <summary>
/// chkDirectoryBrowsing 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 chkDirectoryBrowsing;
/// <summary>
/// PermissionsPanel control.
/// </summary>
@ -147,24 +165,6 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EnterpriseStoragePermissions permissions;
/// <summary>
/// locNotes 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 locNotes;
/// <summary>
/// txtNotes 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.TextBox txtNotes;
/// <summary>
/// btnSave control.
/// </summary>

View file

@ -70,10 +70,10 @@ namespace WebsitePanel.Portal.ExchangeServer
{
int folderAvailable = foldersQuota.QuotaAvailable = tenantStats.AllocatedEnterpriseStorageFolders - tenantStats.CreatedEnterpriseStorageFolders;
if (folderAvailable <= 0)
{
btnAddFolder.Enabled = false;
}
//if (folderAvailable <= 0)
//{
// btnAddFolder.Enabled = false;
//}
}
}

View file

@ -162,6 +162,9 @@
<data name="headerAddAccounts.Text" xml:space="preserve">
<value>Organization Accounts</value>
</data>
<data name="locDirectoryBrowsing" xml:space="preserve">
<value>Enable Directory Browsing:</value>
</data>
<data name="locIncludeSearch.Text" xml:space="preserve">
<value>Include in search:</value>
</data>

View file

@ -24,7 +24,7 @@
<ItemStyle Width="60%" Wrap="false">
</ItemStyle>
<ItemTemplate>
<asp:Literal ID="litAccount" runat="server" Text='<%# Eval("Account") %>'></asp:Literal>
<asp:Literal ID="litAccount" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField meta:resourcekey="gvPermissionsAccess" HeaderText="gvPermissionsAccess">

View file

@ -102,11 +102,13 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
permissions.Add(new ESPermission
{
Account = account.AccountName,
DisplayName = account.DisplayName,
Access = "Read-Only",
});
}
BindAccounts(permissions.ToArray(), true);
}
public string GetAccountImage(int accountTypeId)
@ -207,6 +209,7 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
ESPermission permission = new ESPermission();
permission.Account = (string)gvPermissions.DataKeys[i][0];
permission.Access = ((Literal)row.FindControl("litAccess")).Text;
permission.DisplayName = ((Literal)row.FindControl("litAccount")).Text;
if (state == SelectedState.All ||
(state == SelectedState.Selected && chkSelect.Checked) ||
@ -231,12 +234,14 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
{
accounts.Add(new ExchangeAccount
{
AccountName = (string)gvPopupAccounts.DataKeys[i][0]
AccountName = (string)gvPopupAccounts.DataKeys[i][0],
DisplayName = ((Literal)row.FindControl("litDisplayName")).Text
});
}
}
return accounts;
}
protected void cmdSearch_Click(object sender, ImageClickEventArgs e)