merge commmit

This commit is contained in:
robvde 2013-11-12 23:19:33 +04:00
commit 40d5218ec2
12 changed files with 582 additions and 100 deletions

View file

@ -85,6 +85,12 @@ namespace WebsitePanel.EnterpriseServer
private System.Threading.SendOrPostCallback RenameEnterpriseFolderOperationCompleted; private System.Threading.SendOrPostCallback RenameEnterpriseFolderOperationCompleted;
private System.Threading.SendOrPostCallback CreateEnterpriseStorageOperationCompleted;
private System.Threading.SendOrPostCallback CheckEnterpriseStorageInitializationOperationCompleted;
private System.Threading.SendOrPostCallback CheckUsersDomainExistsOperationCompleted;
/// <remarks/> /// <remarks/>
public esEnterpriseStorage() public esEnterpriseStorage()
{ {
@ -121,6 +127,15 @@ namespace WebsitePanel.EnterpriseServer
/// <remarks/> /// <remarks/>
public event RenameEnterpriseFolderCompletedEventHandler RenameEnterpriseFolderCompleted; public event RenameEnterpriseFolderCompletedEventHandler RenameEnterpriseFolderCompleted;
/// <remarks/>
public event CreateEnterpriseStorageCompletedEventHandler CreateEnterpriseStorageCompleted;
/// <remarks/>
public event CheckEnterpriseStorageInitializationCompletedEventHandler CheckEnterpriseStorageInitializationCompleted;
/// <remarks/>
public event CheckUsersDomainExistsCompletedEventHandler CheckUsersDomainExistsCompleted;
/// <remarks/> /// <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)] [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) public bool CheckFileServicesInstallation(int serviceId)
@ -656,6 +671,160 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CreateEnterpriseStorage", 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 CreateEnterpriseStorage(int packageId, int itemId)
{
object[] results = this.Invoke("CreateEnterpriseStorage", new object[] {
packageId,
itemId});
return ((ResultObject)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCreateEnterpriseStorage(int packageId, int itemId, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CreateEnterpriseStorage", new object[] {
packageId,
itemId}, callback, asyncState);
}
/// <remarks/>
public ResultObject EndCreateEnterpriseStorage(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((ResultObject)(results[0]));
}
/// <remarks/>
public void CreateEnterpriseStorageAsync(int packageId, int itemId)
{
this.CreateEnterpriseStorageAsync(packageId, itemId, null);
}
/// <remarks/>
public void CreateEnterpriseStorageAsync(int packageId, int itemId, object userState)
{
if ((this.CreateEnterpriseStorageOperationCompleted == null))
{
this.CreateEnterpriseStorageOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateEnterpriseStorageOperationCompleted);
}
this.InvokeAsync("CreateEnterpriseStorage", new object[] {
packageId,
itemId}, this.CreateEnterpriseStorageOperationCompleted, userState);
}
private void OnCreateEnterpriseStorageOperationCompleted(object arg)
{
if ((this.CreateEnterpriseStorageCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CreateEnterpriseStorageCompleted(this, new CreateEnterpriseStorageCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckEnterpriseStorageInitialization" +
"", 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 CheckEnterpriseStorageInitialization(int packageId, int itemId)
{
object[] results = this.Invoke("CheckEnterpriseStorageInitialization", new object[] {
packageId,
itemId});
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCheckEnterpriseStorageInitialization(int packageId, int itemId, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CheckEnterpriseStorageInitialization", new object[] {
packageId,
itemId}, callback, asyncState);
}
/// <remarks/>
public bool EndCheckEnterpriseStorageInitialization(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void CheckEnterpriseStorageInitializationAsync(int packageId, int itemId)
{
this.CheckEnterpriseStorageInitializationAsync(packageId, itemId, null);
}
/// <remarks/>
public void CheckEnterpriseStorageInitializationAsync(int packageId, int itemId, object userState)
{
if ((this.CheckEnterpriseStorageInitializationOperationCompleted == null))
{
this.CheckEnterpriseStorageInitializationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckEnterpriseStorageInitializationOperationCompleted);
}
this.InvokeAsync("CheckEnterpriseStorageInitialization", new object[] {
packageId,
itemId}, this.CheckEnterpriseStorageInitializationOperationCompleted, userState);
}
private void OnCheckEnterpriseStorageInitializationOperationCompleted(object arg)
{
if ((this.CheckEnterpriseStorageInitializationCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CheckEnterpriseStorageInitializationCompleted(this, new CheckEnterpriseStorageInitializationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CheckUsersDomainExists", 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 CheckUsersDomainExists(int itemId)
{
object[] results = this.Invoke("CheckUsersDomainExists", new object[] {
itemId});
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCheckUsersDomainExists(int itemId, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CheckUsersDomainExists", new object[] {
itemId}, callback, asyncState);
}
/// <remarks/>
public bool EndCheckUsersDomainExists(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void CheckUsersDomainExistsAsync(int itemId)
{
this.CheckUsersDomainExistsAsync(itemId, null);
}
/// <remarks/>
public void CheckUsersDomainExistsAsync(int itemId, object userState)
{
if ((this.CheckUsersDomainExistsOperationCompleted == null))
{
this.CheckUsersDomainExistsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckUsersDomainExistsOperationCompleted);
}
this.InvokeAsync("CheckUsersDomainExists", new object[] {
itemId}, this.CheckUsersDomainExistsOperationCompleted, userState);
}
private void OnCheckUsersDomainExistsOperationCompleted(object arg)
{
if ((this.CheckUsersDomainExistsCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.CheckUsersDomainExistsCompleted(this, new CheckUsersDomainExistsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/> /// <remarks/>
public new void CancelAsync(object userState) public new void CancelAsync(object userState)
{ {
@ -962,4 +1131,94 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
} }
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CreateEnterpriseStorageCompletedEventHandler(object sender, CreateEnterpriseStorageCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CreateEnterpriseStorageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal CreateEnterpriseStorageCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public ResultObject Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((ResultObject)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
public delegate void CheckEnterpriseStorageInitializationCompletedEventHandler(object sender, CheckEnterpriseStorageInitializationCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CheckEnterpriseStorageInitializationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal CheckEnterpriseStorageInitializationCompletedEventArgs(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 CheckUsersDomainExistsCompletedEventHandler(object sender, CheckUsersDomainExistsCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class CheckUsersDomainExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal CheckUsersDomainExistsCompletedEventArgs(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]));
}
}
}
} }

View file

@ -53,6 +53,21 @@ namespace WebsitePanel.EnterpriseServer
{ {
#region Public Methods #region Public Methods
public static bool CheckEnterpriseStorageInitialization(int packageId, int itemId)
{
return CheckEnterpriseStorageInitializationInternal(packageId, itemId);
}
public static ResultObject CreateEnterpriseStorage(int packageId, int itemId)
{
return CreateEnterpriseStorageInternal(packageId, itemId);
}
public static ResultObject DeleteEnterpriseStorage(int packageId, int itemId)
{
return DeleteEnterpriseStorageInternal(packageId,itemId);
}
public static SystemFile[] GetFolders(int itemId) public static SystemFile[] GetFolders(int itemId)
{ {
return GetFoldersInternal(itemId); return GetFoldersInternal(itemId);
@ -63,6 +78,11 @@ namespace WebsitePanel.EnterpriseServer
return GetFolderInternal(itemId, folderName); return GetFolderInternal(itemId, folderName);
} }
public static SystemFile GetFolder(int itemId)
{
return GetFolder(itemId, string.Empty);
}
public static ResultObject CreateFolder(int itemId) public static ResultObject CreateFolder(int itemId)
{ {
return CreateFolder(itemId, string.Empty); return CreateFolder(itemId, string.Empty);
@ -114,8 +134,169 @@ namespace WebsitePanel.EnterpriseServer
return RenameFolderInternal(itemId, oldFolder, newFolder); return RenameFolderInternal(itemId, oldFolder, newFolder);
} }
public static bool CheckUsersDomainExists(int itemId)
{
return CheckUsersDomainExistsInternal(itemId);
}
#endregion #endregion
protected static bool CheckUsersDomainExistsInternal(int itemId)
{
Organization org = OrganizationController.GetOrganization(itemId);
return CheckUsersDomainExistsInternal(itemId, org.PackageId);
}
protected static bool CheckUsersDomainExistsInternal(int itemId, int packageId)
{
int webServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Web);
var esServiceId = GetEnterpriseStorageServiceID(packageId);
StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
string usersDomain = esSesstings["UsersDomain"];
WebServer web = new WebServer();
ServiceProviderProxy.Init(web, webServiceId);
if (web.SiteExists(usersDomain))
return true;
return false;
}
protected static bool CheckEnterpriseStorageInitializationInternal(int packageId, int itemId)
{
bool checkResult = true;
var esServiceId = GetEnterpriseStorageServiceID(packageId);
int webServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Web);
Organization org = OrganizationController.GetOrganization(itemId);
if (org == null)
{
return false;
}
//root folder not created
if (GetFolder(itemId) == null)
{
checkResult = false;
}
//checking if virtual directory is created
StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
string usersDomain = esSesstings["UsersDomain"];
WebServer web = new WebServer();
ServiceProviderProxy.Init(web, webServiceId);
if (!web.VirtualDirectoryExists(usersDomain, org.OrganizationId))
{
checkResult = false;
}
return checkResult;
}
protected static ResultObject CreateEnterpriseStorageInternal(int packageId, int itemId)
{
ResultObject result = TaskManager.StartResultTask<ResultObject>("ORGANIZATION", "CREATE_ORGANIZATION_ENTERPRISE_STORAGE", itemId, packageId);
try
{
int esServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.EnterpriseStorage);
if (esServiceId != 0)
{
StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
Organization org = OrganizationController.GetOrganization(itemId);
string usersHome = esSesstings["UsersHome"];
string usersDomain = esSesstings["UsersDomain"];
string locationDrive = esSesstings["LocationDrive"];
string homePath = string.Format("{0}:\\{1}", locationDrive, usersHome);
EnterpriseStorageController.CreateFolder(itemId);
WebServerController.AddWebDavDirectory(packageId, usersDomain, org.OrganizationId, homePath);
int osId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
bool enableHardQuota = (esSesstings["enablehardquota"] != null)
? bool.Parse(esSesstings["enablehardquota"])
: false;
if (enableHardQuota && osId != 0 && OperatingSystemController.CheckFileServicesInstallation(osId))
{
FilesController.SetFolderQuota(packageId, Path.Combine(usersHome, org.OrganizationId),
locationDrive, Quotas.ENTERPRISESTORAGE_DISKSTORAGESPACE);
}
}
}
catch (Exception ex)
{
result.AddError("ENTERPRISE_STORAGE_CREATE_FOLDER", ex);
}
finally
{
if (!result.IsSuccess)
{
TaskManager.CompleteResultTask(result);
}
else
{
TaskManager.CompleteResultTask();
}
}
return result;
}
protected static ResultObject DeleteEnterpriseStorageInternal(int packageId, int itemId)
{
ResultObject result = TaskManager.StartResultTask<ResultObject>("ORGANIZATION", "CLEANUP_ORGANIZATION_ENTERPRISE_STORAGE", itemId, packageId);
try
{
int esId = PackageController.GetPackageServiceId(packageId, ResourceGroups.EnterpriseStorage);
Organization org = OrganizationController.GetOrganization(itemId);
if (esId != 0)
{
StringDictionary esSesstings = ServerController.GetServiceSettings(esId);
string usersDomain = esSesstings["UsersDomain"];
WebServerController.DeleteWebDavDirectory(packageId, usersDomain, org.OrganizationId);
EnterpriseStorageController.DeleteFolder(itemId);
}
}
catch (Exception ex)
{
result.AddError("ENTERPRISE_STORAGE_CLEANUP", ex);
}
finally
{
if (!result.IsSuccess)
{
TaskManager.CompleteResultTask(result);
}
else
{
TaskManager.CompleteResultTask();
}
}
return result;
}
private static EnterpriseStorage GetEnterpriseStorage(int serviceId) private static EnterpriseStorage GetEnterpriseStorage(int serviceId)
{ {
@ -166,7 +347,6 @@ namespace WebsitePanel.EnterpriseServer
} }
} }
protected static SystemFile RenameFolderInternal(int itemId, string oldFolder, string newFolder) protected static SystemFile RenameFolderInternal(int itemId, string oldFolder, string newFolder)
{ {
try try
@ -311,6 +491,8 @@ namespace WebsitePanel.EnterpriseServer
return null; return null;
} }
if (CheckUsersDomainExistsInternal(itemId, org.PackageId))
{
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId)); EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
List<SystemFile> folders = es.GetFolders(org.OrganizationId).Where(x => x.Name.Contains(filterValue)).ToList(); List<SystemFile> folders = es.GetFolders(org.OrganizationId).Where(x => x.Name.Contains(filterValue)).ToList();
@ -327,6 +509,7 @@ namespace WebsitePanel.EnterpriseServer
result.RecordsCount = folders.Count; result.RecordsCount = folders.Count;
result.PageItems = folders.Skip(startRow).Take(maximumRows).ToArray(); result.PageItems = folders.Skip(startRow).Take(maximumRows).ToArray();
} }
}
catch { /*skip exception*/} catch { /*skip exception*/}
return result; return result;

View file

@ -418,36 +418,6 @@ namespace WebsitePanel.EnterpriseServer
}; };
PackageController.AddPackageItem(orgDomain); PackageController.AddPackageItem(orgDomain);
//Create Enterprise storage
int esServiceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.EnterpriseStorage);
if (esServiceId != 0)
{
StringDictionary esSesstings = ServerController.GetServiceSettings(esServiceId);
string usersHome = esSesstings["UsersHome"];
string usersDomain = esSesstings["UsersDomain"];
string locationDrive = esSesstings["LocationDrive"];
string homePath = string.Format("{0}:\\{1}",locationDrive, usersHome);
EnterpriseStorageController.CreateFolder(itemId);
WebServerController.AddWebDavDirectory(packageId, usersDomain, organizationId, homePath);
int osId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
bool enableHardQuota = (esSesstings["enablehardquota"] != null)
? bool.Parse(esSesstings["enablehardquota"])
: false;
if (enableHardQuota && osId != 0 && OperatingSystemController.CheckFileServicesInstallation(osId))
{
FilesController.SetFolderQuota(packageId, Path.Combine(usersHome, organizationId),
locationDrive, Quotas.ENTERPRISESTORAGE_DISKSTORAGESPACE);
}
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -746,24 +716,10 @@ namespace WebsitePanel.EnterpriseServer
} }
//Cleanup Enterprise storage //Cleanup Enterprise storage
int esId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.EnterpriseStorage);
if (esId != 0) if (EnterpriseStorageController.DeleteEnterpriseStorage(org.PackageId, itemId).IsSuccess == false)
{
StringDictionary esSesstings = ServerController.GetServiceSettings(esId);
string usersDomain = esSesstings["UsersDomain"];
try
{
WebServerController.DeleteWebDavDirectory(org.PackageId, usersDomain, org.OrganizationId);
EnterpriseStorageController.DeleteFolder(itemId);
}
catch (Exception ex)
{ {
successful = false; successful = false;
TaskManager.WriteError(ex);
}
} }
//Cleanup Exchange //Cleanup Exchange

View file

@ -4632,8 +4632,6 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and
return false; return false;
} }
siteId = RemoveProtocolFromUrl(siteId);
var webServer = GetWebServer(GetWebServerServiceID(org.PackageId)); var webServer = GetWebServer(GetWebServerServiceID(org.PackageId));
return webServer.GetDirectoryBrowseEnabled(siteId); return webServer.GetDirectoryBrowseEnabled(siteId);
@ -4648,23 +4646,11 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and
return; return;
} }
siteId = RemoveProtocolFromUrl(siteId);
var webServer = GetWebServer(GetWebServerServiceID(org.PackageId)); var webServer = GetWebServer(GetWebServerServiceID(org.PackageId));
webServer.SetDirectoryBrowseEnabled(siteId, enabled); webServer.SetDirectoryBrowseEnabled(siteId, enabled);
} }
private static string RemoveProtocolFromUrl(string input)
{
if (input.Contains("//"))
{
return System.Text.RegularExpressions.Regex.Split(input, "//")[1];
}
return input;
}
#endregion #endregion
private static int GetWebServerServiceID(int packageId) private static int GetWebServerServiceID(int packageId)

View file

@ -116,5 +116,23 @@ namespace WebsitePanel.EnterpriseServer
{ {
return EnterpriseStorageController.RenameFolder(itemId, oldName, newName); return EnterpriseStorageController.RenameFolder(itemId, oldName, newName);
} }
[WebMethod]
public ResultObject CreateEnterpriseStorage(int packageId, int itemId)
{
return EnterpriseStorageController.CreateEnterpriseStorage(packageId, itemId);
}
[WebMethod]
public bool CheckEnterpriseStorageInitialization(int packageId, int itemId)
{
return EnterpriseStorageController.CheckEnterpriseStorageInitialization(packageId, itemId);
}
[WebMethod]
public bool CheckUsersDomainExists(int itemId)
{
return EnterpriseStorageController.CheckUsersDomainExists(itemId);
}
} }
} }

View file

@ -100,7 +100,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
public SystemFile GetFolder(string organizationId, string folderName) public SystemFile GetFolder(string organizationId, string folderName)
{ {
string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folderName); string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", LocationDrive, UsersHome, organizationId, folderName);
SystemFile folder = new SystemFile(); SystemFile folder = null;
if (Directory.Exists(fullName)) if (Directory.Exists(fullName))
{ {

View file

@ -3774,18 +3774,34 @@ namespace WebsitePanel.Providers.Web
#region Directory Browsing #region Directory Browsing
public override bool GetDirectoryBrowseEnabled(string siteId) public override bool GetDirectoryBrowseEnabled(string siteId)
{
var uri = new Uri(siteId);
var host = uri.Host;
var site = uri.Host + uri.PathAndQuery;
if (SiteExists(host))
{ {
using (ServerManager srvman = webObjectsSvc.GetServerManager()) using (ServerManager srvman = webObjectsSvc.GetServerManager())
{ {
var enabled = dirBrowseSvc.GetDirectoryBrowseSettings(srvman, siteId)[DirectoryBrowseGlobals.Enabled]; var enabled = dirBrowseSvc.GetDirectoryBrowseSettings(srvman, site)[DirectoryBrowseGlobals.Enabled];
return enabled != null ? (bool)enabled : false; return enabled != null ? (bool)enabled : false;
} }
} }
return false;
}
public override void SetDirectoryBrowseEnabled(string siteId, bool enabled) public override void SetDirectoryBrowseEnabled(string siteId, bool enabled)
{ {
dirBrowseSvc.SetDirectoryBrowseEnabled(siteId, enabled); var uri = new Uri(siteId);
var host = uri.Host;
var site = uri.Host + uri.PathAndQuery;
if (SiteExists(host))
{
dirBrowseSvc.SetDirectoryBrowseEnabled(site, enabled);
}
} }

View file

@ -99,6 +99,9 @@ namespace WebsitePanel.Providers.Web
} }
public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder) public WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder)
{
var rules = new List<WebDavFolderRule>();
try
{ {
using (ServerManager serverManager = new ServerManager()) using (ServerManager serverManager = new ServerManager())
{ {
@ -108,19 +111,17 @@ namespace WebsitePanel.Providers.Web
ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection(); ConfigurationElementCollection authoringRulesCollection = authoringRulesSection.GetCollection();
var rules = new List<WebDavFolderRule>();
try
{
foreach (var rule in authoringRulesCollection) foreach (var rule in authoringRulesCollection)
{ {
rules.Add(rule.ToWebDavFolderRule()); rules.Add(rule.ToWebDavFolderRule());
} }
} }
}
catch { } catch { }
return rules.ToArray(); return rules.ToArray();
} }
}
public bool DeleteAllWebDavRules(string organizationId, string folder) public bool DeleteAllWebDavRules(string organizationId, string folder)

View file

@ -5358,5 +5358,7 @@
</data> </data>
<data name="ResourceGroup.RDS" xml:space="preserve"> <data name="ResourceGroup.RDS" xml:space="preserve">
<value>Remote Desktop Services</value> <value>Remote Desktop Services</value>
<data name="Warning.WEB_SITE_IS_NOT_CREATED" xml:space="preserve">
<value>Website is not created</value>
</data> </data>
</root> </root>

View file

@ -35,6 +35,18 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
public partial class EnterpriseStorageCreateFolder : WebsitePanelModuleBase public partial class EnterpriseStorageCreateFolder : WebsitePanelModuleBase
{ {
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (!ES.Services.EnterpriseStorage.CheckUsersDomainExists(PanelRequest.ItemID))
{
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders",
"ItemID=" + PanelRequest.ItemID));
}
}
}
protected void btnCreate_Click(object sender, EventArgs e) protected void btnCreate_Click(object sender, EventArgs e)
{ {
@ -42,6 +54,21 @@ namespace WebsitePanel.Portal.ExchangeServer
return; return;
try try
{ {
foreach (var invalidChar in System.IO.Path.GetInvalidFileNameChars())
{
if (txtFolderName.Text.Contains(invalidChar.ToString()))
{
messageBox.ShowErrorMessage("FILES_CREATE_FILE");
return;
}
}
if (!ES.Services.EnterpriseStorage.CheckEnterpriseStorageInitialization(PanelSecurity.PackageId, PanelRequest.ItemID))
{
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);
if (!result.IsSuccess && result.ErrorCodes.Count > 0) if (!result.IsSuccess && result.ErrorCodes.Count > 0)

View file

@ -49,6 +49,12 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
if (!IsPostBack) if (!IsPostBack)
{ {
if (!ES.Services.EnterpriseStorage.CheckUsersDomainExists(PanelRequest.ItemID))
{
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "enterprisestorage_folders",
"ItemID=" + PanelRequest.ItemID));
}
BindSettings(); BindSettings();
} }
} }
@ -92,25 +98,44 @@ namespace WebsitePanel.Portal.ExchangeServer
{ {
bool redirectNeeded = false; bool redirectNeeded = false;
string fileName = PanelRequest.FolderID;
string fileUrl = lblFolderUrl.Text;
litFolderName.Text = txtFolderName.Text; litFolderName.Text = txtFolderName.Text;
// SystemFile folder = ES.Services.EnterpriseStorage.GetEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID); SystemFile folder = null;
SystemFile folder = new SystemFile();
if (!ES.Services.EnterpriseStorage.CheckEnterpriseStorageInitialization(PanelSecurity.PackageId, PanelRequest.ItemID))
{
ES.Services.EnterpriseStorage.CreateEnterpriseStorage(PanelSecurity.PackageId, PanelRequest.ItemID);
}
//File is renaming
if (PanelRequest.FolderID != txtFolderName.Text) if (PanelRequest.FolderID != txtFolderName.Text)
{ {
if (txtFolderName.Text.Contains("\\")) //check if filename is correct
foreach (var invalidChar in System.IO.Path.GetInvalidFileNameChars())
{ {
throw new Exception("Wrong file name"); if (txtFolderName.Text.Contains(invalidChar.ToString()))
{
messageBox.ShowErrorMessage("FILES_RENAME_FILE");
return;
}
} }
folder = ES.Services.EnterpriseStorage.RenameEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID, txtFolderName.Text); folder = ES.Services.EnterpriseStorage.RenameEnterpriseFolder(PanelRequest.ItemID, PanelRequest.FolderID, txtFolderName.Text);
// file is renamed - new name and url
fileName = folder.Name;
fileUrl = folder.Url;
redirectNeeded = true; redirectNeeded = true;
} }
ES.Services.EnterpriseStorage.SetEnterpriseFolderPermissions(PanelRequest.ItemID, redirectNeeded ? folder.Name : PanelRequest.FolderID, permissions.GetPemissions()); ES.Services.EnterpriseStorage.SetEnterpriseFolderPermissions(PanelRequest.ItemID, fileName, permissions.GetPemissions());
ES.Services.WebServers.SetDirectoryBrowseEnabled(PanelRequest.ItemID, redirectNeeded ? folder.Url : lblFolderUrl.Text, chkDirectoryBrowsing.Checked); ES.Services.WebServers.SetDirectoryBrowseEnabled(PanelRequest.ItemID, fileUrl, chkDirectoryBrowsing.Checked);
if (redirectNeeded) if (redirectNeeded)
{ {

View file

@ -40,9 +40,18 @@ namespace WebsitePanel.Portal.ExchangeServer
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
if (!IsPostBack) if (!IsPostBack)
{
if (ES.Services.EnterpriseStorage.CheckUsersDomainExists(PanelRequest.ItemID))
{ {
BindEnterpriseStorageStats(); BindEnterpriseStorageStats();
} }
else
{
btnAddFolder.Enabled = false;
messageBox.ShowWarningMessage("WEB_SITE_IS_NOT_CREATED");
}
}
} }
public string GetFolderEditUrl(string folderName) public string GetFolderEditUrl(string folderName)