diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql
index 099ffa54..844b8a6f 100644
--- a/WebsitePanel/Database/update_db.sql
+++ b/WebsitePanel/Database/update_db.sql
@@ -472,3 +472,19 @@ UPDATE [dbo].[Providers] SET [DisableAutoDiscovery] = NULL WHERE [DisplayName] =
END
GO
+IF NOT EXISTS (SELECT * FROM [dbo].[ResourceGroups] WHERE [GroupName] = 'Enterprise Storage')
+BEGIN
+INSERT [dbo].[ResourceGroups] ([GroupID], [GroupName], [GroupOrder], [GroupController], [ShowGroup]) VALUES (44, N'EnterpriseStorage', 25, N'WebsitePanel.EnterpriseServer.EnterpriseStorageController', 1)
+END
+GO
+
+IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Enterprise Storage Windows 2012')
+BEGIN
+INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES(600, 44, N'EnterpriseStorage2012', N'Enterprise Storage Windows 2012', N'WebsitePanel.Providers.EnterpriseStorage.Windows2012, WebsitePanel.Providers.EnterpriseStorage.Windows2012', N'EnterpriseStorage', 1)
+END
+ELSE
+BEGIN
+UPDATE [dbo].[Providers] SET [DisableAutoDiscovery] = NULL WHERE [DisplayName] = 'Enterprise Storage Windows 2012'
+END
+GO
+
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs
new file mode 100644
index 00000000..04c3d31b
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/EnterpriseStorageProxy.cs
@@ -0,0 +1,36 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.6400
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+//
+// This source code was auto-generated by wsdl, Version=2.0.50727.3038.
+//
+namespace WebsitePanel.EnterpriseServer {
+ using System.Xml.Serialization;
+ using System.Web.Services;
+ using System.ComponentModel;
+ using System.Web.Services.Protocols;
+ using System;
+ using System.Diagnostics;
+
+
+ ///
+ // CODEGEN: No methods were found in the WSDL for this protocol.
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Web.Services.WebServiceBindingAttribute(Name="esEnterpriseStorageSoap", Namespace="http://smbsaas/websitepanel/enterpriseserver")]
+ public partial class esEnterpriseStorage : Microsoft.Web.Services3.WebServicesClientProtocol {
+
+ ///
+ public esEnterpriseStorage() {
+ this.Url = "http://localhost:9002/esEnterpriseStorage.asmx";
+ }
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebsitePanel.EnterpriseServer.Client.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebsitePanel.EnterpriseServer.Client.csproj
index bb963506..481ef66f 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebsitePanel.EnterpriseServer.Client.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebsitePanel.EnterpriseServer.Client.csproj
@@ -84,6 +84,7 @@
+
code
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj
index 269e2587..ab3618a1 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/WebsitePanel.EnterpriseServer.csproj
@@ -83,6 +83,7 @@
+
@@ -249,6 +250,10 @@
+
+ esEnterpriseStorage.asmx
+ Component
+
esRemoteDesktopServices.asmx
Component
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx
new file mode 100644
index 00000000..9af40c48
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx
@@ -0,0 +1 @@
+<%@ WebService Language="C#" CodeBehind="esEnterpriseStorage.asmx.cs" Class="WebsitePanel.EnterpriseServer.esEnterpriseStorage" %>
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs
new file mode 100644
index 00000000..787495f0
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esEnterpriseStorage.asmx.cs
@@ -0,0 +1,63 @@
+// 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.
+
+using System;
+using System.Data;
+using System.Web;
+using System.Collections;
+using System.Collections.Generic;
+using System.Web.Services;
+using System.Web.Services.Protocols;
+using System.ComponentModel;
+
+using Microsoft.Web.Services3;
+
+using WebsitePanel.Providers.EnterpriseStorage;
+
+namespace WebsitePanel.EnterpriseServer
+{
+ ///
+ /// Summary description for esApplicationsInstaller
+ ///
+ [WebService(Namespace = "http://smbsaas/websitepanel/enterpriseserver")]
+ [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
+ [Policy("ServerPolicy")]
+ [ToolboxItem(false)]
+ public class esEnterpriseStorage : System.Web.Services.WebService
+ {
+ /*
+ [WebMethod]
+ public DataSet GetRawOdbcSourcesPaged(int packageId,
+ string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
+ {
+ return OperatingSystemController.GetRawOdbcSourcesPaged(packageId, filterColumn,
+ filterValue, sortColumn, startRow, maximumRows);
+ }
+ */
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs
new file mode 100644
index 00000000..0d5323d5
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/EnterpriseStorage/IEnterpriseStorage.cs
@@ -0,0 +1,41 @@
+// 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.
+
+using System;
+using System.Collections;
+
+namespace WebsitePanel.Providers.EnterpriseStorage
+{
+ ///
+ /// Summary description for IEnterpriseStorage.
+ ///
+ public interface IEnterpriseStorage
+ {
+
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
index 17780132..bbfe4142 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
@@ -77,6 +77,7 @@
+
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..221561a5
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("WebsitePanel.Providers.EnterpriseStorage.Windows2012")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WebsitePanel.Providers.EnterpriseStorage.Windows2012")]
+[assembly: AssemblyCopyright("Copyright © 2013")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("eff9e577-faec-41cc-9292-6f71510c4970")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/WebsitePanel.Providers.EnterpriseStorage.Windows2012.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/WebsitePanel.Providers.EnterpriseStorage.Windows2012.csproj
new file mode 100644
index 00000000..af62c23b
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/WebsitePanel.Providers.EnterpriseStorage.Windows2012.csproj
@@ -0,0 +1,57 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}
+ Library
+ Properties
+ WebsitePanel.Providers.EnterpriseStorage.Windows2012
+ WebsitePanel.Providers.EnterpriseStorage.Windows2012
+ v3.5
+ 512
+
+
+
+ true
+ full
+ false
+ ..\WebsitePanel.Server\bin\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+ ..\..\Bin\WebsitePanel.Providers.Base.dll
+
+
+ ..\WebsitePanel.Server.Utils\bin\Debug\WebsitePanel.Server.Utils.dll
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
new file mode 100644
index 00000000..711b7aa4
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.EnterpriseStorage.Windows2012/Windows2012.cs
@@ -0,0 +1,99 @@
+using System;
+using System.IO;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.Win32;
+
+using WebsitePanel.Server.Utils;
+using WebsitePanel.Providers.Utils;
+using WebsitePanel.Providers.OS;
+
+namespace WebsitePanel.Providers.EnterpriseStorage.Windows2012
+{
+ public class Windows2012 : HostingServiceProviderBase
+ {
+
+ #region Properties
+ protected string UsersHome
+ {
+ get { return FileUtils.EvaluateSystemVariables(ProviderSettings["UsersHome"]); }
+ }
+ #endregion
+
+
+ #region HostingServiceProvider methods
+ public override string[] Install()
+ {
+ List messages = new List();
+
+ // create folder if it not exists
+ try
+ {
+ if (!FileUtils.DirectoryExists(UsersHome))
+ {
+ FileUtils.CreateDirectory(UsersHome);
+ }
+ }
+ catch (Exception ex)
+ {
+ messages.Add(String.Format("Folder '{0}' could not be created: {1}",
+ UsersHome, ex.Message));
+ }
+ return messages.ToArray();
+ }
+
+ public override void DeleteServiceItems(ServiceProviderItem[] items)
+ {
+ foreach (ServiceProviderItem item in items)
+ {
+ try
+ {
+ if (item is HomeFolder)
+ // delete home folder
+ FileUtils.DeleteFile(item.Name);
+ }
+ catch (Exception ex)
+ {
+ Log.WriteError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex);
+ }
+ }
+ }
+
+ public override ServiceProviderItemDiskSpace[] GetServiceItemsDiskSpace(ServiceProviderItem[] items)
+ {
+ List itemsDiskspace = new List();
+ foreach (ServiceProviderItem item in items)
+ {
+ if (item is HomeFolder)
+ {
+ try
+ {
+ string path = item.Name;
+
+ Log.WriteStart(String.Format("Calculating '{0}' folder size", path));
+
+ // calculate disk space
+ ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace();
+ diskspace.ItemId = item.Id;
+ diskspace.DiskSpace = FileUtils.CalculateFolderSize(path);
+ itemsDiskspace.Add(diskspace);
+
+ Log.WriteEnd(String.Format("Calculating '{0}' folder size", path));
+ }
+ catch (Exception ex)
+ {
+ Log.WriteError(ex);
+ }
+ }
+ }
+ return itemsDiskspace.ToArray();
+ }
+ #endregion
+
+ public override bool IsInstalled()
+ {
+ Server.Utils.OS.WindowsVersion version = WebsitePanel.Server.Utils.OS.GetVersion();
+ return version == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2012;
+ }
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.zip b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.zip
new file mode 100644
index 00000000..32ef5700
Binary files /dev/null and b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.zip differ
diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs
new file mode 100644
index 00000000..7d36a829
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/EnterpriseStorageProxy.cs
@@ -0,0 +1,66 @@
+// 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.
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.6400
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+//
+// This source code was auto-generated by wsdl, Version=2.0.50727.3038.
+//
+using WebsitePanel.Providers.HostedSolution;
+
+namespace WebsitePanel.Providers.EnterpriseStorage {
+ using System.Xml.Serialization;
+ using System.Web.Services;
+ using System.ComponentModel;
+ using System.Web.Services.Protocols;
+ using System;
+ using System.Diagnostics;
+
+
+ ///
+ // CODEGEN: No methods were found in the WSDL for this protocol.
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Web.Services.WebServiceBindingAttribute(Name="EnterpriseStorageSoap", Namespace="http://smbsaas/websitepanel/server/")]
+ public partial class EnterpriseStorage : Microsoft.Web.Services3.WebServicesClientProtocol {
+
+ ///
+ public EnterpriseStorage() {
+ this.Url = "http://localhost:9003/EnterpriseStorage.asmx";
+ }
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/WebsitePanel.Server.Client.csproj b/WebsitePanel/Sources/WebsitePanel.Server.Client/WebsitePanel.Server.Client.csproj
index fa87e608..aa60aede 100644
--- a/WebsitePanel/Sources/WebsitePanel.Server.Client/WebsitePanel.Server.Client.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/WebsitePanel.Server.Client.csproj
@@ -78,6 +78,7 @@
+
diff --git a/WebsitePanel/Sources/WebsitePanel.Server.sln b/WebsitePanel/Sources/WebsitePanel.Server.sln
index 0f3052c7..e7b53b8c 100644
--- a/WebsitePanel/Sources/WebsitePanel.Server.sln
+++ b/WebsitePanel/Sources/WebsitePanel.Server.sln
@@ -136,6 +136,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Host
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.RemoteDesktopServices.Windows2012", "WebsitePanel.Providers.TerminalServices.Windows2012\WebsitePanel.Providers.RemoteDesktopServices.Windows2012.csproj", "{411EFA7F-DE87-4D37-BD15-95787CF77411}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.EnterpriseStorage.Windows2012", "WebsitePanel.Providers.EnterpriseStorage.Windows2012\WebsitePanel.Providers.EnterpriseStorage.Windows2012.csproj", "{D435AB26-3AE1-4AAA-B423-50372B2C16F3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -696,6 +698,16 @@ Global
{411EFA7F-DE87-4D37-BD15-95787CF77411}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{411EFA7F-DE87-4D37-BD15-95787CF77411}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{411EFA7F-DE87-4D37-BD15-95787CF77411}.Release|x86.ActiveCfg = Release|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {D435AB26-3AE1-4AAA-B423-50372B2C16F3}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx
new file mode 100644
index 00000000..344320cd
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx
@@ -0,0 +1 @@
+<%@ WebService Language="C#" CodeBehind="EnterpriseStorage.asmx.cs" Class="WebsitePanel.Server.EnterpriseStorage" %>
diff --git a/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs
new file mode 100644
index 00000000..6e2ea6cd
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Server/EnterpriseStorage.asmx.cs
@@ -0,0 +1,61 @@
+// 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.
+
+using System;
+using System.Data;
+using System.Web;
+using System.Collections;
+using System.Web.Services;
+using System.Web.Services.Protocols;
+using System.ComponentModel;
+using Microsoft.Web.Services3;
+
+using WebsitePanel.Providers;
+using WebsitePanel.Providers.EnterpriseStorage;
+using WebsitePanel.Server.Utils;
+
+namespace WebsitePanel.Server
+{
+ ///
+ /// Summary description for EnterpriseStorage
+ ///
+ [WebService(Namespace = "http://smbsaas/websitepanel/server/")]
+ [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
+ [Policy("ServerPolicy")]
+ [ToolboxItem(false)]
+ public class EnterpriseStorage : HostingServiceProviderWebService, IEnterpriseStorage
+ {
+ private IEnterpriseStorage RDSProvider
+ {
+ get { return (IEnterpriseStorage)Provider; }
+ }
+
+
+ }
+
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj
index adcbabbd..186c9b23 100644
--- a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj
@@ -85,6 +85,7 @@
+
@@ -128,6 +129,10 @@
+
+ EnterpriseStorage.asmx
+ Component
+
RemoteDesktopServices.asmx
Component
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
index 403484e1..2c9ba35b 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
@@ -1893,6 +1893,9 @@
Remote Desktop Services
+
+ Enterprise Storage Services
+
MySQL 5
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/EnterpriseStorage_Settings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/EnterpriseStorage_Settings.ascx.resx
new file mode 100644
index 00000000..5e4ec076
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/App_LocalResources/EnterpriseStorage_Settings.ascx.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Enable Hard Quota:
+
+
+ Location Drive:
+
+
+ Enterprise Storage Folder:
+
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx
new file mode 100644
index 00000000..7ff94ecb
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx
@@ -0,0 +1,36 @@
+<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="EnterpriseStorage_Settings.ascx.cs" Inherits="WebsitePanel.Portal.ProviderControls.EnterpriseStorage_Settings" %>
+
+
+
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.cs
new file mode 100644
index 00000000..84738e50
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.cs
@@ -0,0 +1,83 @@
+// 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.
+
+using System;
+using System.Data;
+using System.Configuration;
+using System.Collections;
+using System.Collections.Specialized;
+using System.Web;
+using System.Web.Security;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.WebControls.WebParts;
+using System.Web.UI.HtmlControls;
+
+namespace WebsitePanel.Portal.ProviderControls
+{
+ public partial class EnterpriseStorage_Settings : WebsitePanelControlBase, IHostingServiceProviderSettings
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ //CO Changes
+ if (!IsPostBack)
+ {
+ try
+ {
+ chkEnableHardQuota.Enabled = ES.Services.OperatingSystems.CheckFileServicesInstallation(PanelRequest.ServiceId);
+ txtLocationDrive.Enabled = chkEnableHardQuota.Enabled;
+ valLocationDrive.Enabled = chkEnableHardQuota.Enabled;
+ if (!chkEnableHardQuota.Enabled)
+ lblFileServiceInfo.Visible = true;
+ }
+ catch
+ {
+ }
+ }
+ //END
+ }
+
+ public void BindSettings(StringDictionary settings)
+ {
+ txtFolder.Text = settings["UsersHome"];
+ //CO Changes
+ txtLocationDrive.Text = settings["LocationDrive"];
+ chkEnableHardQuota.Checked = settings["EnableHardQuota"] == "true" ? true : false;
+ //END
+ }
+
+ public void SaveSettings(StringDictionary settings)
+ {
+ settings["UsersHome"] = txtFolder.Text;
+ //CO Changes
+ settings["LocationDrive"] = txtLocationDrive.Text;
+ settings["EnableHardQuota"] = chkEnableHardQuota.Checked.ToString().ToLower();
+ //END
+ }
+ }
+}
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.designer.cs
new file mode 100644
index 00000000..194288c2
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/EnterpriseStorage_Settings.ascx.designer.cs
@@ -0,0 +1,78 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.Portal.ProviderControls {
+
+
+ public partial class EnterpriseStorage_Settings {
+
+ ///
+ /// lblSpacesFolder control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblSpacesFolder;
+
+ ///
+ /// txtFolder control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtFolder;
+
+ ///
+ /// lblLocationDrive control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblLocationDrive;
+
+ ///
+ /// txtLocationDrive control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtLocationDrive;
+
+ ///
+ /// valLocationDrive control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.RequiredFieldValidator valLocationDrive;
+
+ ///
+ /// chkEnableHardQuota control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.CheckBox chkEnableHardQuota;
+
+ ///
+ /// lblFileServiceInfo control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblFileServiceInfo;
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj
index b2955660..9cbd0893 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj
@@ -318,6 +318,13 @@
LyncUserPlanSelector.ascx
+
+ EnterpriseStorage_Settings.ascx
+ ASPXCodeBehind
+
+
+ EnterpriseStorage_Settings.ascx
+
RemoteDesktopServices_Settings.ascx
ASPXCodeBehind
@@ -3858,6 +3865,7 @@
+
@@ -5032,6 +5040,9 @@
Designer
+
+ Designer
+
Designer
diff --git a/WebsitePanel/Sources/generate_es_proxies.bat b/WebsitePanel/Sources/generate_es_proxies.bat
index f1175b50..8ca77d04 100644
--- a/WebsitePanel/Sources/generate_es_proxies.bat
+++ b/WebsitePanel/Sources/generate_es_proxies.bat
@@ -98,8 +98,11 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs
REM %WSDL% %SERVER_URL%/esHeliconZoo.asmx /out:.\WebsitePanel.EnterpriseServer.Client\HeliconZooProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\HeliconZooProxy.cs
-%WSDL% %SERVER_URL%/esRemoteDesktopServices.asmx /out:.\WebsitePanel.EnterpriseServer.Client\RemoteDesktopServicesProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
-%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\RemoteDesktopServicesProxy.cs
+REM %WSDL% %SERVER_URL%/esRemoteDesktopServices.asmx /out:.\WebsitePanel.EnterpriseServer.Client\RemoteDesktopServicesProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
+REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\RemoteDesktopServicesProxy.cs
+
+%WSDL% %SERVER_URL%/esEnterpriseStorage.asmx /out:.\WebsitePanel.EnterpriseServer.Client\EnterpriseStorageProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
+%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\EnterpriseStorageProxy.cs
diff --git a/WebsitePanel/Sources/generate_server_proxies.bat b/WebsitePanel/Sources/generate_server_proxies.bat
index 4fec80fa..2285c727 100644
--- a/WebsitePanel/Sources/generate_server_proxies.bat
+++ b/WebsitePanel/Sources/generate_server_proxies.bat
@@ -62,5 +62,8 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs
REM %WSDL% %SERVER_URL%/HeliconZoo.asmx /out:.\WebsitePanel.Server.Client\HeliconZooProxy.cs /namespace:WebsitePanel.Providers.HeliconZoo /type:webClient /fields
REM %WSE_CLEAN% .\WebsitePanel.Server.Client\HeliconZooProxy.cs
-%WSDL% %SERVER_URL%/RemoteDesktopServices.asmx /out:.\WebsitePanel.Server.Client\RemoteDesktopServicesProxy.cs /namespace:WebsitePanel.Providers.RemoteDesktopServices /type:webClient /fields
-%WSE_CLEAN% .\WebsitePanel.Server.Client\RemoteDesktopServicesProxy.cs
+REM %WSDL% %SERVER_URL%/RemoteDesktopServices.asmx /out:.\WebsitePanel.Server.Client\RemoteDesktopServicesProxy.cs /namespace:WebsitePanel.Providers.RemoteDesktopServices /type:webClient /fields
+REM %WSE_CLEAN% .\WebsitePanel.Server.Client\RemoteDesktopServicesProxy.cs
+
+%WSDL% %SERVER_URL%/EnterpriseStorage.asmx /out:.\WebsitePanel.Server.Client\EnterpriseStorageProxy.cs /namespace:WebsitePanel.Providers.EnterpriseStorage /type:webClient /fields
+%WSE_CLEAN% .\WebsitePanel.Server.Client\EnterpriseStorageProxy.cs