diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
index dec560e2..5f17b245 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs
@@ -261,16 +261,16 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorageController.AddWebDavDirectory(packageId, usersDomain, org.OrganizationId, homePath);
- int osId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
- bool enableHardQuota = (esSesstings["enablehardquota"] != null)
- ? bool.Parse(esSesstings["enablehardquota"])
- : false;
+ //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);
- }
+ //if (enableHardQuota && osId != 0 && OperatingSystemController.CheckFileServicesInstallation(osId))
+ //{
+ // FilesController.SetFolderQuota(packageId, Path.Combine(usersHome, org.OrganizationId),
+ // locationDrive, Quotas.ENTERPRISESTORAGE_DISKSTORAGESPACE);
+ //}
}
}
catch (Exception ex)
@@ -579,11 +579,6 @@ namespace WebsitePanel.EnterpriseServer
dir.HttpErrors = null;
dir.MimeMaps = null;
- int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Web);
-
- if (serviceId == -1)
- return serviceId;
-
// create directory
WebServer web = GetWebServer(packageId);
@@ -867,6 +862,11 @@ namespace WebsitePanel.EnterpriseServer
cnfg.ProviderSettings.ProviderName = webProvider.DisplayName;
cnfg.ProviderSettings.ProviderType = webProvider.ProviderType;
+ //// set service settings
+ //StringDictionary serviceSettings = ServerController.GetServiceSettings(serviceId);
+ //foreach (string key in serviceSettings.Keys)
+ // cnfg.ProviderSettings.Settings[key] = serviceSettings[key];
+
ServiceProviderProxy.ServerInit(web, cnfg, package.ServerId);
return web;
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs
index 1b89f3dc..f07a01bf 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs
@@ -783,6 +783,7 @@ namespace WebsitePanel.EnterpriseServer
// Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
UpdatePackageHardQuota(package.PackageId);
+ UpdateESHardQuota(package.PackageId);
DataProvider.DistributePackageServices(SecurityContext.User.UserId, package.PackageId);
}
@@ -980,6 +981,7 @@ namespace WebsitePanel.EnterpriseServer
// Added By Haya
UpdatePackageHardQuota(packageId);
+ UpdateESHardQuota(packageId);
// save package item
return AddPackageItem(homeFolder);
@@ -1019,6 +1021,33 @@ namespace WebsitePanel.EnterpriseServer
}
+ public static void UpdateESHardQuota(int packageId)
+ {
+ 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);
+
+ 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, usersHome, locationDrive, Quotas.ENTERPRISESTORAGE_DISKSTORAGESPACE);
+ }
+ }
+ }
+
#endregion
#region Package Add-ons
@@ -1079,6 +1108,7 @@ namespace WebsitePanel.EnterpriseServer
// Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
UpdatePackageHardQuota(addon.PackageId);
+ UpdateESHardQuota(addon.PackageId);
return result;
}
@@ -1108,7 +1138,7 @@ namespace WebsitePanel.EnterpriseServer
// Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
UpdatePackageHardQuota(addon.PackageId);
-
+ UpdateESHardQuota(addon.PackageId);
return result;
}
@@ -1119,12 +1149,14 @@ namespace WebsitePanel.EnterpriseServer
| DemandAccount.IsReseller);
if (accountCheck < 0) return accountCheck;
-
- // Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
- UpdatePackageHardQuota(GetPackageAddon(packageAddonId).PackageId);
+ var packageId = GetPackageAddon(packageAddonId).PackageId;
DataProvider.DeletePackageAddon(SecurityContext.User.UserId, packageAddonId);
+ // Update the Hard quota on home folder in case it was enabled and in case there was a change in disk space
+ UpdatePackageHardQuota(packageId);
+ UpdateESHardQuota(packageId);
+
return 0;
}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2012/Windows2012.cs
index 3542555e..238cbc0c 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2012/Windows2012.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2012/Windows2012.cs
@@ -49,6 +49,7 @@ using System.Management.Automation.Runspaces;
using WebsitePanel.Providers.Common;
using WebsitePanel.Providers;
using WebsitePanel.Providers.HostedSolution;
+using System.Runtime.InteropServices;
namespace WebsitePanel.Providers.OS
@@ -80,28 +81,34 @@ namespace WebsitePanel.Providers.OS
Log.WriteInfo("ShareNameDrive : {0}", shareNameDrive);
Log.WriteInfo("QuotaLimit : {0}", quotaLimit);
+ string path = Path.Combine(shareNameDrive + @":\", folderPath);
+ var quota = CalculateQuota(quotaLimit);
+
Runspace runSpace = null;
try
{
runSpace = OpenRunspace();
- string[] splits = folderPath.Split('\\');
- if (splits.Length > 0)
+
+ if (path.IndexOfAny(Path.GetInvalidPathChars()) == -1)
{
- string sharePath = String.Empty;
+ if (!FileUtils.DirectoryExists(path))
+ FileUtils.CreateDirectory(path);
- if (splits.Length > 4)
+ switch (mode)
{
- // Form the share physicalPath
- sharePath = shareNameDrive + @":\" + splits[3];
-
- if (splits.Length == 5 && !quotaLimit.Equals(String.Empty))
- {
- Command cmd = new Command("Set-FsrmQuota");
- cmd.Parameters.Add("Path", sharePath + @"\" + splits[4]);
- cmd.Parameters.Add("Size", quotaLimit);
- cmd.Parameters.Add("Confirm", true);
- ExecuteShellCommand(runSpace, cmd, false);
- }
+ //deleting old quota and creating new one
+ case 0:
+ {
+ RemoveOldQuotaOnFolder(runSpace, path);
+ ChangeQuotaOnFolder(runSpace, "New-FsrmQuota", path, quota);
+ break;
+ }
+ //modifying folder quota
+ case 1:
+ {
+ ChangeQuotaOnFolder(runSpace, "Set-FsrmQuota", path, quota);
+ break;
+ }
}
}
}
@@ -112,13 +119,60 @@ namespace WebsitePanel.Providers.OS
}
finally
{
-
CloseRunspace(runSpace);
}
Log.WriteEnd("SetQuotaLimitOnFolder");
}
+ public UInt64 CalculateQuota(string quota)
+ {
+ UInt64 OneKb = 1024;
+ UInt64 OneMb = OneKb * 1024;
+ UInt64 OneGb = OneMb * 1024;
+
+ UInt64 result = 0;
+
+ // Quota Unit
+ if (quota.ToLower().Contains("gb"))
+ {
+ result = UInt64.Parse(quota.ToLower().Replace("gb", "")) * OneGb;
+ }
+ else if (quota.ToLower().Contains("mb"))
+ {
+ result = UInt64.Parse(quota.ToLower().Replace("mb", "")) * OneMb;
+ }
+ else
+ {
+ result = UInt64.Parse(quota.ToLower().Replace("kb", "")) * OneKb;
+ }
+
+ return result;
+ }
+
+ public void RemoveOldQuotaOnFolder(Runspace runSpace, string path)
+ {
+ try
+ {
+ runSpace = OpenRunspace();
+ if (!string.IsNullOrEmpty(path))
+ {
+ Command cmd = new Command("Remove-FsrmQuota");
+ cmd.Parameters.Add("Path", path);
+ ExecuteShellCommand(runSpace, cmd, false);
+ }
+ }
+ catch { /* do nothing */ }
+ }
+
+ public void ChangeQuotaOnFolder(Runspace runSpace, string command, string path, UInt64 quota)
+ {
+ Command cmd = new Command(command);
+ cmd.Parameters.Add("Path", path);
+ cmd.Parameters.Add("Size", quota);
+ ExecuteShellCommand(runSpace, cmd, false);
+ }
+
#region PowerShell integration
private static InitialSessionState session = null;
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons.skin b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons.skin
index 4d334ddb..2e2c3967 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons.skin
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Icons.skin
@@ -94,4 +94,4 @@ Default skin template. The following skins are provided as examples only.
<%-- Enterprise Storage Icons --%>
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/spaces16.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/spaces16.png
new file mode 100644
index 00000000..9885c54b
Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/spaces16.png differ
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/spaces48.png b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/spaces48.png
new file mode 100644
index 00000000..4e200101
Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Themes/Default/Images/Exchange/spaces48.png differ