diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs index dbab4f3a..d7510e2f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/EnterpriseStorage/EnterpriseStorageController.cs @@ -742,7 +742,7 @@ namespace WebsitePanel.EnterpriseServer if (web.VirtualDirectoryExists(site, vdirName)) return BusinessErrorCodes.ERROR_VDIR_ALREADY_EXISTS; - web.CreateVirtualDirectory(site, dir); + web.CreateEnterpriseStorageVirtualDirectory(site, dir); return 0; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs index 4040b1a9..88541de6 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs @@ -65,6 +65,7 @@ namespace WebsitePanel.Providers.Web WebVirtualDirectory[] GetVirtualDirectories(string siteId); WebVirtualDirectory GetVirtualDirectory(string siteId, string directoryName); void CreateVirtualDirectory(string siteId, WebVirtualDirectory directory); + void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory); void UpdateVirtualDirectory(string siteId, WebVirtualDirectory directory); void DeleteVirtualDirectory(string siteId, string directoryName); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs index d6a36722..22f33a5b 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs @@ -1658,6 +1658,39 @@ namespace WebsitePanel.Providers.Web } } + /// + /// Creates virtual iisDirObject under site (Enterprise Storage) with specified id. + /// + /// Site's id to create virtual iisDirObject under. + /// Virtual iisDirObject description. + public override void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory) + { + // Create iisDirObject folder if not exists. + if (!FileUtils.DirectoryExists(directory.ContentPath)) + { + FileUtils.CreateDirectory(directory.ContentPath); + } + // + WebSite webSite = GetSite(siteId); + // copy props from parent site + directory.ParentSiteName = siteId; + directory.AspNetInstalled = webSite.AspNetInstalled; + directory.ApplicationPool = webSite.ApplicationPool; + // Create record in IIS's configuration. + webObjectsSvc.CreateVirtualDirectory(siteId, directory.VirtualPath, directory.ContentPath); + + using (ServerManager srvman = webObjectsSvc.GetServerManager()) + { + PropertyBag bag = anonymAuthSvc.GetAuthenticationSettings(srvman, siteId); + directory.AnonymousUsername = (string)bag[AuthenticationGlobals.AnonymousAuthenticationUserName]; + directory.AnonymousUserPassword = (string)bag[AuthenticationGlobals.AnonymousAuthenticationPassword]; + } + // Update virtual directory (set parent site pool) + webObjectsSvc.UpdateVirtualDirectory(directory); + // Disable Anonymous Authentication + SetAnonymousAuthentication(directory); + } + /// /// Updates virtual iisDirObject settings. /// diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs index b662503d..6a81fbdd 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs @@ -1165,6 +1165,11 @@ namespace WebsitePanel.Providers.Web UpdateVirtualDirectory(siteId, directory, false); } + public virtual void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory) + { + + } + public virtual void UpdateVirtualDirectory(string siteId, WebVirtualDirectory directory) { UpdateVirtualDirectory(siteId, directory, true); diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs index 7deacb38..b9b4ebda 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs @@ -124,6 +124,8 @@ namespace WebsitePanel.Providers.Web private System.Threading.SendOrPostCallback CreateVirtualDirectoryOperationCompleted; + private System.Threading.SendOrPostCallback CreateEnterpriseStorageVirtualDirectoryOperationCompleted; + private System.Threading.SendOrPostCallback UpdateVirtualDirectoryOperationCompleted; private System.Threading.SendOrPostCallback DeleteVirtualDirectoryOperationCompleted; @@ -352,6 +354,9 @@ namespace WebsitePanel.Providers.Web /// public event CreateVirtualDirectoryCompletedEventHandler CreateVirtualDirectoryCompleted; + /// + public event CreateEnterpriseStorageVirtualDirectoryCompletedEventHandler CreateEnterpriseStorageVirtualDirectoryCompleted; + /// public event UpdateVirtualDirectoryCompletedEventHandler UpdateVirtualDirectoryCompleted; @@ -2070,6 +2075,57 @@ namespace WebsitePanel.Providers.Web } } + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateEnterpriseStorageVirtualDirectory", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory) + { + this.Invoke("CreateEnterpriseStorageVirtualDirectory", new object[] { + siteId, + directory}); + } + + /// + public System.IAsyncResult BeginCreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory, System.AsyncCallback callback, object asyncState) + { + return this.BeginInvoke("CreateEnterpriseStorageVirtualDirectory", new object[] { + siteId, + directory}, callback, asyncState); + } + + /// + public void EndCreateEnterpriseStorageVirtualDirectory(System.IAsyncResult asyncResult) + { + this.EndInvoke(asyncResult); + } + + /// + public void CreateEnterpriseStorageVirtualDirectoryAsync(string siteId, WebVirtualDirectory directory) + { + this.CreateEnterpriseStorageVirtualDirectoryAsync(siteId, directory, null); + } + + /// + public void CreateEnterpriseStorageVirtualDirectoryAsync(string siteId, WebVirtualDirectory directory, object userState) + { + if ((this.CreateEnterpriseStorageVirtualDirectoryOperationCompleted == null)) + { + this.CreateEnterpriseStorageVirtualDirectoryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateEnterpriseStorageVirtualDirectoryOperationCompleted); + } + this.InvokeAsync("CreateEnterpriseStorageVirtualDirectory", new object[] { + siteId, + directory}, this.CreateEnterpriseStorageVirtualDirectoryOperationCompleted, userState); + } + + private void OnCreateEnterpriseStorageVirtualDirectoryOperationCompleted(object arg) + { + if ((this.CreateEnterpriseStorageVirtualDirectoryCompleted != null)) + { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.CreateEnterpriseStorageVirtualDirectoryCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateVirtualDirectory", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] @@ -6162,6 +6218,10 @@ namespace WebsitePanel.Providers.Web [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void CreateVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void CreateEnterpriseStorageVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs index 3e8b11d6..4d040f41 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs @@ -366,6 +366,22 @@ namespace WebsitePanel.Server } } + [WebMethod, SoapHeader("settings")] + public void CreateEnterpriseStorageVirtualDirectory(string siteId, WebVirtualDirectory directory) + { + try + { + Log.WriteStart("'{0}' CreateEnterpriseStorageVirtualDirectory", ProviderSettings.ProviderName); + WebProvider.CreateEnterpriseStorageVirtualDirectory(siteId, directory); + Log.WriteEnd("'{0}' CreateEnterpriseStorageVirtualDirectory", ProviderSettings.ProviderName); + } + catch (Exception ex) + { + Log.WriteError(String.Format("'{0}' CreateEnterpriseStorageVirtualDirectory", ProviderSettings.ProviderName), ex); + throw; + } + } + [WebMethod, SoapHeader("settings")] public void UpdateVirtualDirectory(string siteId, WebVirtualDirectory directory) {