diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe index b332a39d..fa8aa801 100644 Binary files a/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe and b/WebsitePanel.Installer/Sources/WebsitePanel.Installer/Updater.exe differ diff --git a/WebsitePanel/Lib/Microsoft.Web.PlatformInstaller.dll b/WebsitePanel/Lib/Microsoft.Web.PlatformInstaller.dll new file mode 100644 index 00000000..a94eef6f Binary files /dev/null and b/WebsitePanel/Lib/Microsoft.Web.PlatformInstaller.dll differ diff --git a/WebsitePanel/Lib/References/Microsoft/Microsoft.Web.Deployment.dll b/WebsitePanel/Lib/References/Microsoft/Microsoft.Web.Deployment.dll index 8b4b2ff3..5a16662c 100644 Binary files a/WebsitePanel/Lib/References/Microsoft/Microsoft.Web.Deployment.dll and b/WebsitePanel/Lib/References/Microsoft/Microsoft.Web.Deployment.dll differ diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs index bc6849e6..904dec23 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs @@ -41,6 +41,7 @@ namespace WebsitePanel.EnterpriseServer public const string SMTP_SETTINGS = "SmtpSettings"; public const string BACKUP_SETTINGS = "BackupSettings"; public const string SETUP_SETTINGS = "SetupSettings"; + public const string WPI_SETTINGS = "WpiSettings"; public static readonly SystemSettings Empty = new SystemSettings { SettingsArray = new string[][] {} }; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ServersProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ServersProxy.cs index 2643979b..1b51bbe5 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ServersProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ServersProxy.cs @@ -48,11 +48,11 @@ namespace WebsitePanel.EnterpriseServer using System; using System.Diagnostics; using System.Data; - + using WebsitePanel.Providers; using WebsitePanel.Providers.Common; using WebsitePanel.Server; using WebsitePanel.Providers.DNS; - using WebsitePanel.Providers.ResultObjects; + using WebsitePanel.Providers.ResultObjects; /// @@ -251,6 +251,28 @@ namespace WebsitePanel.EnterpriseServer private System.Threading.SendOrPostCallback TerminateWindowsProcessOperationCompleted; + private System.Threading.SendOrPostCallback InitWPIFeedsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPITabsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIKeywordsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIProductsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIProductsFilteredOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIProductsWithDependenciesOperationCompleted; + + private System.Threading.SendOrPostCallback InstallWPIProductsOperationCompleted; + + private System.Threading.SendOrPostCallback CancelInstallWPIProductsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIStatusOperationCompleted; + + private System.Threading.SendOrPostCallback WpiGetLogFileDirectoryOperationCompleted; + + private System.Threading.SendOrPostCallback WpiGetLogsInDirectoryOperationCompleted; + private System.Threading.SendOrPostCallback GetWindowsServicesOperationCompleted; private System.Threading.SendOrPostCallback ChangeWindowsServiceStatusOperationCompleted; @@ -553,6 +575,39 @@ namespace WebsitePanel.EnterpriseServer /// public event TerminateWindowsProcessCompletedEventHandler TerminateWindowsProcessCompleted; + /// + public event InitWPIFeedsCompletedEventHandler InitWPIFeedsCompleted; + + /// + public event GetWPITabsCompletedEventHandler GetWPITabsCompleted; + + /// + public event GetWPIKeywordsCompletedEventHandler GetWPIKeywordsCompleted; + + /// + public event GetWPIProductsCompletedEventHandler GetWPIProductsCompleted; + + /// + public event GetWPIProductsFilteredCompletedEventHandler GetWPIProductsFilteredCompleted; + + /// + public event GetWPIProductsWithDependenciesCompletedEventHandler GetWPIProductsWithDependenciesCompleted; + + /// + public event InstallWPIProductsCompletedEventHandler InstallWPIProductsCompleted; + + /// + public event CancelInstallWPIProductsCompletedEventHandler CancelInstallWPIProductsCompleted; + + /// + public event GetWPIStatusCompletedEventHandler GetWPIStatusCompleted; + + /// + public event WpiGetLogFileDirectoryCompletedEventHandler WpiGetLogFileDirectoryCompleted; + + /// + public event WpiGetLogsInDirectoryCompletedEventHandler WpiGetLogsInDirectoryCompleted; + /// public event GetWindowsServicesCompletedEventHandler GetWindowsServicesCompleted; @@ -5451,9 +5506,471 @@ namespace WebsitePanel.EnterpriseServer } /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWindowsServices", 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 WindowsService[] GetWindowsServices(int serverId) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/InitWPIFeeds", 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 void InitWPIFeeds(int serverId) { + this.Invoke("InitWPIFeeds", new object[] { + serverId}); + } + + /// + public System.IAsyncResult BeginInitWPIFeeds(int serverId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("InitWPIFeeds", new object[] { + serverId}, callback, asyncState); + } + + /// + public void EndInitWPIFeeds(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void InitWPIFeedsAsync(int serverId) { + this.InitWPIFeedsAsync(serverId, null); + } + + /// + public void InitWPIFeedsAsync(int serverId, object userState) { + if ((this.InitWPIFeedsOperationCompleted == null)) { + this.InitWPIFeedsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInitWPIFeedsOperationCompleted); + } + this.InvokeAsync("InitWPIFeeds", new object[] { + serverId}, this.InitWPIFeedsOperationCompleted, userState); + } + + private void OnInitWPIFeedsOperationCompleted(object arg) { + if ((this.InitWPIFeedsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.InitWPIFeedsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWPITabs", 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 WPITab[] GetWPITabs(int serverId) { + object[] results = this.Invoke("GetWPITabs", new object[] { + serverId}); + return ((WPITab[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPITabs(int serverId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPITabs", new object[] { + serverId}, callback, asyncState); + } + + /// + public WPITab[] EndGetWPITabs(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPITab[])(results[0])); + } + + /// + public void GetWPITabsAsync(int serverId) { + this.GetWPITabsAsync(serverId, null); + } + + /// + public void GetWPITabsAsync(int serverId, object userState) { + if ((this.GetWPITabsOperationCompleted == null)) { + this.GetWPITabsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPITabsOperationCompleted); + } + this.InvokeAsync("GetWPITabs", new object[] { + serverId}, this.GetWPITabsOperationCompleted, userState); + } + + private void OnGetWPITabsOperationCompleted(object arg) { + if ((this.GetWPITabsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPITabsCompleted(this, new GetWPITabsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWPIKeywords", 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 WPIKeyword[] GetWPIKeywords(int serverId) { + object[] results = this.Invoke("GetWPIKeywords", new object[] { + serverId}); + return ((WPIKeyword[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIKeywords(int serverId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIKeywords", new object[] { + serverId}, callback, asyncState); + } + + /// + public WPIKeyword[] EndGetWPIKeywords(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPIKeyword[])(results[0])); + } + + /// + public void GetWPIKeywordsAsync(int serverId) { + this.GetWPIKeywordsAsync(serverId, null); + } + + /// + public void GetWPIKeywordsAsync(int serverId, object userState) { + if ((this.GetWPIKeywordsOperationCompleted == null)) { + this.GetWPIKeywordsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIKeywordsOperationCompleted); + } + this.InvokeAsync("GetWPIKeywords", new object[] { + serverId}, this.GetWPIKeywordsOperationCompleted, userState); + } + + private void OnGetWPIKeywordsOperationCompleted(object arg) { + if ((this.GetWPIKeywordsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIKeywordsCompleted(this, new GetWPIKeywordsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWPIProducts", 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 WPIProduct[] GetWPIProducts(int serverId, string tabId, string keywordId) { + object[] results = this.Invoke("GetWPIProducts", new object[] { + serverId, + tabId, + keywordId}); + return ((WPIProduct[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIProducts(int serverId, string tabId, string keywordId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIProducts", new object[] { + serverId, + tabId, + keywordId}, callback, asyncState); + } + + /// + public WPIProduct[] EndGetWPIProducts(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPIProduct[])(results[0])); + } + + /// + public void GetWPIProductsAsync(int serverId, string tabId, string keywordId) { + this.GetWPIProductsAsync(serverId, tabId, keywordId, null); + } + + /// + public void GetWPIProductsAsync(int serverId, string tabId, string keywordId, object userState) { + if ((this.GetWPIProductsOperationCompleted == null)) { + this.GetWPIProductsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIProductsOperationCompleted); + } + this.InvokeAsync("GetWPIProducts", new object[] { + serverId, + tabId, + keywordId}, this.GetWPIProductsOperationCompleted, userState); + } + + private void OnGetWPIProductsOperationCompleted(object arg) { + if ((this.GetWPIProductsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIProductsCompleted(this, new GetWPIProductsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWPIProductsFiltered", 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 WPIProduct[] GetWPIProductsFiltered(int serverId, string keywordId) { + object[] results = this.Invoke("GetWPIProductsFiltered", new object[] { + serverId, + keywordId}); + return ((WPIProduct[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIProductsFiltered(int serverId, string keywordId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIProductsFiltered", new object[] { + serverId, + keywordId}, callback, asyncState); + } + + /// + public WPIProduct[] EndGetWPIProductsFiltered(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPIProduct[])(results[0])); + } + + /// + public void GetWPIProductsFilteredAsync(int serverId, string keywordId) { + this.GetWPIProductsFilteredAsync(serverId, keywordId, null); + } + + /// + public void GetWPIProductsFilteredAsync(int serverId, string keywordId, object userState) { + if ((this.GetWPIProductsFilteredOperationCompleted == null)) { + this.GetWPIProductsFilteredOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIProductsFilteredOperationCompleted); + } + this.InvokeAsync("GetWPIProductsFiltered", new object[] { + serverId, + keywordId}, this.GetWPIProductsFilteredOperationCompleted, userState); + } + + private void OnGetWPIProductsFilteredOperationCompleted(object arg) { + if ((this.GetWPIProductsFilteredCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIProductsFilteredCompleted(this, new GetWPIProductsFilteredCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWPIProductsWithDependencies", 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 WPIProduct[] GetWPIProductsWithDependencies(int serverId, string[] products) { + object[] results = this.Invoke("GetWPIProductsWithDependencies", new object[] { + serverId, + products}); + return ((WPIProduct[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIProductsWithDependencies(int serverId, string[] products, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIProductsWithDependencies", new object[] { + serverId, + products}, callback, asyncState); + } + + /// + public WPIProduct[] EndGetWPIProductsWithDependencies(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPIProduct[])(results[0])); + } + + /// + public void GetWPIProductsWithDependenciesAsync(int serverId, string[] products) { + this.GetWPIProductsWithDependenciesAsync(serverId, products, null); + } + + /// + public void GetWPIProductsWithDependenciesAsync(int serverId, string[] products, object userState) { + if ((this.GetWPIProductsWithDependenciesOperationCompleted == null)) { + this.GetWPIProductsWithDependenciesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIProductsWithDependenciesOperationCompleted); + } + this.InvokeAsync("GetWPIProductsWithDependencies", new object[] { + serverId, + products}, this.GetWPIProductsWithDependenciesOperationCompleted, userState); + } + + private void OnGetWPIProductsWithDependenciesOperationCompleted(object arg) { + if ((this.GetWPIProductsWithDependenciesCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIProductsWithDependenciesCompleted(this, new GetWPIProductsWithDependenciesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/InstallWPIProducts", 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 void InstallWPIProducts(int serverId, string[] products) { + this.Invoke("InstallWPIProducts", new object[] { + serverId, + products}); + } + + /// + public System.IAsyncResult BeginInstallWPIProducts(int serverId, string[] products, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("InstallWPIProducts", new object[] { + serverId, + products}, callback, asyncState); + } + + /// + public void EndInstallWPIProducts(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void InstallWPIProductsAsync(int serverId, string[] products) { + this.InstallWPIProductsAsync(serverId, products, null); + } + + /// + public void InstallWPIProductsAsync(int serverId, string[] products, object userState) { + if ((this.InstallWPIProductsOperationCompleted == null)) { + this.InstallWPIProductsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInstallWPIProductsOperationCompleted); + } + this.InvokeAsync("InstallWPIProducts", new object[] { + serverId, + products}, this.InstallWPIProductsOperationCompleted, userState); + } + + private void OnInstallWPIProductsOperationCompleted(object arg) { + if ((this.InstallWPIProductsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.InstallWPIProductsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CancelInstallWPIProducts", 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 void CancelInstallWPIProducts(int serviceId) { + this.Invoke("CancelInstallWPIProducts", new object[] { + serviceId}); + } + + /// + public System.IAsyncResult BeginCancelInstallWPIProducts(int serviceId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("CancelInstallWPIProducts", new object[] { + serviceId}, callback, asyncState); + } + + /// + public void EndCancelInstallWPIProducts(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void CancelInstallWPIProductsAsync(int serviceId) { + this.CancelInstallWPIProductsAsync(serviceId, null); + } + + /// + public void CancelInstallWPIProductsAsync(int serviceId, object userState) { + if ((this.CancelInstallWPIProductsOperationCompleted == null)) { + this.CancelInstallWPIProductsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCancelInstallWPIProductsOperationCompleted); + } + this.InvokeAsync("CancelInstallWPIProducts", new object[] { + serviceId}, this.CancelInstallWPIProductsOperationCompleted, userState); + } + + private void OnCancelInstallWPIProductsOperationCompleted(object arg) { + if ((this.CancelInstallWPIProductsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.CancelInstallWPIProductsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWPIStatus", 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 string GetWPIStatus(int serverId) { + object[] results = this.Invoke("GetWPIStatus", new object[] { + serverId}); + return ((string)(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIStatus(int serverId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIStatus", new object[] { + serverId}, callback, asyncState); + } + + /// + public string EndGetWPIStatus(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((string)(results[0])); + } + + /// + public void GetWPIStatusAsync(int serverId) { + this.GetWPIStatusAsync(serverId, null); + } + + /// + public void GetWPIStatusAsync(int serverId, object userState) { + if ((this.GetWPIStatusOperationCompleted == null)) { + this.GetWPIStatusOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIStatusOperationCompleted); + } + this.InvokeAsync("GetWPIStatus", new object[] { + serverId}, this.GetWPIStatusOperationCompleted, userState); + } + + private void OnGetWPIStatusOperationCompleted(object arg) { + if ((this.GetWPIStatusCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIStatusCompleted(this, new GetWPIStatusCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/WpiGetLogFileDirectory", 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 string WpiGetLogFileDirectory(int serverId) { + object[] results = this.Invoke("WpiGetLogFileDirectory", new object[] { + serverId}); + return ((string)(results[0])); + } + + /// + public System.IAsyncResult BeginWpiGetLogFileDirectory(int serverId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("WpiGetLogFileDirectory", new object[] { + serverId}, callback, asyncState); + } + + /// + public string EndWpiGetLogFileDirectory(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((string)(results[0])); + } + + /// + public void WpiGetLogFileDirectoryAsync(int serverId) { + this.WpiGetLogFileDirectoryAsync(serverId, null); + } + + /// + public void WpiGetLogFileDirectoryAsync(int serverId, object userState) { + if ((this.WpiGetLogFileDirectoryOperationCompleted == null)) { + this.WpiGetLogFileDirectoryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnWpiGetLogFileDirectoryOperationCompleted); + } + this.InvokeAsync("WpiGetLogFileDirectory", new object[] { + serverId}, this.WpiGetLogFileDirectoryOperationCompleted, userState); + } + + private void OnWpiGetLogFileDirectoryOperationCompleted(object arg) { + if ((this.WpiGetLogFileDirectoryCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.WpiGetLogFileDirectoryCompleted(this, new WpiGetLogFileDirectoryCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/WpiGetLogsInDirectory", 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 SettingPair[] WpiGetLogsInDirectory(int serverId, string Path) { + object[] results = this.Invoke("WpiGetLogsInDirectory", new object[] { + serverId, + Path}); + return ((SettingPair[])(results[0])); + } + + /// + public System.IAsyncResult BeginWpiGetLogsInDirectory(int serverId, string Path, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("WpiGetLogsInDirectory", new object[] { + serverId, + Path}, callback, asyncState); + } + + /// + public SettingPair[] EndWpiGetLogsInDirectory(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((SettingPair[])(results[0])); + } + + /// + public void WpiGetLogsInDirectoryAsync(int serverId, string Path) { + this.WpiGetLogsInDirectoryAsync(serverId, Path, null); + } + + /// + public void WpiGetLogsInDirectoryAsync(int serverId, string Path, object userState) { + if ((this.WpiGetLogsInDirectoryOperationCompleted == null)) { + this.WpiGetLogsInDirectoryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnWpiGetLogsInDirectoryOperationCompleted); + } + this.InvokeAsync("WpiGetLogsInDirectory", new object[] { + serverId, + Path}, this.WpiGetLogsInDirectoryOperationCompleted, userState); + } + + private void OnWpiGetLogsInDirectoryOperationCompleted(object arg) { + if ((this.WpiGetLogsInDirectoryCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.WpiGetLogsInDirectoryCompleted(this, new WpiGetLogsInDirectoryCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWindowsServices", 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 WindowsService[] GetWindowsServices(int serverId) { object[] results = this.Invoke("GetWindowsServices", new object[] { serverId}); return ((WindowsService[])(results[0])); @@ -8641,6 +9158,226 @@ namespace WebsitePanel.EnterpriseServer } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void InitWPIFeedsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPITabsCompletedEventHandler(object sender, GetWPITabsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPITabsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPITabsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPITab[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPITab[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIKeywordsCompletedEventHandler(object sender, GetWPIKeywordsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIKeywordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIKeywordsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPIKeyword[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPIKeyword[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIProductsCompletedEventHandler(object sender, GetWPIProductsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIProductsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIProductsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPIProduct[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPIProduct[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIProductsFilteredCompletedEventHandler(object sender, GetWPIProductsFilteredCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIProductsFilteredCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIProductsFilteredCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPIProduct[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPIProduct[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIProductsWithDependenciesCompletedEventHandler(object sender, GetWPIProductsWithDependenciesCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIProductsWithDependenciesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIProductsWithDependenciesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPIProduct[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPIProduct[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void InstallWPIProductsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void CancelInstallWPIProductsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIStatusCompletedEventHandler(object sender, GetWPIStatusCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIStatusCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public string Result { + get { + this.RaiseExceptionIfNecessary(); + return ((string)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void WpiGetLogFileDirectoryCompletedEventHandler(object sender, WpiGetLogFileDirectoryCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class WpiGetLogFileDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal WpiGetLogFileDirectoryCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public string Result { + get { + this.RaiseExceptionIfNecessary(); + return ((string)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void WpiGetLogsInDirectoryCompletedEventHandler(object sender, WpiGetLogsInDirectoryCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class WpiGetLogsInDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal WpiGetLogsInDirectoryCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public SettingPair[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((SettingPair[])(this.results[0])); + } + } + } + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetWindowsServicesCompletedEventHandler(object sender, GetWindowsServicesCompletedEventArgs e); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebApplicationGalleryProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebApplicationGalleryProxy.cs index 2d212305..5e40b991 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebApplicationGalleryProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/WebApplicationGalleryProxy.cs @@ -39,30 +39,39 @@ // // This source code was auto-generated by wsdl, Version=2.0.50727.1432. // -namespace WebsitePanel.EnterpriseServer { +namespace WebsitePanel.EnterpriseServer +{ using System.Diagnostics; using System.Web.Services; using System.ComponentModel; using System.Web.Services.Protocols; using System; using System.Xml.Serialization; - using WebsitePanel.Providers.ResultObjects; - using WebsitePanel.Providers.WebAppGallery; - using WebsitePanel.Providers.Common; + using WebsitePanel.Providers.ResultObjects; + using WebsitePanel.Providers.WebAppGallery; + using WebsitePanel.Providers.Common; /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="esWebApplicationGallerySoap", Namespace="http://tempuri.org/")] [System.Xml.Serialization.XmlIncludeAttribute(typeof(ResultObject))] public partial class esWebApplicationGallery : Microsoft.Web.Services3.WebServicesClientProtocol { + private System.Threading.SendOrPostCallback InitFeedsOperationCompleted; + + private System.Threading.SendOrPostCallback SetResourceLanguageOperationCompleted; + + private System.Threading.SendOrPostCallback GetGalleryLanguagesOperationCompleted; + private System.Threading.SendOrPostCallback GetGalleryApplicationsByServiceIdOperationCompleted; private System.Threading.SendOrPostCallback GetGalleryApplicationsOperationCompleted; + private System.Threading.SendOrPostCallback GetGalleryApplicationsFilteredOperationCompleted; + private System.Threading.SendOrPostCallback GetGalleryCategoriesOperationCompleted; private System.Threading.SendOrPostCallback GetGalleryApplicationDetailsOperationCompleted; @@ -75,15 +84,27 @@ namespace WebsitePanel.EnterpriseServer { /// public esWebApplicationGallery() { - this.Url = "http://localhost:1625/esWebApplicationGallery.asmx"; + this.Url = "http://localhost:9002/esWebApplicationGallery.asmx"; } + /// + public event InitFeedsCompletedEventHandler InitFeedsCompleted; + + /// + public event SetResourceLanguageCompletedEventHandler SetResourceLanguageCompleted; + + /// + public event GetGalleryLanguagesCompletedEventHandler GetGalleryLanguagesCompleted; + /// public event GetGalleryApplicationsByServiceIdCompletedEventHandler GetGalleryApplicationsByServiceIdCompleted; /// public event GetGalleryApplicationsCompletedEventHandler GetGalleryApplicationsCompleted; + /// + public event GetGalleryApplicationsFilteredCompletedEventHandler GetGalleryApplicationsFilteredCompleted; + /// public event GetGalleryCategoriesCompletedEventHandler GetGalleryCategoriesCompleted; @@ -99,6 +120,128 @@ namespace WebsitePanel.EnterpriseServer { /// public event GetGalleryApplicationStatusCompletedEventHandler GetGalleryApplicationStatusCompleted; + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/InitFeeds", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void InitFeeds(int packageId) { + this.Invoke("InitFeeds", new object[] { + packageId}); + } + + /// + public System.IAsyncResult BeginInitFeeds(int packageId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("InitFeeds", new object[] { + packageId}, callback, asyncState); + } + + /// + public void EndInitFeeds(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void InitFeedsAsync(int packageId) { + this.InitFeedsAsync(packageId, null); + } + + /// + public void InitFeedsAsync(int packageId, object userState) { + if ((this.InitFeedsOperationCompleted == null)) { + this.InitFeedsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInitFeedsOperationCompleted); + } + this.InvokeAsync("InitFeeds", new object[] { + packageId}, this.InitFeedsOperationCompleted, userState); + } + + private void OnInitFeedsOperationCompleted(object arg) { + if ((this.InitFeedsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.InitFeedsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetResourceLanguage", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void SetResourceLanguage(int packageId, string resourceLanguage) { + this.Invoke("SetResourceLanguage", new object[] { + packageId, + resourceLanguage}); + } + + /// + public System.IAsyncResult BeginSetResourceLanguage(int packageId, string resourceLanguage, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetResourceLanguage", new object[] { + packageId, + resourceLanguage}, callback, asyncState); + } + + /// + public void EndSetResourceLanguage(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void SetResourceLanguageAsync(int packageId, string resourceLanguage) { + this.SetResourceLanguageAsync(packageId, resourceLanguage, null); + } + + /// + public void SetResourceLanguageAsync(int packageId, string resourceLanguage, object userState) { + if ((this.SetResourceLanguageOperationCompleted == null)) { + this.SetResourceLanguageOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetResourceLanguageOperationCompleted); + } + this.InvokeAsync("SetResourceLanguage", new object[] { + packageId, + resourceLanguage}, this.SetResourceLanguageOperationCompleted, userState); + } + + private void OnSetResourceLanguageOperationCompleted(object arg) { + if ((this.SetResourceLanguageCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetResourceLanguageCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetGalleryLanguages", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public GalleryLanguagesResult GetGalleryLanguages(int packageId) { + object[] results = this.Invoke("GetGalleryLanguages", new object[] { + packageId}); + return ((GalleryLanguagesResult)(results[0])); + } + + /// + public System.IAsyncResult BeginGetGalleryLanguages(int packageId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetGalleryLanguages", new object[] { + packageId}, callback, asyncState); + } + + /// + public GalleryLanguagesResult EndGetGalleryLanguages(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((GalleryLanguagesResult)(results[0])); + } + + /// + public void GetGalleryLanguagesAsync(int packageId) { + this.GetGalleryLanguagesAsync(packageId, null); + } + + /// + public void GetGalleryLanguagesAsync(int packageId, object userState) { + if ((this.GetGalleryLanguagesOperationCompleted == null)) { + this.GetGalleryLanguagesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryLanguagesOperationCompleted); + } + this.InvokeAsync("GetGalleryLanguages", new object[] { + packageId}, this.GetGalleryLanguagesOperationCompleted, userState); + } + + private void OnGetGalleryLanguagesOperationCompleted(object arg) { + if ((this.GetGalleryLanguagesCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetGalleryLanguagesCompleted(this, new GetGalleryLanguagesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetGalleryApplicationsByServiceId", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public GalleryApplicationsResult GetGalleryApplicationsByServiceId(int serviceId) { @@ -184,6 +327,50 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetGalleryApplicationsFiltered", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public GalleryApplicationsResult GetGalleryApplicationsFiltered(int packageId, string pattern) { + object[] results = this.Invoke("GetGalleryApplicationsFiltered", new object[] { + packageId, + pattern}); + return ((GalleryApplicationsResult)(results[0])); + } + + /// + public System.IAsyncResult BeginGetGalleryApplicationsFiltered(int packageId, string pattern, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetGalleryApplicationsFiltered", new object[] { + packageId, + pattern}, callback, asyncState); + } + + /// + public GalleryApplicationsResult EndGetGalleryApplicationsFiltered(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((GalleryApplicationsResult)(results[0])); + } + + /// + public void GetGalleryApplicationsFilteredAsync(int packageId, string pattern) { + this.GetGalleryApplicationsFilteredAsync(packageId, pattern, null); + } + + /// + public void GetGalleryApplicationsFilteredAsync(int packageId, string pattern, object userState) { + if ((this.GetGalleryApplicationsFilteredOperationCompleted == null)) { + this.GetGalleryApplicationsFilteredOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryApplicationsFilteredOperationCompleted); + } + this.InvokeAsync("GetGalleryApplicationsFiltered", new object[] { + packageId, + pattern}, this.GetGalleryApplicationsFilteredOperationCompleted, userState); + } + + private void OnGetGalleryApplicationsFilteredOperationCompleted(object arg) { + if ((this.GetGalleryApplicationsFilteredCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetGalleryApplicationsFilteredCompleted(this, new GetGalleryApplicationsFilteredCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetGalleryCategories", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public GalleryCategoriesResult GetGalleryCategories(int packageId) { @@ -315,24 +502,26 @@ namespace WebsitePanel.EnterpriseServer { /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/Install", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public StringResultObject Install(int packageId, string webAppId, string siteName, string virtualDir, DeploymentParameter[] parameters) { + public StringResultObject Install(int packageId, string webAppId, string siteName, string virtualDir, DeploymentParameter[] parameters, string languageId) { object[] results = this.Invoke("Install", new object[] { packageId, webAppId, siteName, virtualDir, - parameters}); + parameters, + languageId}); return ((StringResultObject)(results[0])); } /// - public System.IAsyncResult BeginInstall(int packageId, string webAppId, string siteName, string virtualDir, DeploymentParameter[] parameters, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginInstall(int packageId, string webAppId, string siteName, string virtualDir, DeploymentParameter[] parameters, string languageId, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("Install", new object[] { packageId, webAppId, siteName, virtualDir, - parameters}, callback, asyncState); + parameters, + languageId}, callback, asyncState); } /// @@ -342,12 +531,12 @@ namespace WebsitePanel.EnterpriseServer { } /// - public void InstallAsync(int packageId, string webAppId, string siteName, string virtualDir, DeploymentParameter[] parameters) { - this.InstallAsync(packageId, webAppId, siteName, virtualDir, parameters, null); + public void InstallAsync(int packageId, string webAppId, string siteName, string virtualDir, DeploymentParameter[] parameters, string languageId) { + this.InstallAsync(packageId, webAppId, siteName, virtualDir, parameters, languageId, null); } /// - public void InstallAsync(int packageId, string webAppId, string siteName, string virtualDir, DeploymentParameter[] parameters, object userState) { + public void InstallAsync(int packageId, string webAppId, string siteName, string virtualDir, DeploymentParameter[] parameters, string languageId, object userState) { if ((this.InstallOperationCompleted == null)) { this.InstallOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInstallOperationCompleted); } @@ -356,7 +545,8 @@ namespace WebsitePanel.EnterpriseServer { webAppId, siteName, virtualDir, - parameters}, this.InstallOperationCompleted, userState); + parameters, + languageId}, this.InstallOperationCompleted, userState); } private void OnInstallOperationCompleted(object arg) { @@ -416,33 +606,46 @@ namespace WebsitePanel.EnterpriseServer { } } - - - - - - - - - - - - - - - - - - - - + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void InitFeedsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void SetResourceLanguageCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetGalleryLanguagesCompletedEventHandler(object sender, GetGalleryLanguagesCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetGalleryLanguagesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetGalleryLanguagesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public GalleryLanguagesResult Result { + get { + this.RaiseExceptionIfNecessary(); + return ((GalleryLanguagesResult)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationsByServiceIdCompletedEventHandler(object sender, GetGalleryApplicationsByServiceIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationsByServiceIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -464,11 +667,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationsCompletedEventHandler(object sender, GetGalleryApplicationsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -490,11 +693,37 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetGalleryApplicationsFilteredCompletedEventHandler(object sender, GetGalleryApplicationsFilteredCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetGalleryApplicationsFilteredCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetGalleryApplicationsFilteredCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public GalleryApplicationsResult Result { + get { + this.RaiseExceptionIfNecessary(); + return ((GalleryApplicationsResult)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryCategoriesCompletedEventHandler(object sender, GetGalleryCategoriesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryCategoriesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -516,11 +745,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationDetailsCompletedEventHandler(object sender, GetGalleryApplicationDetailsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationDetailsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -542,11 +771,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationParamsCompletedEventHandler(object sender, GetGalleryApplicationParamsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationParamsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -568,11 +797,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void InstallCompletedEventHandler(object sender, InstallCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class InstallCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -594,11 +823,11 @@ namespace WebsitePanel.EnterpriseServer { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationStatusCompletedEventHandler(object sender, GetGalleryApplicationStatusCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.1432")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs index 6f8320e3..db431763 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/OperatingSystems/OperatingSystemController.cs @@ -39,6 +39,7 @@ using WebsitePanel.Server; using WebsitePanel.Providers; using WebsitePanel.Providers.OS; using OS = WebsitePanel.Providers.OS; +using System.Collections; namespace WebsitePanel.EnterpriseServer { @@ -406,6 +407,67 @@ namespace WebsitePanel.EnterpriseServer } #endregion + #region Web Platform Installer + + public static void InitWPIFeeds(int serverId, string feedUrls) + { + GetServerService(serverId).InitWPIFeeds(feedUrls); + } + + public static WPITab[] GetWPITabs(int serverId) + { + return GetServerService(serverId).GetWPITabs(); + } + + public static WPIKeyword[] GetWPIKeywords(int serverId) + { + return GetServerService(serverId).GetWPIKeywords(); + } + + public static WPIProduct[] GetWPIProducts(int serverId, string tabId, string keywordId) + { + return GetServerService(serverId).GetWPIProducts(tabId, keywordId); + } + + public static WPIProduct[] GetWPIProductsFiltered(int serverId, string keywordId) + { + return GetServerService(serverId).GetWPIProductsFiltered(keywordId); + } + + + + public static WPIProduct[] GetWPIProductsWithDependencies(int serverId, string[] products) + { + return GetServerService(serverId).GetWPIProductsWithDependencies(products); + } + public static void InstallWPIProducts(int serverId, string[] products) + { + GetServerService(serverId).InstallWPIProducts(products); + } + + public static void CancelInstallWPIProducts(int serverId) + { + GetServerService(serverId).CancelInstallWPIProducts(); + } + + public static string GetWPIStatus(int serverId) + { + return GetServerService(serverId).GetWPIStatus(); + } + + public static string WpiGetLogFileDirectory(int serverId) + { + return GetServerService(serverId).WpiGetLogFileDirectory(); + } + + public static SettingPair[] WpiGetLogsInDirectory(int serverId, string Path) + { + return GetServerService(serverId).WpiGetLogsInDirectory(Path); + } + + + #endregion + #region Event Viewer public static string[] GetLogNames(int serverId) { @@ -684,6 +746,7 @@ namespace WebsitePanel.EnterpriseServer return 0; } + #endregion } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs index c90c79d1..a2a0fd24 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/WebAppGallery/WebAppGalleryController.cs @@ -62,6 +62,88 @@ namespace WebsitePanel.EnterpriseServer public const string GET_GALLERY_CATEGORIES_TASK = "GET_GALLERY_CATEGORIES_TASK"; #endregion + private static string[] getFeedsFromSettings(int packageId) + { + int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Web); + + return getFeedsFromSettingsByServiceId(serviceId); + + } + + private static string[] getFeedsFromSettingsByServiceId(int serviceId) + { + StringDictionary serviceSettings = ServerController.GetServiceSettings(serviceId); + + List arFeeds = new List(); + + if (Utils.ParseBool(serviceSettings["FeedEnableMicrosoft"], true)) + { + arFeeds.Add("https://www.microsoft.com/web/webpi/3.0/WebProductList.xml"); + } + + if (Utils.ParseBool(serviceSettings["FeedEnableHelicon"], true)) + { + arFeeds.Add("http://www.helicontech.com/zoo/feed/wsp"); + } + + string additionalFeeds = serviceSettings["FeedUrls"]; + if (!string.IsNullOrEmpty(additionalFeeds)) + { + arFeeds.AddRange(additionalFeeds.Split(';')); + } + + return arFeeds.ToArray(); + } + public static void InitFeedsByServiceId(int UserId, int serviceId) + { + string[] feeds = getFeedsFromSettingsByServiceId(serviceId); + + WebServer webServer = WebServerController.GetWebServer(serviceId); + webServer.InitFeeds(UserId, feeds); + } + + + + public static void InitFeeds(int UserId, int packageId) + { + string[] feeds = getFeedsFromSettings(packageId); + + // Set feeds + WebServer webServer = GetAssociatedWebServer(packageId); + webServer.InitFeeds(UserId, feeds); + + } + + public static void SetResourceLanguage(int packageId, string resourceLanguage) + { + GetAssociatedWebServer(packageId).SetResourceLanguage(SecurityContext.User.UserId,resourceLanguage); + } + + + public static GalleryLanguagesResult GetGalleryLanguages(int packageId) + { + GalleryLanguagesResult result; + + try + { + WebServer webServer = GetAssociatedWebServer(packageId); + result = webServer.GetGalleryLanguages(SecurityContext.User.UserId); + + if (!result.IsSuccess) + return Error(result, GalleryErrors.GetLanguagesError); + } + catch (Exception ex) + { + return Error(GalleryErrors.GetLanguagesError, ex.Message); + } + finally + { + } + // + return result; + + } + public static GalleryCategoriesResult GetGalleryCategories(int packageId) { GalleryCategoriesResult result; @@ -77,7 +159,7 @@ namespace WebsitePanel.EnterpriseServer return Error(GalleryErrors.MsDeployIsNotInstalled); // get categories - result = webServer.GetGalleryCategories(); + result = webServer.GetGalleryCategories(SecurityContext.User.UserId); if (!result.IsSuccess) return Error(result, GalleryErrors.GetCategoriesError); @@ -114,7 +196,7 @@ namespace WebsitePanel.EnterpriseServer return Error(GalleryErrors.MsDeployIsNotInstalled); // get applications - result = webServer.GetGalleryApplications(String.Empty); + result = webServer.GetGalleryApplications(SecurityContext.User.UserId,String.Empty); if (!result.IsSuccess) return Error(result, GalleryErrors.GetApplicationsError); @@ -132,7 +214,7 @@ namespace WebsitePanel.EnterpriseServer return result; } - public static GalleryApplicationsResult GetGalleryApplications(int packageId, string categoryId) + public static GalleryApplicationsResult GetGalleryApplications(int packageId, string categoryId) { GalleryApplicationsResult result; // @@ -146,7 +228,7 @@ namespace WebsitePanel.EnterpriseServer return Error(GalleryErrors.MsDeployIsNotInstalled); // get applications - result = webServer.GetGalleryApplications(categoryId); + result = webServer.GetGalleryApplications(SecurityContext.User.UserId,categoryId); if (!result.IsSuccess) return Error(result, GalleryErrors.GetApplicationsError); @@ -189,20 +271,8 @@ namespace WebsitePanel.EnterpriseServer // || MatchMenaltoGalleryApp(x, appsFilter.ToArray()))); { - int userId = SecurityContext.User.UserId; - // - SecurityContext.SetThreadSupervisorPrincipal(); - // - string[] filteredApps = GetServiceAppsCatalogFilter(packageId); - // - if (filteredApps != null) - { - result.Value = new List(Array.FindAll(result.Value.ToArray(), - x => !Array.Exists(filteredApps, - z => z.Equals(x.Id, StringComparison.InvariantCultureIgnoreCase)))); - } - // - SecurityContext.SetThreadPrincipal(userId); + FilterResultApplications(packageId, result); + } } catch (Exception ex) @@ -218,6 +288,61 @@ namespace WebsitePanel.EnterpriseServer return result; } + private static void FilterResultApplications(int packageId, GalleryApplicationsResult result) + { + int userId = SecurityContext.User.UserId; + // + SecurityContext.SetThreadSupervisorPrincipal(); + // + string[] filteredApps = GetServiceAppsCatalogFilter(packageId); + // + if (filteredApps != null) + { + result.Value = new List(Array.FindAll(result.Value.ToArray(), + x => !Array.Exists(filteredApps, + z => z.Equals(x.Id, StringComparison.InvariantCultureIgnoreCase)))); + } + // + SecurityContext.SetThreadPrincipal(userId); + } + + public static GalleryApplicationsResult GetGalleryApplicationsFiltered(int packageId, string pattern) + { + GalleryApplicationsResult result; + // + try + { + TaskManager.StartTask(TASK_MANAGER_SOURCE, GET_GALLERY_APPS_TASK); + + // check if WAG is installed + WebServer webServer = GetAssociatedWebServer(packageId); + if (!webServer.IsMsDeployInstalled()) + return Error(GalleryErrors.MsDeployIsNotInstalled); + + // get applications + result = webServer.GetGalleryApplicationsFiltered(SecurityContext.User.UserId,pattern); + + FilterResultApplications(packageId, result); + + if (!result.IsSuccess) + return Error(result, GalleryErrors.GetApplicationsError); + + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + return Error(GalleryErrors.GeneralError, ex.Message); + } + finally + { + TaskManager.CompleteTask(); + } + // + return result; + + } + + internal static bool MatchParticularAppDependency(Dependency dependency, string[] dependencyIds) { List nested = null; @@ -311,7 +436,7 @@ namespace WebsitePanel.EnterpriseServer return Error(GalleryErrors.MsDeployIsNotInstalled); // get application details - result = webServer.GetGalleryApplication(applicationId); + result = webServer.GetGalleryApplication(SecurityContext.User.UserId,applicationId); if (!result.IsSuccess) return Error(result, GalleryErrors.GetApplicationError); @@ -396,7 +521,7 @@ namespace WebsitePanel.EnterpriseServer return Error(GalleryErrors.MsDeployIsNotInstalled); // get parameters - result = webServer.GetGalleryApplicationParameters(webAppId); + result = webServer.GetGalleryApplicationParameters(SecurityContext.User.UserId,webAppId); if (!result.IsSuccess) return Error(result, GalleryErrors.GetApplicationParametersError); @@ -414,9 +539,10 @@ namespace WebsitePanel.EnterpriseServer return result; } - public static StringResultObject Install(int packageId, string webAppId, string siteName, string virtualDir, List parameters) + public static StringResultObject Install(int packageId, string webAppId, string siteName, string virtualDir, List parameters, string languageId ) { StringResultObject result = new StringResultObject(); + int originalUserId = SecurityContext.User.UserId; try { @@ -455,7 +581,7 @@ namespace WebsitePanel.EnterpriseServer return Error(GalleryErrors.WebSiteNotFound, siteName); // get application pack details - GalleryApplicationResult app = webServer.GetGalleryApplication(webAppId); + GalleryApplicationResult app = webServer.GetGalleryApplication(SecurityContext.User.UserId,webAppId); if (!app.IsSuccess) return Error(app, GalleryErrors.GeneralError); if (app.Value == null) @@ -643,7 +769,7 @@ namespace WebsitePanel.EnterpriseServer } // install application - result = webServer.InstallGalleryApplication(webAppId, parameters.ToArray()); + result = webServer.InstallGalleryApplication(originalUserId, webAppId, parameters.ToArray(), languageId); #region Rollback in case of failure // Rollback - remove resources have been created previously @@ -665,12 +791,25 @@ namespace WebsitePanel.EnterpriseServer #region Update Web Application settings WebVirtualDirectory iisApp = null; - if(String.IsNullOrEmpty(virtualDir)) - // load web site - iisApp = WebServerController.GetWebSite(packageId, siteName); - else - // load virtual directory - iisApp = WebServerController.GetVirtualDirectory(webSite.Id, virtualDir); + if (String.IsNullOrEmpty(virtualDir)) + // load web site + iisApp = WebServerController.GetWebSite(packageId, siteName); + else + { + try + { + // load virtual directory + iisApp = WebServerController.GetVirtualDirectory(webSite.Id, virtualDir); + } + catch (Exception ex) + { + throw new Exception( + string.Format( + "{0} on WebServerController.GetVirtualDirectory(\"{1}\", \"{2}\")", + ex.GetType(), webSite.Id, virtualDir), + ex); + } + } // put correct extensions if ((app.Value.WellKnownDependencies & GalleryApplicationWellKnownDependency.AspNet20) == GalleryApplicationWellKnownDependency.AspNet20) @@ -714,7 +853,10 @@ namespace WebsitePanel.EnterpriseServer TaskManager.WriteError(ex); // exit with error code - return Error(GalleryErrors.GeneralError); + //return Error(GalleryErrors.GeneralError); + + result.AddError(GalleryErrors.GeneralError, ex); + return result; } finally { @@ -746,11 +888,11 @@ namespace WebsitePanel.EnterpriseServer if (!webServer.IsMsDeployInstalled()) return Error(GalleryErrors.MsDeployIsNotInstalled); // - GalleryWebAppStatus appStatus = webServer.GetGalleryApplicationStatus(webAppId); + GalleryWebAppStatus appStatus = webServer.GetGalleryApplicationStatus(SecurityContext.User.UserId,webAppId); // if (appStatus == GalleryWebAppStatus.NotDownloaded) { - GalleryApplicationResult appResult = webServer.GetGalleryApplication(webAppId); + GalleryApplicationResult appResult = webServer.GetGalleryApplication(SecurityContext.User.UserId,webAppId); // Start app download in new thread WebAppGalleryAsyncWorker async = new WebAppGalleryAsyncWorker(); async.GalleryApp = appResult.Value; @@ -897,7 +1039,7 @@ namespace WebsitePanel.EnterpriseServer // TaskManager.Write("Application package download has been started"); // - GalleryWebAppStatus appStatus = webServer.DownloadGalleryApplication(WebAppId); + GalleryWebAppStatus appStatus = webServer.DownloadGalleryApplication(SecurityContext.User.UserId,WebAppId); // if (appStatus == GalleryWebAppStatus.Failed) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esServers.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esServers.asmx.cs index 1df94af6..05f403ee 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esServers.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esServers.asmx.cs @@ -41,6 +41,7 @@ using Microsoft.Web.Services3; using WebsitePanel.Providers.DNS; using WebsitePanel.Server; using WebsitePanel.Providers.ResultObjects; +using WebsitePanel.Providers; namespace WebsitePanel.EnterpriseServer { @@ -663,6 +664,108 @@ namespace WebsitePanel.EnterpriseServer } #endregion + + #region Web Platform Installer + + [WebMethod] + public void InitWPIFeeds(int serverId) + { + var wpiSettings = SystemController.GetSystemSettings(SystemSettings.WPI_SETTINGS); + + + List arFeeds = new List(); + + if (Utils.ParseBool(wpiSettings["FeedEnableMicrosoft"] ,true)) + { + arFeeds.Add( "https://www.microsoft.com/web/webpi/3.0/WebProductList.xml" ); + } + + if (Utils.ParseBool(wpiSettings["FeedEnableHelicon"] ,true)) + { + arFeeds.Add( "http://www.helicontech.com/zoo/feed/wsp" ); + } + + string additionalFeeds = wpiSettings["FeedUrls"]; + if (!string.IsNullOrEmpty(additionalFeeds)) + { + arFeeds.AddRange(additionalFeeds.Split(';')); + } + + OperatingSystemController.InitWPIFeeds(serverId, string.Join(";", arFeeds)); + + } + + [WebMethod] + public WPITab[] GetWPITabs(int serverId) + { + InitWPIFeeds(serverId); + return OperatingSystemController.GetWPITabs(serverId); + } + + [WebMethod] + public WPIKeyword[] GetWPIKeywords(int serverId) + { + InitWPIFeeds(serverId); + return OperatingSystemController.GetWPIKeywords(serverId); + } + + [WebMethod] + public WPIProduct[] GetWPIProducts(int serverId, string tabId, string keywordId) + { + InitWPIFeeds(serverId); + return OperatingSystemController.GetWPIProducts(serverId, tabId, keywordId); + } + + [WebMethod] + public WPIProduct[] GetWPIProductsFiltered(int serverId, string keywordId) + { + InitWPIFeeds(serverId); + return OperatingSystemController.GetWPIProductsFiltered(serverId, keywordId); + } + + + [WebMethod] + public WPIProduct[] GetWPIProductsWithDependencies(int serverId, string[] products) + { + InitWPIFeeds(serverId); + return OperatingSystemController.GetWPIProductsWithDependencies(serverId, products); + } + + [WebMethod] + public void InstallWPIProducts(int serverId, string[] products) + { + InitWPIFeeds(serverId); + OperatingSystemController.InstallWPIProducts(serverId, products); + } + + [WebMethod] + public void CancelInstallWPIProducts(int serviceId) + { + OperatingSystemController.CancelInstallWPIProducts(serviceId); + } + + + [WebMethod] + public string GetWPIStatus(int serverId) + { + return OperatingSystemController.GetWPIStatus(serverId); + } + + [WebMethod] + public string WpiGetLogFileDirectory(int serverId) + { + return OperatingSystemController.WpiGetLogFileDirectory(serverId); + } + + [WebMethod] + public SettingPair[] WpiGetLogsInDirectory(int serverId, string Path) + { + return OperatingSystemController.WpiGetLogsInDirectory(serverId, Path); + } + #endregion + + + #region Windows Services [WebMethod] public WindowsService[] GetWindowsServices(int serverId) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esWebApplicationGallery.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esWebApplicationGallery.asmx.cs index 4bee3f7a..1c412911 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esWebApplicationGallery.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esWebApplicationGallery.asmx.cs @@ -43,45 +43,81 @@ namespace WebsitePanel.EnterpriseServer [System.ComponentModel.ToolboxItem(false)] public class esWebApplicationGallery : System.Web.Services.WebService { + [WebMethod] + public void InitFeeds(int packageId) + { + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); + } + + [WebMethod] + public void SetResourceLanguage(int packageId, string resourceLanguage) + { + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); + WebAppGalleryController.SetResourceLanguage(packageId, resourceLanguage); + } + + + [WebMethod] + public GalleryLanguagesResult GetGalleryLanguages(int packageId) + { + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); + return WebAppGalleryController.GetGalleryLanguages(packageId); + } + + [WebMethod] public GalleryApplicationsResult GetGalleryApplicationsByServiceId(int serviceId) { + WebAppGalleryController.InitFeedsByServiceId(SecurityContext.User.UserId, serviceId); return WebAppGalleryController.GetGalleryApplicationsByServiceId(serviceId); } [WebMethod] public GalleryApplicationsResult GetGalleryApplications(int packageId, string categoryId) { - return WebAppGalleryController.GetGalleryApplications(packageId, categoryId); + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); + return WebAppGalleryController.GetGalleryApplications(packageId, categoryId); + } + + [WebMethod] + public GalleryApplicationsResult GetGalleryApplicationsFiltered(int packageId, string pattern) + { + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); + return WebAppGalleryController.GetGalleryApplicationsFiltered(packageId, pattern); } [WebMethod] public GalleryCategoriesResult GetGalleryCategories(int packageId) { + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); return WebAppGalleryController.GetGalleryCategories(packageId); } [WebMethod] public GalleryApplicationResult GetGalleryApplicationDetails(int packageId, string applicationId) { + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); return WebAppGalleryController.GetGalleryApplicationDetails(packageId, applicationId); } [WebMethod] public DeploymentParametersResult GetGalleryApplicationParams(int packageId, string applicationId) { + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); return WebAppGalleryController.GetGalleryApplicationParams(packageId, applicationId); } [WebMethod] - public StringResultObject Install(int packageId, string webAppId, string siteName, string virtualDir, List parameters) + public StringResultObject Install(int packageId, string webAppId, string siteName, string virtualDir, List parameters, string languageId) { - return WebAppGalleryController.Install(packageId, webAppId, siteName, virtualDir, parameters); + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); + return WebAppGalleryController.Install(packageId, webAppId, siteName, virtualDir, parameters, languageId); } [WebMethod(Description="Returns Web Application Gallery application status, such as Downloaded, Downloading, Failed or NotDownloaded. Throws an ApplicationException if WAG module is not available on the target server.")] public GalleryWebAppStatus GetGalleryApplicationStatus(int packageId, string webAppId) { + WebAppGalleryController.InitFeeds(SecurityContext.User.UserId, packageId); return WebAppGalleryController.GetGalleryApplicationStatus(packageId, webAppId); } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/WPIEntries.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/WPIEntries.cs new file mode 100644 index 00000000..a61106c7 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/WPIEntries.cs @@ -0,0 +1,214 @@ +// 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.Generic; +using System.Linq; +using System.Text; + +namespace WebsitePanel.Server +{ + public class WPIProduct + { + private string productId; + private string logo; + private string summary; + private string title; + private string link; + private string version; + private string eulaUrl; + private string downloadedLocation; + private string longDescription; + private bool isInstalled; + private int fileSize; + private DateTime published; + private string author; + private string authorUri; + + public WPIProduct() + { + } + + public string Logo + { + get { return this.logo; } + set { this.logo = value; } + } + + public string ProductId + { + get { return this.productId; } + set { this.productId = value; } + } + + + public string Summary + { + get { return this.summary; } + set { this.summary = value; } + } + + public string Title + { + get { return this.title; } + set { this.title = value; } + } + + public string Link + { + get { return this.link; } + set { this.link = value; } + } + + public bool IsInstalled + { + get { return this.isInstalled; } + set { this.isInstalled = value; } + } + + public string Version + { + get { return this.version; } + set { this.version = value; } + } + + public string EulaUrl + { + get { return this.eulaUrl; } + set { this.eulaUrl = value; } + } + + public string DownloadedLocation + { + get { return this.downloadedLocation; } + set { this.downloadedLocation = value; } + } + + public int FileSize + { + get { return this.fileSize; } + set { this.fileSize = value; } + } + + public string LongDescription + { + get { return this.longDescription; } + set { this.longDescription = value; } + } + + public DateTime Published + { + get { return this.published; } + set { this.published = value; } + } + + public string Author + { + get { return author; } + set { author = value; } + } + + public string AuthorUri + { + get { return authorUri; } + set { authorUri = value; } + } + } + + public class WPITab + { + private string description; + private bool fromCustomFeed; + private string id; + private string name; + + public WPITab() + { + + } + + public WPITab(string id, string name) + { + this.id = id; + this.name = name; + } + + public string Description + { + get { return this.description; } + set { this.description = value; } + } + + public bool FromCustomFeed + { + get { return this.fromCustomFeed; } + set { this.fromCustomFeed = value; } + } + + public string Id + { + get { return this.id; } + set { this.id = value; } + } + + public string Name + { + get { return this.name; } + set { this.name = value; } + } + } + + public class WPIKeyword + { + private string id; + private string text; + + public WPIKeyword() + { + + } + + public WPIKeyword(string id, string text) + { + this.id = id; + this.text = text; + } + + public string Id + { + get { return this.id; } + set { this.id = value; } + } + + public string Text + { + get { return this.text; } + set { this.text = value; } + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/ResultObjects/ResultObject.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/ResultObjects/ResultObject.cs index 059724e5..e78c84af 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/ResultObjects/ResultObject.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/ResultObjects/ResultObject.cs @@ -57,7 +57,7 @@ namespace WebsitePanel.Providers.Common public void AddError(string errorCode, Exception ex) { if(ex != null) - errorCode += ":" + ex.Message; + errorCode += ":" + ex.Message + "; " + ex.StackTrace; this.ErrorCodes.Add(errorCode); this.IsSuccess = false; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/ResultObjects/WebAppGallery.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/ResultObjects/WebAppGallery.cs index a0977b61..62f7e55f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/ResultObjects/WebAppGallery.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/ResultObjects/WebAppGallery.cs @@ -47,4 +47,8 @@ namespace WebsitePanel.Providers.ResultObjects public class DeploymentParametersResult : ValueResultObject> { } + + public class GalleryLanguagesResult : ValueResultObject> + { + } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs index 48bc62cc..500d303a 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Web/IWebServer.cs @@ -119,14 +119,18 @@ namespace WebsitePanel.Providers.Web // web app gallery + void InitFeeds(int UserId, string[] feeds); + void SetResourceLanguage(int UserId, string resourceLanguage); bool IsMsDeployInstalled(); - GalleryCategoriesResult GetGalleryCategories(); - GalleryApplicationsResult GetGalleryApplications(string categoryId); - GalleryApplicationResult GetGalleryApplication(string id); - GalleryWebAppStatus GetGalleryApplicationStatus(string id); - GalleryWebAppStatus DownloadGalleryApplication(string id); - DeploymentParametersResult GetGalleryApplicationParameters(string id); - StringResultObject InstallGalleryApplication(string id, List updatedValues); + GalleryLanguagesResult GetGalleryLanguages(int UserId); + GalleryCategoriesResult GetGalleryCategories(int UserId); + GalleryApplicationsResult GetGalleryApplications(int UserId, string categoryId); + GalleryApplicationsResult GetGalleryApplicationsFiltered(int UserId, string pattern); + GalleryApplicationResult GetGalleryApplication(int UserId, string id); + GalleryWebAppStatus GetGalleryApplicationStatus(int UserId, string id); + GalleryWebAppStatus DownloadGalleryApplication(int UserId, string id); + DeploymentParametersResult GetGalleryApplicationParameters(int UserId, string id); + StringResultObject InstallGalleryApplication(int UserId, string id, List updatedValues, string languageId); // void GrantWebManagementAccess(string siteId, string accountName, string accountPassword); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/DeploymentParameter.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/DeploymentParameter.cs index 12ed980a..5306c53d 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/DeploymentParameter.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/DeploymentParameter.cs @@ -41,37 +41,48 @@ namespace WebsitePanel.Providers.WebAppGallery } [Flags] - public enum DeploymentParameterWellKnownTag + public enum DeploymentParameterWellKnownTag : long { - None = 0, - AppHostConfig = 1, - AppPoolConfig = 2, - Boolean = 4, - ComObject32 = 8, - ComObject64 = 16, - DBAdminPassword = 32, - DBAdminUserName = 64, - DBConnectionString = 128, - DBName = 256, - DBServer = 512, - DBUserName = 1024, - DBUserPassword = 2048, - FlatFile = 4096, - Hidden = 8192, - IisApp = 16384, - MetaKey = 32768, - MySql = 65536, - MySqlConnectionString = 131072, - New = 262144, - RegKey = 524288, - SetAcl = 1048576, - Sql = 2097152, - SqLite = 4194304, - SqlConnectionString = 8388608, - Password = 16777216, - PhysicalPath = 33554432, - VistaDB = 67108864, - Validate = 134217728, + None = 0L, + AppHostConfig = 1L, + AppPoolConfig = 2L, + Boolean = 4L, + ComObject32 = 8L, + ComObject64 = 16L, + DBAdminPassword = 32L, + DBAdminUserName = 64L, + DBConnectionString = 128L, + DBName = 256L, + DBServer = 512L, + DBUserName = 1024L, + DBUserPassword = 2048L, + FlatFile = 4096L, + Hidden = 8192L, + IisApp = 16384L, + MetaKey = 32768L, + MySql = 65536L, + MySqlConnectionString = 131072L, + New = 262144L, + RegKey = 524288L, + SetAcl = 1048576L, + Sql = 2097152L, + SqLite = 4194304L, + SqlConnectionString = 8388608L, + Password = 16777216L, + PhysicalPath = 33554432L, + VistaDB = 67108864L, + Validate = 134217728L, + SqLiteConnectionString = 268435456L, + SqlCE = 536870912L, + NoStore = 1073741824L, + AppURL = 2147483648L, + NoProtocol = 4294967296L, + DBUserConnectionString = 8589934592L, + DBAdminConnectionString = 17179869184L, + WebPIApplicationID = 34359738368L, + Ignore = 68719476736L, + AutoGenerated = 137438953472L, + SingleLineConnectionString = 274877906944L, } [Serializable] diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryApplication.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryApplication.cs index 3075737b..882b4c2e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryApplication.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryApplication.cs @@ -203,7 +203,7 @@ namespace WebsitePanel.Providers.WebAppGallery } } - [XmlIgnore] + [XmlIgnore] public string Size { get @@ -217,6 +217,10 @@ namespace WebsitePanel.Providers.WebAppGallery } } + [XmlElement(ElementName = "installerFileSize", Namespace = "http://www.w3.org/2005/Atom")] + public int InstallerFileSize { get; set; } + + public string AuthorName { get { return Author.Name; } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryErrors.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryErrors.cs index 528b1a54..44f14937 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryErrors.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebAppGallery/GalleryErrors.cs @@ -53,6 +53,9 @@ namespace WebsitePanel.Providers.WebAppGallery public const string MsDeployIsNotInstalled = "MsDeployIsNotInstalled"; public const string GeneralError = "GeneralError"; // + exception message + // Languages + public const string GetLanguagesError = "GetLanguagesError"; + // Categories public const string GetCategoriesError = "GetCategoriesError"; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index d5f41672..c14f4912 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -74,6 +74,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Database.MySQL/WebsitePanel.Providers.Database.MySQL.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Database.MySQL/WebsitePanel.Providers.Database.MySQL.csproj index 74fa14c7..5dda564e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Database.MySQL/WebsitePanel.Providers.Database.MySQL.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Database.MySQL/WebsitePanel.Providers.Database.MySQL.csproj @@ -57,7 +57,7 @@ False - ..\..\..\..\..\Program Files (x86)\MySQL\Connector NET 6.3.7\Assemblies\v2.0\MySql.Data.dll + ..\..\Lib\References\MySQL\MySql.Data.dll diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs index b80bc76c..b8a89893 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/IIs70.cs @@ -59,6 +59,7 @@ using WebsitePanel.Providers.Web.WebObjects; using WebsitePanel.Providers.Web.Iis.Common; using WebsitePanel.Providers.Web.Iis; using Ionic.Zip; +using WebsitePanel.Providers.WebAppGallery; using WebsitePanel.Server.Utils; using WebsitePanel.Providers.Web.Delegation; @@ -3176,7 +3177,7 @@ namespace WebsitePanel.Providers.Web public const string WDeployAppPoolConfigEditor = "WDeployAppPoolConfigEditor"; - private void SetupWebDeployPublishingOnServer(List messages) + private void SetupWebDeployPublishingOnServer(List messages) { if (IsWebDeployInstalled() == false || String.IsNullOrEmpty(ProviderSettings[WDeployEnabled])) @@ -4026,5 +4027,11 @@ namespace WebsitePanel.Providers.Web return sslObjectService.CheckCertificate(webSite); } #endregion + + #region Web Platform Installer Application Gallery + + // moved down to IIs60 + + #endregion } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebsitePanel.Providers.Web.IIs70.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebsitePanel.Providers.Web.IIs70.csproj index a99e0d31..370f612d 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebsitePanel.Providers.Web.IIs70.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIS70/WebsitePanel.Providers.Web.IIs70.csproj @@ -59,6 +59,7 @@ False ..\..\Lib\Ionic.Zip.Reduced.dll + False ..\..\Lib\References\Microsoft\Microsoft.Web.Administration.dll @@ -67,6 +68,10 @@ False ..\..\Lib\References\Microsoft\Microsoft.Web.Management.dll + + False + ..\..\Lib\Microsoft.Web.PlatformInstaller.dll + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs index 8ba1570a..461a5344 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/IIs60.cs @@ -43,6 +43,7 @@ using System.IO; using Microsoft.Win32; using Microsoft.Web.Deployment; using WebsitePanel.Providers.HostedSolution; +using WebsitePanel.Providers.Web.WPIWebApplicationGallery; using WebsitePanel.Server.Utils; using WebsitePanel.Providers.OS; using WebsitePanel.Providers.Utils; @@ -283,7 +284,7 @@ namespace WebsitePanel.Providers.Web get { string ret = ProviderSettings["GalleryXmlFeedUrl"]; - if (string.IsNullOrEmpty(ret)) + if (String.IsNullOrEmpty(ret)) ret = WebApplicationGallery.WAG_DEFAULT_FEED_URL; return ret; } @@ -3386,246 +3387,209 @@ namespace WebsitePanel.Providers.Web return IsIISInstalled(); } - #region Microsoft Web Application Gallery + + #region Microsoft Web Application Gallery - public GalleryCategoriesResult GetGalleryCategories() - { - GalleryCategoriesResult result = new GalleryCategoriesResult(); + private const string MS_DEPLOY_ASSEMBLY_NAME = "Microsoft.Web.Deployment"; + private const string WPI_INSTANCE_VIEWER = "viewer"; + private const string WPI_INSTANCE_INSTALLER = "installer"; - try - { - WebApplicationGallery module = new WebApplicationGallery(GalleryXmlFeedUrl); - // - result.Value = module.GetCategories(); - result.IsSuccess = true; - } - catch (Exception ex) - { - result.IsSuccess = false; - result.AddError(GalleryErrors.ProcessingFeedXMLError, ex); - } - // - return result; - } + public void InitFeeds(int UserId, string[] feeds) + { + //need to call InitFeeds() before any operation with WPIApplicationGallery() + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_VIEWER); + module.InitFeeds(UserId, feeds); + } - public GalleryApplicationsResult GetGalleryApplications(string categoryId) - { - GalleryApplicationsResult result = new GalleryApplicationsResult(); + public void SetResourceLanguage(int UserId, string resourceLanguage) + { + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_VIEWER); + module.SetResourceLanguage(UserId, resourceLanguage); + } - try - { - WebApplicationGallery module = new WebApplicationGallery(GalleryXmlFeedUrl); - // - result.Value = module.GetApplications(categoryId); - result.IsSuccess = true; - } - catch (Exception ex) - { - result.IsSuccess = false; - result.AddError(GalleryErrors.ProcessingFeedXMLError, ex); - } - // - return result; - } + public bool IsMsDeployInstalled() + { + // project has reference to Microsoft.Web.Deployment, so + return true; + /* + try + { + Assembly.Load(MS_DEPLOY_ASSEMBLY_NAME); + return true; + } + catch + { + // type could not be instantiated + return false; + } + */ + } - public GalleryApplicationResult GetGalleryApplication(string id) - { - GalleryApplicationResult result = new GalleryApplicationResult(); - // - try - { - WebApplicationGallery module = new WebApplicationGallery(GalleryXmlFeedUrl); - // - result.Value = module.GetApplicationByProductId(id); - result.IsSuccess = true; - } - catch (Exception ex) - { - result.IsSuccess = false; - result.AddError(GalleryErrors.ProcessingFeedXMLError, ex); - } - // - return result; - } + public GalleryLanguagesResult GetGalleryLanguages(int UserId) + { + GalleryLanguagesResult result = new GalleryLanguagesResult(); + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_VIEWER); + try + { + result.Value = module.GetLanguages(UserId); + result.IsSuccess = true; + } + catch (Exception ex) + { + result.IsSuccess = false; + result.AddError(GalleryErrors.GetLanguagesError, ex); + } - public GalleryWebAppStatus GetGalleryApplicationStatus(string id) - { - GalleryWebAppStatus status = GalleryWebAppStatus.NotDownloaded; - // - try - { - WebApplicationGallery module = new WebApplicationGallery(GalleryXmlFeedUrl); - // - GalleryApplication appObject = module.GetApplicationByProductId(id); - // - if (appObject == null) - return GalleryWebAppStatus.Failed; - // - string appPackageDistr = module.GetApplicationPackagePath(appObject); - // Check whether distributive exists locally - if (!File.Exists(appPackageDistr)) - return GalleryWebAppStatus.NotDownloaded; - // Check whether distributive is in download queue - if (AppPackagesDownloader.IsApplicationInDownloadQueue(id)) - return GalleryWebAppStatus.Downloading; - // From this point distibutive is considered as existed locally and it's not in download queue, - // so lets ensure the downloaded file either is not corrupted during the download process - #region Atom Feed Version 0.2 - if (appObject.InstallerItems.Count > 0) - { - string md5CheckSum = appObject.InstallerItems[0].InstallerFile.MD5; - // Check MD5 check sum of the distributive - if (AppPackagesDownloader.CheckApplicationPackageHashSum_MD5(appPackageDistr, md5CheckSum)) - status = GalleryWebAppStatus.Downloaded; - } - #endregion + return result; + } - #region Atom Feed Version 2.0.1.0 - else if (appObject.Installers.Count > 0) - { - string sha1CheckSum = appObject.Installers[0].InstallerFile.SHA1; - // Check SHA1 check sum of the distributive - if (AppPackagesDownloader.CheckApplicationPackageHashSum_SHA1(appPackageDistr, sha1CheckSum)) - status = GalleryWebAppStatus.Downloaded; - } - #endregion - // If MD5 check sum is failed then we have to resume distibutive download - else - status = GalleryWebAppStatus.NotDownloaded; - } - catch (Exception ex) - { - Log.WriteError(ex); - // - return GalleryWebAppStatus.Failed; - } - // - return status; - } + public GalleryCategoriesResult GetGalleryCategories(int UserId) + { + GalleryCategoriesResult result = new GalleryCategoriesResult(); - public GalleryWebAppStatus DownloadGalleryApplication(string id) - { - WebApplicationGallery module = new WebApplicationGallery(GalleryXmlFeedUrl); - // - GalleryApplication appObject = module.GetApplicationByProductId(id); - if (appObject == null) - return GalleryWebAppStatus.Failed; - // - string localAppDistr = module.GetApplicationPackagePath(appObject); - // - InstallerFile installerFile = null; + //try + //{ + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_VIEWER); + // + result.Value = module.GetCategories(UserId); + result.IsSuccess = true; + //} + //catch (Exception ex) + //{ + // result.IsSuccess = false; + // result.AddError(GalleryErrors.ProcessingFeedXMLError, ex); + //} + //// + return result; + } - #region Atom Feed Version 0.2 - // - if (appObject.InstallerItems.Count > 0) - { - InstallerItem installerItem_0 = appObject.InstallerItems[0]; - // - if (installerItem_0 == null) - { - Log.WriteWarning(WEB_PI_APP_PACK_ROOT_INSTALLER_ITEM_MISSING, appObject.Title); - return GalleryWebAppStatus.Failed; - } - // - installerFile = installerItem_0.InstallerFile; - } - #endregion + public GalleryApplicationsResult GetGalleryApplications(int UserId, string categoryId) + { + GalleryApplicationsResult result = new GalleryApplicationsResult(); - #region Atom Feed Version 2.0.1.0 - // - if (appObject.Installers.Count > 0) - { - Installer installerItem_0 = appObject.Installers[0]; - // - if (installerItem_0 == null) - { - Log.WriteWarning(WEB_PI_APP_PACK_ROOT_INSTALLER_ITEM_MISSING, appObject.Title); - return GalleryWebAppStatus.Failed; - } - // - installerFile = installerItem_0.InstallerFile; - } - #endregion + try + { + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_VIEWER); + // + result.Value = module.GetApplications(UserId, categoryId); + result.IsSuccess = true; + } + catch (Exception ex) + { + result.IsSuccess = false; + result.AddError(GalleryErrors.ProcessingFeedXMLError, ex); + } + // + return result; + } - // - if (installerFile == null || String.IsNullOrEmpty(installerFile.InstallerUrl)) - { - Log.WriteWarning(WEB_PI_APP_PACK_DISPLAY_URL_MISSING, appObject.Title); - return GalleryWebAppStatus.Failed; - } + public GalleryApplicationsResult GetGalleryApplicationsFiltered(int UserId, string pattern) + { + GalleryApplicationsResult result = new GalleryApplicationsResult(); - // - try - { - string appCacheRoot = Path.GetDirectoryName(localAppDistr); - // - if (!Directory.Exists(appCacheRoot)) - Directory.CreateDirectory(appCacheRoot); - // - Log.WriteInfo("Local distributive path: {0}", localAppDistr); - AppPackagesDownloader.StartApplicationDownload(id, installerFile.InstallerUrl, localAppDistr); - } - catch (Exception ex) - { - Log.WriteError(ex); - // - return GalleryWebAppStatus.Failed; - } - // - return GalleryWebAppStatus.Downloading; - } + try + { + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_VIEWER); - public bool IsMsDeployInstalled() - { - WebApplicationGallery module = new WebApplicationGallery(GalleryXmlFeedUrl); - // - return module.IsMsDeployInstalled(); - } + result.Value = module.GetGalleryApplicationsFiltered(UserId, pattern); + result.IsSuccess = true; + } + catch (Exception ex) + { + result.IsSuccess = false; + result.AddError(ex.Message, ex); + } - public DeploymentParametersResult GetGalleryApplicationParameters(string id) - { - DeploymentParametersResult result = new DeploymentParametersResult(); - try - { - WebApplicationGallery module = new WebApplicationGallery(GalleryXmlFeedUrl); - // - result.Value = module.GetApplicationParameters(id); - result.IsSuccess = true; - } - catch (Exception ex) - { - result.IsSuccess = false; - result.AddError(GalleryErrors.ProcessingPackageError, ex); - } - // - return result; - } + return result; + } - public StringResultObject InstallGalleryApplication(string webAppId, List updatedValues) - { - StringResultObject result = new StringResultObject(); - try - { - WebApplicationGallery module = new WebApplicationGallery(GalleryXmlFeedUrl); - // - string applicationPath = module.InstallApplication(webAppId, updatedValues); - // - if (!String.IsNullOrEmpty(applicationPath)) - { - result.Value = applicationPath; - result.IsSuccess = true; - } - } - catch (Exception ex) - { - result.IsSuccess = false; - result.AddError(GalleryErrors.PackageInstallationError, ex); - } - // - return result; - } + public GalleryApplicationResult GetGalleryApplication(int UserId, string id) + { + GalleryApplicationResult result = new GalleryApplicationResult(); + // + try + { + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_VIEWER); + // + result.Value = module.GetApplicationByProductId(UserId, id); + result.IsSuccess = true; + result.ErrorCodes.AddRange(module.GetMissingDependenciesForApplicationById(UserId, id)); + } + catch (Exception ex) + { + result.IsSuccess = false; + result.AddError(GalleryErrors.ProcessingFeedXMLError, ex); + } + // + return result; + } + + public GalleryWebAppStatus DownloadGalleryApplication(int UserId, string id) + { + return GetGalleryApplicationStatus(UserId, id); + } + + public GalleryWebAppStatus GetGalleryApplicationStatus(int UserId, string id) + { + try + { + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_INSTALLER); + + return module.DownloadAppAndGetStatus(UserId, id); + } + catch (Exception ex) + { + Log.WriteError(ex); + return GalleryWebAppStatus.Failed; + } + } + + public DeploymentParametersResult GetGalleryApplicationParameters(int UserId, string id) + { + DeploymentParametersResult result = new DeploymentParametersResult(); + + try + { + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_INSTALLER); + // + result.Value = module.GetApplicationParameters(UserId, id); + result.IsSuccess = true; + } + catch (Exception ex) + { + result.IsSuccess = false; + result.AddError(GalleryErrors.ProcessingPackageError, ex); + } + // + return result; + } + + + public StringResultObject InstallGalleryApplication(int UserId, string webAppId, List updatedValues, string languageId) + { + StringResultObject result = new StringResultObject(); + + try + { + WPIApplicationGallery module = new WPIApplicationGallery(WPI_INSTANCE_INSTALLER); + // + module.InstallApplication(UserId, webAppId, updatedValues, languageId, ref result); + + if (result.IsSuccess) + { + module.DeleteWpiHelper(UserId); + } + } + catch (Exception ex) + { + result.IsSuccess = false; + result.AddError(GalleryErrors.PackageInstallationError, ex); + } + // + return result; + } #endregion diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WPIWebApplicationGallery/WPIApplicationGallery.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WPIWebApplicationGallery/WPIApplicationGallery.cs new file mode 100644 index 00000000..6e19a004 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WPIWebApplicationGallery/WPIApplicationGallery.cs @@ -0,0 +1,438 @@ +// 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.Generic; +using System.IO; +using System.Security; +using System.Text; +using Microsoft.Practices.EnterpriseLibrary.Caching; +using Microsoft.Web.Deployment; +using Microsoft.Web.PlatformInstaller; +using WebsitePanel.Providers.ResultObjects; +using WebsitePanel.Providers.Utils; +using WebsitePanel.Providers.WebAppGallery; +using WebsitePanel.Server.Code; +using WebsitePanel.Server.Utils; +using System.Web; +using System.Diagnostics; +using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations; + +namespace WebsitePanel.Providers.Web.WPIWebApplicationGallery +{ + internal class WPIApplicationGallery + { + + private CacheManager _cache; + private const int LIVE_IN_CACHE_MINUTES = 20; + private string _sufix=""; + + public WPIApplicationGallery(string sufix) + { + _sufix = sufix; + //_feeds = new[] + // { + // "https://www.microsoft.com/web/webpi/3.0/webproductlist.xml", + // "http://www.helicontech.com/zoo/feed/wsp" + // }; + _cache = CacheFactory.GetCacheManager(); + //_wpi = GetWpiHelper(); + } + + + + private string GetKey_Feeds(int UserId) + { + return "WPIHELPER_CACHE_FEEDS" + UserId.ToString(); + } + + private string GetKey_object(int UserId) + { + return "WPIHELPER_CACHE_OBJECTS" + UserId.ToString() + _sufix; + } + + public void InitFeeds(int UserId, string[] feeds) + { + //Log.WriteInfo("InitFeeds {0} ", UserId); + + string CACHE_KEY = GetKey_Feeds(UserId); + + if (_cache.Contains(CACHE_KEY)) + { + string[] oldfeeds = (string[])_cache[CACHE_KEY]; + + if (!ArraysEqual(feeds, oldfeeds)) + { + //Feeeds have been changed + ICacheItemExpiration exp = new SlidingTime(TimeSpan.FromMinutes(LIVE_IN_CACHE_MINUTES*2)); + _cache.Add(CACHE_KEY, feeds, CacheItemPriority.Normal, null, exp ); + + DeleteWpiHelper(UserId); + } + + } + else + { + //add to cache + ICacheItemExpiration exp = new SlidingTime(TimeSpan.FromMinutes(LIVE_IN_CACHE_MINUTES*2)); + _cache.Add(CACHE_KEY, feeds, CacheItemPriority.Normal, null, exp); + + } + + } + + private WpiHelper GetWpiHelper(int UserId) + { + string CACHE_KEY = GetKey_object(UserId); + + if (_cache.Contains(CACHE_KEY)) + { + WpiHelper result = (WpiHelper)_cache[CACHE_KEY]; + + if (result != null) + { + return result; + } + + } + + string[] feeds = (string[])_cache[GetKey_Feeds(UserId)]; + if (null == feeds) + { + throw new Exception("BUG:No feeds in cache."); + } + + WpiHelper wpi = new WpiHelper(feeds); + ICacheItemExpiration exp = new SlidingTime(TimeSpan.FromMinutes(LIVE_IN_CACHE_MINUTES)); + + _cache.Add(CACHE_KEY, wpi, CacheItemPriority.Normal, null, exp); + //Debug.WriteLine(string.Format("GetWpiHelper: put in cache. User {0}", UserId)); + + return wpi; + } + + public void DeleteWpiHelper(int UserId) + { + _cache.Remove(GetKey_object(UserId)); + } + + + #region Public methods + + public void SetResourceLanguage(int UserId, string resourceLanguage) + { + WpiHelper wpi = GetWpiHelper(UserId); + wpi.SetResourceLanguage(resourceLanguage); + } + + + public List GetLanguages(int UserId) + { + List langs = new List(); + WpiHelper wpi = GetWpiHelper(UserId); + foreach (Language lang in wpi.GetLanguages()) + { + langs.Add(new SettingPair(lang.Id, lang.Name)); + } + + return langs; + } + + public List GetCategories(int UserId) + { + WpiHelper wpi = GetWpiHelper(UserId); + + List categories = new List(); + + foreach (Keyword keyword in wpi.GetKeywords()) + { + + if (wpi.IsKeywordApplication(keyword)) + { + categories.Add(new GalleryCategory + { + Id = keyword.Id, + Name = keyword.Text + }); + + } + } + + return categories; + } + + public List GetApplications(int UserId, string categoryId) + { + WpiHelper wpi = GetWpiHelper(UserId); + + List products = wpi.GetApplications(categoryId); + List applications = new List(); + + foreach (Product product in products) + { + applications.Add(MakeGalleryApplicationFromProduct(product)); + } + + return applications; + } + + + + public List GetGalleryApplicationsFiltered(int UserId, string pattern) + { + WpiHelper wpi = GetWpiHelper(UserId); + + List products = wpi.GetApplications(null); + List applications = new List(); + + foreach (Product product in products) + { + if (product.Title.ToLower().Contains(pattern.ToLower())) + { + applications.Add(MakeGalleryApplicationFromProduct(product)); + } + + } + + return applications; + } + + + + public GalleryApplication GetApplicationByProductId(int UserId, string id) + { + WpiHelper wpi = GetWpiHelper(UserId); + + return MakeGalleryApplicationFromProduct(wpi.GetProduct(id)); + } + + public List GetMissingDependenciesForApplicationById(int UserId, string id) + { + WpiHelper wpi = GetWpiHelper(UserId); + + List missingDeps = new List(); + foreach (Product product in wpi.GetProductsWithDependencies(new string[] { id })) + { + if (product.ProductId != id) + { + missingDeps.Add(product.Title); + } + } + + return missingDeps; + } + + public GalleryWebAppStatus DownloadAppAndGetStatus(int UserId, string id) + { + WpiHelper wpi = GetWpiHelper(UserId); + wpi.InstallProducts(new[] { id }, null, null, null); + + return GalleryWebAppStatus.Downloaded; + } + + public List GetApplicationParameters(int UserId, string id) + { + WpiHelper wpi = GetWpiHelper(UserId); + + Product product = wpi.GetProduct(id); + List deploymentParameters = new List(); + IList appDecalredParameters = wpi.GetAppDecalredParameters(id); + foreach (DeclaredParameter declaredParameter in appDecalredParameters) + { + deploymentParameters.Add(MakeDeploymentParameterFromDecalredParameter(declaredParameter)); + } + + return deploymentParameters; + + } + + public void InstallApplication( + int UserId, + string webAppId, + List updatedParameters, + string languageId, + ref StringResultObject result) + { + WpiHelper wpi = GetWpiHelper(UserId); + + // convert list of DeploymentParameter to list of WpiUpdatedDeploymentParameter + List updatedWpiParameters = new List(); + foreach (DeploymentParameter updatedParameter in updatedParameters) + { + updatedWpiParameters.Add( + new WpiUpdatedDeploymentParameter + { + Name = updatedParameter.Name, + Value = updatedParameter.Value, + WellKnownTags = (DeploymentWellKnownTag)updatedParameter.WellKnownTags + } + ); + } + + Log.WriteStart("Application installation starting"); + string log; + string failedMessage; + bool success = wpi.InstallApplication( + webAppId, + updatedWpiParameters, + languageId, + InstallStatusUpdatedHandler, InstallCompleteHandler, + out log, + out failedMessage); + + result.Value = log; + result.IsSuccess = success; + + // add log files to result value + try + { + StringBuilder sb = new StringBuilder(); + string[] filePaths = Directory.GetFiles(wpi.GetLogFileDirectory()); + foreach (string filePath in filePaths) + { + using (StreamReader streamReader = new StreamReader(filePath)) + { + string fileContent = + SecurityElement.Escape(StringUtils.CleanupASCIIControlCharacters(streamReader.ReadToEnd())); + sb.AppendLine().AppendLine(filePath).AppendLine(fileContent); + } + + } + + result.Value += sb.ToString(); + } + catch(Exception) + { + } + + + if (!success) + { + result.AddError(failedMessage, null); + } + + // don`t reuse wpi helper after installation + DeleteWpiHelper(UserId); + } + + #endregion + + #region installaton events + + private void InstallStatusUpdatedHandler(object sender, InstallStatusEventArgs installStatusEventArgs) + { + Log.WriteInfo("Application {0} installation status: {1}, return code: {0}", + installStatusEventArgs.InstallerContext.ProductName, + installStatusEventArgs.InstallerContext.InstallationState, + installStatusEventArgs.InstallerContext.ReturnCode); + } + + private void InstallCompleteHandler(object sender, EventArgs eventArgs) + { + Log.WriteEnd("Application installation completed"); + } + + #endregion + + + #region static helpers + + protected static GalleryApplication MakeGalleryApplicationFromProduct(Product product) + { + if (null == product) + { + return null; + } + + int size = 0; + if (null != product.Installers && product.Installers.Count > 0 && null != product.Installers[0].InstallerFile) + { + size = product.Installers[0].InstallerFile.FileSize; + } + + return new GalleryApplication + { + Id = product.ProductId, + Title = product.Title, + Author = new Author {Name = product.Author, Uri = product.AuthorUri.ToString()}, + IconUrl = product.IconUrl.ToString(), + Version = product.Version, + Description = product.LongDescription, + Summary = product.Summary, + LastUpdated = product.Published, + Published = product.Published, + Link = product.Link.ToString(), + InstallerFileSize = size + }; + } + + protected static DeploymentParameter MakeDeploymentParameterFromDecalredParameter(DeclaredParameter d) + { + DeploymentParameter r = new DeploymentParameter(); + r.Name = d.Name; + r.FriendlyName = d.FriendlyName; + r.DefaultValue = d.DefaultValue; + r.Description = d.Description; + r.WellKnownTags = (DeploymentParameterWellKnownTag) d.Tags; + if (null != d.Validation) + { + r.ValidationKind = (DeploymentParameterValidationKind) d.Validation.Kind; + r.ValidationString = d.Validation.ValidationString; + } + else + { + r.ValidationKind = DeploymentParameterValidationKind.None; + } + + return r; + } + + protected static bool ArraysEqual(T[] a1, T[] a2) + { + if (ReferenceEquals(a1, a2)) + return true; + + if (a1 == null || a2 == null) + return false; + + if (a1.Length != a2.Length) + return false; + + EqualityComparer comparer = EqualityComparer.Default; + for (int i = 0; i < a1.Length; i++) + { + if (!comparer.Equals(a1[i], a2[i])) return false; + } + return true; + } + + + #endregion + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WebApplicationGallery.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WebApplicationGallery.cs index bbee5146..ed925e7a 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WebApplicationGallery.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WebApplicationGallery.cs @@ -51,7 +51,8 @@ using System.Linq; namespace WebsitePanel.Providers.Web { - public sealed class WebApplicationGallery + [Obsolete] + public sealed class WebApplicationGallery { // MS Deploy library private const string MS_DEPLOY_ASSEMBLY_NAME = "Microsoft.Web.Deployment"; diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WebsitePanel.Providers.Web.IIs60.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WebsitePanel.Providers.Web.IIs60.csproj index 5fdf4a1b..79f48e11 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WebsitePanel.Providers.Web.IIs60.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Web.IIs60/WebsitePanel.Providers.Web.IIs60.csproj @@ -67,10 +67,14 @@ False ..\..\Lib\Microsoft.Practices.ObjectBuilder.dll - + False ..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll + + False + ..\..\Lib\Microsoft.Web.PlatformInstaller.dll + @@ -82,9 +86,13 @@ VersionInfo.cs + + WPIWebApplicationGallery\WPIHelper.cs + + diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs index 1c7b345c..2b2f80a0 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/WebServerProxy.cs @@ -39,20 +39,21 @@ // // This source code was auto-generated by wsdl, Version=2.0.50727.3038. // -namespace WebsitePanel.Providers.Web { +namespace WebsitePanel.Providers.Web +{ using System.Diagnostics; using System.Web.Services; using System.ComponentModel; using System.Web.Services.Protocols; using System; using System.Xml.Serialization; - using WebsitePanel.Providers.ResultObjects; - using WebsitePanel.Providers.WebAppGallery; - using WebsitePanel.Providers.Common; + using WebsitePanel.Providers.ResultObjects; + using WebsitePanel.Providers.WebAppGallery; + using WebsitePanel.Providers.Common; /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="WebServerSoap", Namespace="http://smbsaas/websitepanel/server/")] @@ -173,12 +174,24 @@ namespace WebsitePanel.Providers.Web { private System.Threading.SendOrPostCallback UpdateHeliconApeGroupOperationCompleted; + private System.Threading.SendOrPostCallback GrantWebDeployPublishingAccessOperationCompleted; + + private System.Threading.SendOrPostCallback RevokeWebDeployPublishingAccessOperationCompleted; + private System.Threading.SendOrPostCallback DeleteHeliconApeGroupOperationCompleted; + private System.Threading.SendOrPostCallback InitFeedsOperationCompleted; + + private System.Threading.SendOrPostCallback SetResourceLanguageOperationCompleted; + + private System.Threading.SendOrPostCallback GetGalleryLanguagesOperationCompleted; + private System.Threading.SendOrPostCallback GetGalleryCategoriesOperationCompleted; private System.Threading.SendOrPostCallback GetGalleryApplicationsOperationCompleted; + private System.Threading.SendOrPostCallback GetGalleryApplicationsFilteredOperationCompleted; + private System.Threading.SendOrPostCallback IsMsDeployInstalledOperationCompleted; private System.Threading.SendOrPostCallback GetGalleryApplicationOperationCompleted; @@ -196,33 +209,29 @@ namespace WebsitePanel.Providers.Web { private System.Threading.SendOrPostCallback CheckWebManagementPasswordComplexityOperationCompleted; private System.Threading.SendOrPostCallback GrantWebManagementAccessOperationCompleted; - - private System.Threading.SendOrPostCallback GrantWebDeployPublishingAccessOperationCompleted; - - private System.Threading.SendOrPostCallback RevokeWebDeployPublishingAccessOperationCompleted; private System.Threading.SendOrPostCallback RevokeWebManagementAccessOperationCompleted; private System.Threading.SendOrPostCallback ChangeWebManagementAccessPasswordOperationCompleted; - + private System.Threading.SendOrPostCallback generateCSROperationCompleted; - + private System.Threading.SendOrPostCallback generateRenewalCSROperationCompleted; - + private System.Threading.SendOrPostCallback getCertificateOperationCompleted; - + private System.Threading.SendOrPostCallback installCertificateOperationCompleted; - + private System.Threading.SendOrPostCallback installPFXOperationCompleted; - + private System.Threading.SendOrPostCallback exportCertificateOperationCompleted; - + private System.Threading.SendOrPostCallback getServerCertificatesOperationCompleted; - + private System.Threading.SendOrPostCallback DeleteCertificateOperationCompleted; - + private System.Threading.SendOrPostCallback ImportCertificateOperationCompleted; - + private System.Threading.SendOrPostCallback CheckCertificateOperationCompleted; /// @@ -398,15 +407,33 @@ namespace WebsitePanel.Providers.Web { /// public event UpdateHeliconApeGroupCompletedEventHandler UpdateHeliconApeGroupCompleted; + /// + public event GrantWebDeployPublishingAccessCompletedEventHandler GrantWebDeployPublishingAccessCompleted; + + /// + public event RevokeWebDeployPublishingAccessCompletedEventHandler RevokeWebDeployPublishingAccessCompleted; + /// public event DeleteHeliconApeGroupCompletedEventHandler DeleteHeliconApeGroupCompleted; + /// + public event InitFeedsCompletedEventHandler InitFeedsCompleted; + + /// + public event SetResourceLanguageCompletedEventHandler SetResourceLanguageCompleted; + + /// + public event GetGalleryLanguagesCompletedEventHandler GetGalleryLanguagesCompleted; + /// public event GetGalleryCategoriesCompletedEventHandler GetGalleryCategoriesCompleted; /// public event GetGalleryApplicationsCompletedEventHandler GetGalleryApplicationsCompleted; + /// + public event GetGalleryApplicationsFilteredCompletedEventHandler GetGalleryApplicationsFilteredCompleted; + /// public event IsMsDeployInstalledCompletedEventHandler IsMsDeployInstalledCompleted; @@ -435,44 +462,38 @@ namespace WebsitePanel.Providers.Web { public event GrantWebManagementAccessCompletedEventHandler GrantWebManagementAccessCompleted; /// - public event GrantWebDeployPublishingAccessCompletedEventHandler GrantWebDeployPublishingAccessCompleted; - - /// - public event RevokeWebDeployPublishingAccessCompletedEventHandler RevokeWebDeployPublishingAccessCompleted; - - /// - public event RevokeWebManagementAccessCompletedEventHandler RevokeWebManagementAccessCompleted; + public event RevokeWebManagementAccessCompletedEventHandler RevokeWebManagementAccessCompleted; /// public event ChangeWebManagementAccessPasswordCompletedEventHandler ChangeWebManagementAccessPasswordCompleted; - + /// public event generateCSRCompletedEventHandler generateCSRCompleted; - + /// public event generateRenewalCSRCompletedEventHandler generateRenewalCSRCompleted; - + /// public event getCertificateCompletedEventHandler getCertificateCompleted; - + /// public event installCertificateCompletedEventHandler installCertificateCompleted; - + /// public event installPFXCompletedEventHandler installPFXCompleted; - + /// public event exportCertificateCompletedEventHandler exportCertificateCompleted; - + /// public event getServerCertificatesCompletedEventHandler getServerCertificatesCompleted; - + /// public event DeleteCertificateCompletedEventHandler DeleteCertificateCompleted; - + /// public event ImportCertificateCompletedEventHandler ImportCertificateCompleted; - + /// public event CheckCertificateCompletedEventHandler CheckCertificateCompleted; @@ -2852,6 +2873,95 @@ namespace WebsitePanel.Providers.Web { } } + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GrantWebDeployPublishingAccess", 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 GrantWebDeployPublishingAccess(string siteId, string accountName, string accountPassword) { + this.Invoke("GrantWebDeployPublishingAccess", new object[] { + siteId, + accountName, + accountPassword}); + } + + /// + public System.IAsyncResult BeginGrantWebDeployPublishingAccess(string siteId, string accountName, string accountPassword, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GrantWebDeployPublishingAccess", new object[] { + siteId, + accountName, + accountPassword}, callback, asyncState); + } + + /// + public void EndGrantWebDeployPublishingAccess(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void GrantWebDeployPublishingAccessAsync(string siteId, string accountName, string accountPassword) { + this.GrantWebDeployPublishingAccessAsync(siteId, accountName, accountPassword, null); + } + + /// + public void GrantWebDeployPublishingAccessAsync(string siteId, string accountName, string accountPassword, object userState) { + if ((this.GrantWebDeployPublishingAccessOperationCompleted == null)) { + this.GrantWebDeployPublishingAccessOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGrantWebDeployPublishingAccessOperationCompleted); + } + this.InvokeAsync("GrantWebDeployPublishingAccess", new object[] { + siteId, + accountName, + accountPassword}, this.GrantWebDeployPublishingAccessOperationCompleted, userState); + } + + private void OnGrantWebDeployPublishingAccessOperationCompleted(object arg) { + if ((this.GrantWebDeployPublishingAccessCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GrantWebDeployPublishingAccessCompleted(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/RevokeWebDeployPublishingAccess", 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 RevokeWebDeployPublishingAccess(string siteId, string accountName) { + this.Invoke("RevokeWebDeployPublishingAccess", new object[] { + siteId, + accountName}); + } + + /// + public System.IAsyncResult BeginRevokeWebDeployPublishingAccess(string siteId, string accountName, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("RevokeWebDeployPublishingAccess", new object[] { + siteId, + accountName}, callback, asyncState); + } + + /// + public void EndRevokeWebDeployPublishingAccess(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void RevokeWebDeployPublishingAccessAsync(string siteId, string accountName) { + this.RevokeWebDeployPublishingAccessAsync(siteId, accountName, null); + } + + /// + public void RevokeWebDeployPublishingAccessAsync(string siteId, string accountName, object userState) { + if ((this.RevokeWebDeployPublishingAccessOperationCompleted == null)) { + this.RevokeWebDeployPublishingAccessOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRevokeWebDeployPublishingAccessOperationCompleted); + } + this.InvokeAsync("RevokeWebDeployPublishingAccess", new object[] { + siteId, + accountName}, this.RevokeWebDeployPublishingAccessOperationCompleted, userState); + } + + private void OnRevokeWebDeployPublishingAccessOperationCompleted(object arg) { + if ((this.RevokeWebDeployPublishingAccessCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.RevokeWebDeployPublishingAccessCompleted(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/DeleteHeliconApeGroup", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] @@ -2895,17 +3005,147 @@ namespace WebsitePanel.Providers.Web { } } + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/InitFeeds", 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 InitFeeds(int UserId, string[] feeds) { + this.Invoke("InitFeeds", new object[] { + UserId, + feeds}); + } + + /// + public System.IAsyncResult BeginInitFeeds(int UserId, string[] feeds, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("InitFeeds", new object[] { + UserId, + feeds}, callback, asyncState); + } + + /// + public void EndInitFeeds(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void InitFeedsAsync(int UserId, string[] feeds) { + this.InitFeedsAsync(UserId, feeds, null); + } + + /// + public void InitFeedsAsync(int UserId, string[] feeds, object userState) { + if ((this.InitFeedsOperationCompleted == null)) { + this.InitFeedsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInitFeedsOperationCompleted); + } + this.InvokeAsync("InitFeeds", new object[] { + UserId, + feeds}, this.InitFeedsOperationCompleted, userState); + } + + private void OnInitFeedsOperationCompleted(object arg) { + if ((this.InitFeedsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.InitFeedsCompleted(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/SetResourceLanguage", 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 SetResourceLanguage(int UserId, string resourceLanguage) { + this.Invoke("SetResourceLanguage", new object[] { + UserId, + resourceLanguage}); + } + + /// + public System.IAsyncResult BeginSetResourceLanguage(int UserId, string resourceLanguage, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetResourceLanguage", new object[] { + UserId, + resourceLanguage}, callback, asyncState); + } + + /// + public void EndSetResourceLanguage(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void SetResourceLanguageAsync(int UserId, string resourceLanguage) { + this.SetResourceLanguageAsync(UserId, resourceLanguage, null); + } + + /// + public void SetResourceLanguageAsync(int UserId, string resourceLanguage, object userState) { + if ((this.SetResourceLanguageOperationCompleted == null)) { + this.SetResourceLanguageOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetResourceLanguageOperationCompleted); + } + this.InvokeAsync("SetResourceLanguage", new object[] { + UserId, + resourceLanguage}, this.SetResourceLanguageOperationCompleted, userState); + } + + private void OnSetResourceLanguageOperationCompleted(object arg) { + if ((this.SetResourceLanguageCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetResourceLanguageCompleted(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/GetGalleryLanguages", 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 GalleryLanguagesResult GetGalleryLanguages(int UserId) { + object[] results = this.Invoke("GetGalleryLanguages", new object[] { + UserId}); + return ((GalleryLanguagesResult)(results[0])); + } + + /// + public System.IAsyncResult BeginGetGalleryLanguages(int UserId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetGalleryLanguages", new object[] { + UserId}, callback, asyncState); + } + + /// + public GalleryLanguagesResult EndGetGalleryLanguages(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((GalleryLanguagesResult)(results[0])); + } + + /// + public void GetGalleryLanguagesAsync(int UserId) { + this.GetGalleryLanguagesAsync(UserId, null); + } + + /// + public void GetGalleryLanguagesAsync(int UserId, object userState) { + if ((this.GetGalleryLanguagesOperationCompleted == null)) { + this.GetGalleryLanguagesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryLanguagesOperationCompleted); + } + this.InvokeAsync("GetGalleryLanguages", new object[] { + UserId}, this.GetGalleryLanguagesOperationCompleted, userState); + } + + private void OnGetGalleryLanguagesOperationCompleted(object arg) { + if ((this.GetGalleryLanguagesCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetGalleryLanguagesCompleted(this, new GetGalleryLanguagesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetGalleryCategories", 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 GalleryCategoriesResult GetGalleryCategories() { - object[] results = this.Invoke("GetGalleryCategories", new object[0]); + public GalleryCategoriesResult GetGalleryCategories(int UserId) { + object[] results = this.Invoke("GetGalleryCategories", new object[] { + UserId}); return ((GalleryCategoriesResult)(results[0])); } /// - public System.IAsyncResult BeginGetGalleryCategories(System.AsyncCallback callback, object asyncState) { - return this.BeginInvoke("GetGalleryCategories", new object[0], callback, asyncState); + public System.IAsyncResult BeginGetGalleryCategories(int UserId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetGalleryCategories", new object[] { + UserId}, callback, asyncState); } /// @@ -2915,16 +3155,17 @@ namespace WebsitePanel.Providers.Web { } /// - public void GetGalleryCategoriesAsync() { - this.GetGalleryCategoriesAsync(null); + public void GetGalleryCategoriesAsync(int UserId) { + this.GetGalleryCategoriesAsync(UserId, null); } /// - public void GetGalleryCategoriesAsync(object userState) { + public void GetGalleryCategoriesAsync(int UserId, object userState) { if ((this.GetGalleryCategoriesOperationCompleted == null)) { this.GetGalleryCategoriesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryCategoriesOperationCompleted); } - this.InvokeAsync("GetGalleryCategories", new object[0], this.GetGalleryCategoriesOperationCompleted, userState); + this.InvokeAsync("GetGalleryCategories", new object[] { + UserId}, this.GetGalleryCategoriesOperationCompleted, userState); } private void OnGetGalleryCategoriesOperationCompleted(object arg) { @@ -2937,15 +3178,17 @@ namespace WebsitePanel.Providers.Web { /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetGalleryApplications", 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 GalleryApplicationsResult GetGalleryApplications(string categoryId) { + public GalleryApplicationsResult GetGalleryApplications(int UserId, string categoryId) { object[] results = this.Invoke("GetGalleryApplications", new object[] { + UserId, categoryId}); return ((GalleryApplicationsResult)(results[0])); } /// - public System.IAsyncResult BeginGetGalleryApplications(string categoryId, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginGetGalleryApplications(int UserId, string categoryId, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetGalleryApplications", new object[] { + UserId, categoryId}, callback, asyncState); } @@ -2956,16 +3199,17 @@ namespace WebsitePanel.Providers.Web { } /// - public void GetGalleryApplicationsAsync(string categoryId) { - this.GetGalleryApplicationsAsync(categoryId, null); + public void GetGalleryApplicationsAsync(int UserId, string categoryId) { + this.GetGalleryApplicationsAsync(UserId, categoryId, null); } /// - public void GetGalleryApplicationsAsync(string categoryId, object userState) { + public void GetGalleryApplicationsAsync(int UserId, string categoryId, object userState) { if ((this.GetGalleryApplicationsOperationCompleted == null)) { this.GetGalleryApplicationsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryApplicationsOperationCompleted); } this.InvokeAsync("GetGalleryApplications", new object[] { + UserId, categoryId}, this.GetGalleryApplicationsOperationCompleted, userState); } @@ -2976,6 +3220,51 @@ namespace WebsitePanel.Providers.Web { } } + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetGalleryApplicationsFiltered", 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 GalleryApplicationsResult GetGalleryApplicationsFiltered(int UserId, string pattern) { + object[] results = this.Invoke("GetGalleryApplicationsFiltered", new object[] { + UserId, + pattern}); + return ((GalleryApplicationsResult)(results[0])); + } + + /// + public System.IAsyncResult BeginGetGalleryApplicationsFiltered(int UserId, string pattern, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetGalleryApplicationsFiltered", new object[] { + UserId, + pattern}, callback, asyncState); + } + + /// + public GalleryApplicationsResult EndGetGalleryApplicationsFiltered(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((GalleryApplicationsResult)(results[0])); + } + + /// + public void GetGalleryApplicationsFilteredAsync(int UserId, string pattern) { + this.GetGalleryApplicationsFilteredAsync(UserId, pattern, null); + } + + /// + public void GetGalleryApplicationsFilteredAsync(int UserId, string pattern, object userState) { + if ((this.GetGalleryApplicationsFilteredOperationCompleted == null)) { + this.GetGalleryApplicationsFilteredOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryApplicationsFilteredOperationCompleted); + } + this.InvokeAsync("GetGalleryApplicationsFiltered", new object[] { + UserId, + pattern}, this.GetGalleryApplicationsFilteredOperationCompleted, userState); + } + + private void OnGetGalleryApplicationsFilteredOperationCompleted(object arg) { + if ((this.GetGalleryApplicationsFilteredCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetGalleryApplicationsFilteredCompleted(this, new GetGalleryApplicationsFilteredCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/IsMsDeployInstalled", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] @@ -3018,15 +3307,17 @@ namespace WebsitePanel.Providers.Web { /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetGalleryApplication", 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 GalleryApplicationResult GetGalleryApplication(string id) { + public GalleryApplicationResult GetGalleryApplication(int UserId, string id) { object[] results = this.Invoke("GetGalleryApplication", new object[] { + UserId, id}); return ((GalleryApplicationResult)(results[0])); } /// - public System.IAsyncResult BeginGetGalleryApplication(string id, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginGetGalleryApplication(int UserId, string id, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetGalleryApplication", new object[] { + UserId, id}, callback, asyncState); } @@ -3037,16 +3328,17 @@ namespace WebsitePanel.Providers.Web { } /// - public void GetGalleryApplicationAsync(string id) { - this.GetGalleryApplicationAsync(id, null); + public void GetGalleryApplicationAsync(int UserId, string id) { + this.GetGalleryApplicationAsync(UserId, id, null); } /// - public void GetGalleryApplicationAsync(string id, object userState) { + public void GetGalleryApplicationAsync(int UserId, string id, object userState) { if ((this.GetGalleryApplicationOperationCompleted == null)) { this.GetGalleryApplicationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryApplicationOperationCompleted); } this.InvokeAsync("GetGalleryApplication", new object[] { + UserId, id}, this.GetGalleryApplicationOperationCompleted, userState); } @@ -3060,15 +3352,17 @@ namespace WebsitePanel.Providers.Web { /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetGalleryApplicationStatus", 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 GalleryWebAppStatus GetGalleryApplicationStatus(string id) { + public GalleryWebAppStatus GetGalleryApplicationStatus(int UserId, string id) { object[] results = this.Invoke("GetGalleryApplicationStatus", new object[] { + UserId, id}); return ((GalleryWebAppStatus)(results[0])); } /// - public System.IAsyncResult BeginGetGalleryApplicationStatus(string id, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginGetGalleryApplicationStatus(int UserId, string id, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetGalleryApplicationStatus", new object[] { + UserId, id}, callback, asyncState); } @@ -3079,16 +3373,17 @@ namespace WebsitePanel.Providers.Web { } /// - public void GetGalleryApplicationStatusAsync(string id) { - this.GetGalleryApplicationStatusAsync(id, null); + public void GetGalleryApplicationStatusAsync(int UserId, string id) { + this.GetGalleryApplicationStatusAsync(UserId, id, null); } /// - public void GetGalleryApplicationStatusAsync(string id, object userState) { + public void GetGalleryApplicationStatusAsync(int UserId, string id, object userState) { if ((this.GetGalleryApplicationStatusOperationCompleted == null)) { this.GetGalleryApplicationStatusOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryApplicationStatusOperationCompleted); } this.InvokeAsync("GetGalleryApplicationStatus", new object[] { + UserId, id}, this.GetGalleryApplicationStatusOperationCompleted, userState); } @@ -3102,15 +3397,17 @@ namespace WebsitePanel.Providers.Web { /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DownloadGalleryApplication", 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 GalleryWebAppStatus DownloadGalleryApplication(string id) { + public GalleryWebAppStatus DownloadGalleryApplication(int UserId, string id) { object[] results = this.Invoke("DownloadGalleryApplication", new object[] { + UserId, id}); return ((GalleryWebAppStatus)(results[0])); } /// - public System.IAsyncResult BeginDownloadGalleryApplication(string id, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginDownloadGalleryApplication(int UserId, string id, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DownloadGalleryApplication", new object[] { + UserId, id}, callback, asyncState); } @@ -3121,16 +3418,17 @@ namespace WebsitePanel.Providers.Web { } /// - public void DownloadGalleryApplicationAsync(string id) { - this.DownloadGalleryApplicationAsync(id, null); + public void DownloadGalleryApplicationAsync(int UserId, string id) { + this.DownloadGalleryApplicationAsync(UserId, id, null); } /// - public void DownloadGalleryApplicationAsync(string id, object userState) { + public void DownloadGalleryApplicationAsync(int UserId, string id, object userState) { if ((this.DownloadGalleryApplicationOperationCompleted == null)) { this.DownloadGalleryApplicationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDownloadGalleryApplicationOperationCompleted); } this.InvokeAsync("DownloadGalleryApplication", new object[] { + UserId, id}, this.DownloadGalleryApplicationOperationCompleted, userState); } @@ -3144,15 +3442,17 @@ namespace WebsitePanel.Providers.Web { /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetGalleryApplicationParameters", 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 DeploymentParametersResult GetGalleryApplicationParameters(string id) { + public DeploymentParametersResult GetGalleryApplicationParameters(int UserId, string id) { object[] results = this.Invoke("GetGalleryApplicationParameters", new object[] { + UserId, id}); return ((DeploymentParametersResult)(results[0])); } /// - public System.IAsyncResult BeginGetGalleryApplicationParameters(string id, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginGetGalleryApplicationParameters(int UserId, string id, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetGalleryApplicationParameters", new object[] { + UserId, id}, callback, asyncState); } @@ -3163,16 +3463,17 @@ namespace WebsitePanel.Providers.Web { } /// - public void GetGalleryApplicationParametersAsync(string id) { - this.GetGalleryApplicationParametersAsync(id, null); + public void GetGalleryApplicationParametersAsync(int UserId, string id) { + this.GetGalleryApplicationParametersAsync(UserId, id, null); } /// - public void GetGalleryApplicationParametersAsync(string id, object userState) { + public void GetGalleryApplicationParametersAsync(int UserId, string id, object userState) { if ((this.GetGalleryApplicationParametersOperationCompleted == null)) { this.GetGalleryApplicationParametersOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGalleryApplicationParametersOperationCompleted); } this.InvokeAsync("GetGalleryApplicationParameters", new object[] { + UserId, id}, this.GetGalleryApplicationParametersOperationCompleted, userState); } @@ -3186,18 +3487,22 @@ namespace WebsitePanel.Providers.Web { /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/InstallGalleryApplication", 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 StringResultObject InstallGalleryApplication(string id, DeploymentParameter[] updatedValues) { + public StringResultObject InstallGalleryApplication(int UserId, string id, DeploymentParameter[] updatedValues, string languageId) { object[] results = this.Invoke("InstallGalleryApplication", new object[] { + UserId, id, - updatedValues}); + updatedValues, + languageId}); return ((StringResultObject)(results[0])); } /// - public System.IAsyncResult BeginInstallGalleryApplication(string id, DeploymentParameter[] updatedValues, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginInstallGalleryApplication(int UserId, string id, DeploymentParameter[] updatedValues, string languageId, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("InstallGalleryApplication", new object[] { + UserId, id, - updatedValues}, callback, asyncState); + updatedValues, + languageId}, callback, asyncState); } /// @@ -3207,18 +3512,20 @@ namespace WebsitePanel.Providers.Web { } /// - public void InstallGalleryApplicationAsync(string id, DeploymentParameter[] updatedValues) { - this.InstallGalleryApplicationAsync(id, updatedValues, null); + public void InstallGalleryApplicationAsync(int UserId, string id, DeploymentParameter[] updatedValues, string languageId) { + this.InstallGalleryApplicationAsync(UserId, id, updatedValues, languageId, null); } /// - public void InstallGalleryApplicationAsync(string id, DeploymentParameter[] updatedValues, object userState) { + public void InstallGalleryApplicationAsync(int UserId, string id, DeploymentParameter[] updatedValues, string languageId, object userState) { if ((this.InstallGalleryApplicationOperationCompleted == null)) { this.InstallGalleryApplicationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInstallGalleryApplicationOperationCompleted); } this.InvokeAsync("InstallGalleryApplication", new object[] { + UserId, id, - updatedValues}, this.InstallGalleryApplicationOperationCompleted, userState); + updatedValues, + languageId}, this.InstallGalleryApplicationOperationCompleted, userState); } private void OnInstallGalleryApplicationOperationCompleted(object arg) { @@ -3360,112 +3667,7 @@ namespace WebsitePanel.Providers.Web { /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GrantWebDeployPublishingAccess", 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 GrantWebDeployPublishingAccess(string siteId, string accountName, string accountPassword) - { - this.Invoke("GrantWebDeployPublishingAccess", new object[] { - siteId, - accountName, - accountPassword}); - } - - /// - public System.IAsyncResult BeginGrantWebDeployPublishingAccess(string siteId, string accountName, string accountPassword, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("GrantWebDeployPublishingAccess", new object[] { - siteId, - accountName, - accountPassword}, callback, asyncState); - } - - /// - public void EndGrantWebDeployPublishingAccess(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - public void GrantWebDeployPublishingAccessAsync(string siteId, string accountName, string accountPassword) - { - this.GrantWebDeployPublishingAccessAsync(siteId, accountName, accountPassword, null); - } - - /// - public void GrantWebDeployPublishingAccessAsync(string siteId, string accountName, string accountPassword, object userState) - { - if ((this.GrantWebDeployPublishingAccessOperationCompleted == null)) - { - this.GrantWebDeployPublishingAccessOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGrantWebDeployPublishingAccessOperationCompleted); - } - this.InvokeAsync("GrantWebDeployPublishingAccess", new object[] { - siteId, - accountName, - accountPassword}, this.GrantWebDeployPublishingAccessOperationCompleted, userState); - } - - private void OnGrantWebDeployPublishingAccessOperationCompleted(object arg) - { - if ((this.GrantWebDeployPublishingAccessCompleted != null)) - { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.GrantWebDeployPublishingAccessCompleted(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/RevokeWebDeployPublishingAccess", 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 RevokeWebDeployPublishingAccess(string siteId, string accountName) - { - this.Invoke("RevokeWebDeployPublishingAccess", new object[] { - siteId, - accountName}); - } - - /// - public System.IAsyncResult BeginRevokeWebDeployPublishingAccess(string siteId, string accountName, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("RevokeWebDeployPublishingAccess", new object[] { - siteId, - accountName}, callback, asyncState); - } - - /// - public void EndRevokeWebDeployPublishingAccess(System.IAsyncResult asyncResult) - { - this.EndInvoke(asyncResult); - } - - /// - public void RevokeWebDeployPublishingAccessAsync(string siteId, string accountName) - { - this.RevokeWebDeployPublishingAccessAsync(siteId, accountName, null); - } - - /// - public void RevokeWebDeployPublishingAccessAsync(string siteId, string accountName, object userState) - { - if ((this.RevokeWebDeployPublishingAccessOperationCompleted == null)) - { - this.RevokeWebDeployPublishingAccessOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRevokeWebDeployPublishingAccessOperationCompleted); - } - this.InvokeAsync("RevokeWebDeployPublishingAccess", new object[] { - siteId, - accountName}, this.RevokeWebDeployPublishingAccessOperationCompleted, userState); - } - - private void OnRevokeWebDeployPublishingAccessOperationCompleted(object arg) - { - if ((this.RevokeWebDeployPublishingAccessCompleted != null)) - { - System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.RevokeWebDeployPublishingAccessCompleted(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/RevokeWebManagementAccess", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RevokeWebManagementAccess", 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 RevokeWebManagementAccess(string siteId, string accountName) { this.Invoke("RevokeWebManagementAccess", new object[] { siteId, @@ -3548,249 +3750,211 @@ namespace WebsitePanel.Providers.Web { this.ChangeWebManagementAccessPasswordCompleted(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/generateCSR", 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 SSLCertificate generateCSR(SSLCertificate certificate) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/generateCSR", 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 SSLCertificate generateCSR(SSLCertificate certificate) { object[] results = this.Invoke("generateCSR", new object[] { certificate}); return ((SSLCertificate)(results[0])); } - + /// - public System.IAsyncResult BegingenerateCSR(SSLCertificate certificate, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BegingenerateCSR(SSLCertificate certificate, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("generateCSR", new object[] { certificate}, callback, asyncState); } - + /// - public SSLCertificate EndgenerateCSR(System.IAsyncResult asyncResult) - { + public SSLCertificate EndgenerateCSR(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SSLCertificate)(results[0])); } - + /// - public void generateCSRAsync(SSLCertificate certificate) - { + public void generateCSRAsync(SSLCertificate certificate) { this.generateCSRAsync(certificate, null); } - + /// - public void generateCSRAsync(SSLCertificate certificate, object userState) - { - if ((this.generateCSROperationCompleted == null)) - { + public void generateCSRAsync(SSLCertificate certificate, object userState) { + if ((this.generateCSROperationCompleted == null)) { this.generateCSROperationCompleted = new System.Threading.SendOrPostCallback(this.OngenerateCSROperationCompleted); } this.InvokeAsync("generateCSR", new object[] { certificate}, this.generateCSROperationCompleted, userState); } - - private void OngenerateCSROperationCompleted(object arg) - { - if ((this.generateCSRCompleted != null)) - { + + private void OngenerateCSROperationCompleted(object arg) { + if ((this.generateCSRCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.generateCSRCompleted(this, new generateCSRCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/generateRenewalCSR", 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 SSLCertificate generateRenewalCSR(SSLCertificate certificate) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/generateRenewalCSR", 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 SSLCertificate generateRenewalCSR(SSLCertificate certificate) { object[] results = this.Invoke("generateRenewalCSR", new object[] { certificate}); return ((SSLCertificate)(results[0])); } - + /// - public System.IAsyncResult BegingenerateRenewalCSR(SSLCertificate certificate, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BegingenerateRenewalCSR(SSLCertificate certificate, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("generateRenewalCSR", new object[] { certificate}, callback, asyncState); } - + /// - public SSLCertificate EndgenerateRenewalCSR(System.IAsyncResult asyncResult) - { + public SSLCertificate EndgenerateRenewalCSR(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SSLCertificate)(results[0])); } - + /// - public void generateRenewalCSRAsync(SSLCertificate certificate) - { + public void generateRenewalCSRAsync(SSLCertificate certificate) { this.generateRenewalCSRAsync(certificate, null); } - + /// - public void generateRenewalCSRAsync(SSLCertificate certificate, object userState) - { - if ((this.generateRenewalCSROperationCompleted == null)) - { + public void generateRenewalCSRAsync(SSLCertificate certificate, object userState) { + if ((this.generateRenewalCSROperationCompleted == null)) { this.generateRenewalCSROperationCompleted = new System.Threading.SendOrPostCallback(this.OngenerateRenewalCSROperationCompleted); } this.InvokeAsync("generateRenewalCSR", new object[] { certificate}, this.generateRenewalCSROperationCompleted, userState); } - - private void OngenerateRenewalCSROperationCompleted(object arg) - { - if ((this.generateRenewalCSRCompleted != null)) - { + + private void OngenerateRenewalCSROperationCompleted(object arg) { + if ((this.generateRenewalCSRCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.generateRenewalCSRCompleted(this, new generateRenewalCSRCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/getCertificate", 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 SSLCertificate getCertificate(WebSite site) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/getCertificate", 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 SSLCertificate getCertificate(WebSite site) { object[] results = this.Invoke("getCertificate", new object[] { site}); return ((SSLCertificate)(results[0])); } - + /// - public System.IAsyncResult BegingetCertificate(WebSite site, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BegingetCertificate(WebSite site, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("getCertificate", new object[] { site}, callback, asyncState); } - + /// - public SSLCertificate EndgetCertificate(System.IAsyncResult asyncResult) - { + public SSLCertificate EndgetCertificate(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SSLCertificate)(results[0])); } - + /// - public void getCertificateAsync(WebSite site) - { + public void getCertificateAsync(WebSite site) { this.getCertificateAsync(site, null); } - + /// - public void getCertificateAsync(WebSite site, object userState) - { - if ((this.getCertificateOperationCompleted == null)) - { + public void getCertificateAsync(WebSite site, object userState) { + if ((this.getCertificateOperationCompleted == null)) { this.getCertificateOperationCompleted = new System.Threading.SendOrPostCallback(this.OngetCertificateOperationCompleted); } this.InvokeAsync("getCertificate", new object[] { site}, this.getCertificateOperationCompleted, userState); } - - private void OngetCertificateOperationCompleted(object arg) - { - if ((this.getCertificateCompleted != null)) - { + + private void OngetCertificateOperationCompleted(object arg) { + if ((this.getCertificateCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.getCertificateCompleted(this, new getCertificateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/installCertificate", 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 SSLCertificate installCertificate(SSLCertificate certificate, WebSite website) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/installCertificate", 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 SSLCertificate installCertificate(SSLCertificate certificate, WebSite website) { object[] results = this.Invoke("installCertificate", new object[] { certificate, website}); return ((SSLCertificate)(results[0])); } - + /// - public System.IAsyncResult BegininstallCertificate(SSLCertificate certificate, WebSite website, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BegininstallCertificate(SSLCertificate certificate, WebSite website, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("installCertificate", new object[] { certificate, website}, callback, asyncState); } - + /// - public SSLCertificate EndinstallCertificate(System.IAsyncResult asyncResult) - { + public SSLCertificate EndinstallCertificate(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SSLCertificate)(results[0])); } - + /// - public void installCertificateAsync(SSLCertificate certificate, WebSite website) - { + public void installCertificateAsync(SSLCertificate certificate, WebSite website) { this.installCertificateAsync(certificate, website, null); } - + /// - public void installCertificateAsync(SSLCertificate certificate, WebSite website, object userState) - { - if ((this.installCertificateOperationCompleted == null)) - { + public void installCertificateAsync(SSLCertificate certificate, WebSite website, object userState) { + if ((this.installCertificateOperationCompleted == null)) { this.installCertificateOperationCompleted = new System.Threading.SendOrPostCallback(this.OninstallCertificateOperationCompleted); } this.InvokeAsync("installCertificate", new object[] { certificate, website}, this.installCertificateOperationCompleted, userState); } - - private void OninstallCertificateOperationCompleted(object arg) - { - if ((this.installCertificateCompleted != null)) - { + + private void OninstallCertificateOperationCompleted(object arg) { + if ((this.installCertificateCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.installCertificateCompleted(this, new installCertificateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/installPFX", 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 SSLCertificate installPFX([System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] byte[] certificate, string password, WebSite website) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/installPFX", 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 SSLCertificate installPFX([System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] byte[] certificate, string password, WebSite website) { object[] results = this.Invoke("installPFX", new object[] { certificate, password, website}); return ((SSLCertificate)(results[0])); } - + /// - public System.IAsyncResult BegininstallPFX(byte[] certificate, string password, WebSite website, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BegininstallPFX(byte[] certificate, string password, WebSite website, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("installPFX", new object[] { certificate, password, website}, callback, asyncState); } - + /// - public SSLCertificate EndinstallPFX(System.IAsyncResult asyncResult) - { + public SSLCertificate EndinstallPFX(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SSLCertificate)(results[0])); } - + /// - public void installPFXAsync(byte[] certificate, string password, WebSite website) - { + public void installPFXAsync(byte[] certificate, string password, WebSite website) { this.installPFXAsync(certificate, password, website, null); } - + /// - public void installPFXAsync(byte[] certificate, string password, WebSite website, object userState) - { - if ((this.installPFXOperationCompleted == null)) - { + public void installPFXAsync(byte[] certificate, string password, WebSite website, object userState) { + if ((this.installPFXOperationCompleted == null)) { this.installPFXOperationCompleted = new System.Threading.SendOrPostCallback(this.OninstallPFXOperationCompleted); } this.InvokeAsync("installPFX", new object[] { @@ -3798,265 +3962,223 @@ namespace WebsitePanel.Providers.Web { password, website}, this.installPFXOperationCompleted, userState); } - - private void OninstallPFXOperationCompleted(object arg) - { - if ((this.installPFXCompleted != null)) - { + + private void OninstallPFXOperationCompleted(object arg) { + if ((this.installPFXCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.installPFXCompleted(this, new installPFXCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/exportCertificate", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - [return: System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] - public byte[] exportCertificate(string serialNumber, string password) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/exportCertificate", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + [return: System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] + public byte[] exportCertificate(string serialNumber, string password) { object[] results = this.Invoke("exportCertificate", new object[] { serialNumber, password}); return ((byte[])(results[0])); } - + /// - public System.IAsyncResult BeginexportCertificate(string serialNumber, string password, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginexportCertificate(string serialNumber, string password, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("exportCertificate", new object[] { serialNumber, password}, callback, asyncState); } - + /// - public byte[] EndexportCertificate(System.IAsyncResult asyncResult) - { + public byte[] EndexportCertificate(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((byte[])(results[0])); } - + /// - public void exportCertificateAsync(string serialNumber, string password) - { + public void exportCertificateAsync(string serialNumber, string password) { this.exportCertificateAsync(serialNumber, password, null); } - + /// - public void exportCertificateAsync(string serialNumber, string password, object userState) - { - if ((this.exportCertificateOperationCompleted == null)) - { + public void exportCertificateAsync(string serialNumber, string password, object userState) { + if ((this.exportCertificateOperationCompleted == null)) { this.exportCertificateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnexportCertificateOperationCompleted); } this.InvokeAsync("exportCertificate", new object[] { serialNumber, password}, this.exportCertificateOperationCompleted, userState); } - - private void OnexportCertificateOperationCompleted(object arg) - { - if ((this.exportCertificateCompleted != null)) - { + + private void OnexportCertificateOperationCompleted(object arg) { + if ((this.exportCertificateCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.exportCertificateCompleted(this, new exportCertificateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/getServerCertificates", 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 SSLCertificate[] getServerCertificates() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/getServerCertificates", 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 SSLCertificate[] getServerCertificates() { object[] results = this.Invoke("getServerCertificates", new object[0]); return ((SSLCertificate[])(results[0])); } - + /// - public System.IAsyncResult BegingetServerCertificates(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BegingetServerCertificates(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("getServerCertificates", new object[0], callback, asyncState); } - + /// - public SSLCertificate[] EndgetServerCertificates(System.IAsyncResult asyncResult) - { + public SSLCertificate[] EndgetServerCertificates(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SSLCertificate[])(results[0])); } - + /// - public void getServerCertificatesAsync() - { + public void getServerCertificatesAsync() { this.getServerCertificatesAsync(null); } - + /// - public void getServerCertificatesAsync(object userState) - { - if ((this.getServerCertificatesOperationCompleted == null)) - { + public void getServerCertificatesAsync(object userState) { + if ((this.getServerCertificatesOperationCompleted == null)) { this.getServerCertificatesOperationCompleted = new System.Threading.SendOrPostCallback(this.OngetServerCertificatesOperationCompleted); } this.InvokeAsync("getServerCertificates", new object[0], this.getServerCertificatesOperationCompleted, userState); } - - private void OngetServerCertificatesOperationCompleted(object arg) - { - if ((this.getServerCertificatesCompleted != null)) - { + + private void OngetServerCertificatesOperationCompleted(object arg) { + if ((this.getServerCertificatesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.getServerCertificatesCompleted(this, new getServerCertificatesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteCertificate", 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 ResultObject DeleteCertificate(SSLCertificate certificate, WebSite website) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteCertificate", 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 ResultObject DeleteCertificate(SSLCertificate certificate, WebSite website) { object[] results = this.Invoke("DeleteCertificate", new object[] { certificate, website}); return ((ResultObject)(results[0])); } - + /// - public System.IAsyncResult BeginDeleteCertificate(SSLCertificate certificate, WebSite website, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDeleteCertificate(SSLCertificate certificate, WebSite website, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteCertificate", new object[] { certificate, website}, callback, asyncState); } - + /// - public ResultObject EndDeleteCertificate(System.IAsyncResult asyncResult) - { + public ResultObject EndDeleteCertificate(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((ResultObject)(results[0])); } - + /// - public void DeleteCertificateAsync(SSLCertificate certificate, WebSite website) - { + public void DeleteCertificateAsync(SSLCertificate certificate, WebSite website) { this.DeleteCertificateAsync(certificate, website, null); } - + /// - public void DeleteCertificateAsync(SSLCertificate certificate, WebSite website, object userState) - { - if ((this.DeleteCertificateOperationCompleted == null)) - { + public void DeleteCertificateAsync(SSLCertificate certificate, WebSite website, object userState) { + if ((this.DeleteCertificateOperationCompleted == null)) { this.DeleteCertificateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteCertificateOperationCompleted); } this.InvokeAsync("DeleteCertificate", new object[] { certificate, website}, this.DeleteCertificateOperationCompleted, userState); } - - private void OnDeleteCertificateOperationCompleted(object arg) - { - if ((this.DeleteCertificateCompleted != null)) - { + + private void OnDeleteCertificateOperationCompleted(object arg) { + if ((this.DeleteCertificateCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DeleteCertificateCompleted(this, new DeleteCertificateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ImportCertificate", 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 SSLCertificate ImportCertificate(WebSite website) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ImportCertificate", 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 SSLCertificate ImportCertificate(WebSite website) { object[] results = this.Invoke("ImportCertificate", new object[] { website}); return ((SSLCertificate)(results[0])); } - + /// - public System.IAsyncResult BeginImportCertificate(WebSite website, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginImportCertificate(WebSite website, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ImportCertificate", new object[] { website}, callback, asyncState); } - + /// - public SSLCertificate EndImportCertificate(System.IAsyncResult asyncResult) - { + public SSLCertificate EndImportCertificate(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SSLCertificate)(results[0])); } - + /// - public void ImportCertificateAsync(WebSite website) - { + public void ImportCertificateAsync(WebSite website) { this.ImportCertificateAsync(website, null); } - + /// - public void ImportCertificateAsync(WebSite website, object userState) - { - if ((this.ImportCertificateOperationCompleted == null)) - { + public void ImportCertificateAsync(WebSite website, object userState) { + if ((this.ImportCertificateOperationCompleted == null)) { this.ImportCertificateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnImportCertificateOperationCompleted); } this.InvokeAsync("ImportCertificate", new object[] { website}, this.ImportCertificateOperationCompleted, userState); } - - private void OnImportCertificateOperationCompleted(object arg) - { - if ((this.ImportCertificateCompleted != null)) - { + + private void OnImportCertificateOperationCompleted(object arg) { + if ((this.ImportCertificateCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ImportCertificateCompleted(this, new ImportCertificateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckCertificate", 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 CheckCertificate(WebSite webSite) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckCertificate", 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 CheckCertificate(WebSite webSite) { object[] results = this.Invoke("CheckCertificate", new object[] { webSite}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginCheckCertificate(WebSite webSite, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCheckCertificate(WebSite webSite, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CheckCertificate", new object[] { webSite}, callback, asyncState); } - + /// - public bool EndCheckCertificate(System.IAsyncResult asyncResult) - { + public bool EndCheckCertificate(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void CheckCertificateAsync(WebSite webSite) - { + public void CheckCertificateAsync(WebSite webSite) { this.CheckCertificateAsync(webSite, null); } - + /// - public void CheckCertificateAsync(WebSite webSite, object userState) - { - if ((this.CheckCertificateOperationCompleted == null)) - { + public void CheckCertificateAsync(WebSite webSite, object userState) { + if ((this.CheckCertificateOperationCompleted == null)) { this.CheckCertificateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckCertificateOperationCompleted); } this.InvokeAsync("CheckCertificate", new object[] { webSite}, this.CheckCertificateOperationCompleted, userState); } - - private void OnCheckCertificateOperationCompleted(object arg) - { - if ((this.CheckCertificateCompleted != null)) - { + + private void OnCheckCertificateOperationCompleted(object arg) { + if ((this.CheckCertificateCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CheckCertificateCompleted(this, new CheckCertificateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } @@ -4068,49 +4190,16 @@ namespace WebsitePanel.Providers.Web { } } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void ChangeSiteStateCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetSiteStateCompletedEventHandler(object sender, GetSiteStateCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSiteStateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4132,11 +4221,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetSiteIdCompletedEventHandler(object sender, GetSiteIdCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSiteIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4158,11 +4247,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetSitesAccountsCompletedEventHandler(object sender, GetSitesAccountsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSitesAccountsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4184,11 +4273,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void SiteExistsCompletedEventHandler(object sender, SiteExistsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class SiteExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4210,11 +4299,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetSitesCompletedEventHandler(object sender, GetSitesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSitesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4236,11 +4325,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetSiteCompletedEventHandler(object sender, GetSiteCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSiteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4262,11 +4351,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetSiteBindingsCompletedEventHandler(object sender, GetSiteBindingsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSiteBindingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4288,11 +4377,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void CreateSiteCompletedEventHandler(object sender, CreateSiteCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CreateSiteCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4314,23 +4403,23 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateSiteCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateSiteBindingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteSiteCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void VirtualDirectoryExistsCompletedEventHandler(object sender, VirtualDirectoryExistsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class VirtualDirectoryExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4352,11 +4441,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetVirtualDirectoriesCompletedEventHandler(object sender, GetVirtualDirectoriesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetVirtualDirectoriesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4378,11 +4467,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetVirtualDirectoryCompletedEventHandler(object sender, GetVirtualDirectoryCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetVirtualDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4404,23 +4493,23 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [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")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteVirtualDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void IsFrontPageSystemInstalledCompletedEventHandler(object sender, IsFrontPageSystemInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsFrontPageSystemInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4442,11 +4531,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void IsFrontPageInstalledCompletedEventHandler(object sender, IsFrontPageInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsFrontPageInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4468,11 +4557,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void InstallFrontPageCompletedEventHandler(object sender, InstallFrontPageCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class InstallFrontPageCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4494,19 +4583,19 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UninstallFrontPageCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void ChangeFrontPagePasswordCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void IsColdFusionSystemInstalledCompletedEventHandler(object sender, IsColdFusionSystemInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsColdFusionSystemInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4528,23 +4617,23 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GrantWebSiteAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void InstallSecuredFoldersCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UninstallSecuredFoldersCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetFoldersCompletedEventHandler(object sender, GetFoldersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetFoldersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4566,11 +4655,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetFolderCompletedEventHandler(object sender, GetFolderCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4592,19 +4681,19 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetUsersCompletedEventHandler(object sender, GetUsersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUsersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4626,11 +4715,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetUserCompletedEventHandler(object sender, GetUserCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4652,19 +4741,19 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGroupsCompletedEventHandler(object sender, GetGroupsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGroupsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4686,11 +4775,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGroupCompletedEventHandler(object sender, GetGroupCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGroupCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4712,19 +4801,19 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHeliconApeStatusCompletedEventHandler(object sender, GetHeliconApeStatusCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4746,23 +4835,23 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void InstallHeliconApeCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void EnableHeliconApeCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DisableHeliconApeCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHeliconApeFoldersCompletedEventHandler(object sender, GetHeliconApeFoldersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeFoldersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4784,11 +4873,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHeliconApeHttpdFolderCompletedEventHandler(object sender, GetHeliconApeHttpdFolderCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeHttpdFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4810,11 +4899,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHeliconApeFolderCompletedEventHandler(object sender, GetHeliconApeFolderCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4836,23 +4925,23 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateHeliconApeFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateHeliconApeHttpdFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteHeliconApeFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHeliconApeUsersCompletedEventHandler(object sender, GetHeliconApeUsersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeUsersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4874,11 +4963,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHeliconApeUserCompletedEventHandler(object sender, GetHeliconApeUserCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4900,19 +4989,19 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateHeliconApeUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteHeliconApeUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHeliconApeGroupsCompletedEventHandler(object sender, GetHeliconApeGroupsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeGroupsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4934,11 +5023,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetHeliconApeGroupCompletedEventHandler(object sender, GetHeliconApeGroupCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetHeliconApeGroupCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4960,19 +5049,61 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void UpdateHeliconApeGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GrantWebDeployPublishingAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void RevokeWebDeployPublishingAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteHeliconApeGroupCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void InitFeedsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void SetResourceLanguageCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetGalleryLanguagesCompletedEventHandler(object sender, GetGalleryLanguagesCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetGalleryLanguagesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetGalleryLanguagesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public GalleryLanguagesResult Result { + get { + this.RaiseExceptionIfNecessary(); + return ((GalleryLanguagesResult)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryCategoriesCompletedEventHandler(object sender, GetGalleryCategoriesCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryCategoriesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -4994,11 +5125,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationsCompletedEventHandler(object sender, GetGalleryApplicationsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5020,11 +5151,37 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetGalleryApplicationsFilteredCompletedEventHandler(object sender, GetGalleryApplicationsFilteredCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetGalleryApplicationsFilteredCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetGalleryApplicationsFilteredCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public GalleryApplicationsResult Result { + get { + this.RaiseExceptionIfNecessary(); + return ((GalleryApplicationsResult)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void IsMsDeployInstalledCompletedEventHandler(object sender, IsMsDeployInstalledCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class IsMsDeployInstalledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5046,11 +5203,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationCompletedEventHandler(object sender, GetGalleryApplicationCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5072,11 +5229,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationStatusCompletedEventHandler(object sender, GetGalleryApplicationStatusCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5098,11 +5255,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DownloadGalleryApplicationCompletedEventHandler(object sender, DownloadGalleryApplicationCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class DownloadGalleryApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5124,11 +5281,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetGalleryApplicationParametersCompletedEventHandler(object sender, GetGalleryApplicationParametersCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetGalleryApplicationParametersCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5150,11 +5307,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void InstallGalleryApplicationCompletedEventHandler(object sender, InstallGalleryApplicationCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class InstallGalleryApplicationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5176,11 +5333,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void CheckWebManagementAccountExistsCompletedEventHandler(object sender, CheckWebManagementAccountExistsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CheckWebManagementAccountExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5202,11 +5359,11 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void CheckWebManagementPasswordComplexityCompletedEventHandler(object sender, CheckWebManagementPasswordComplexityCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CheckWebManagementPasswordComplexityCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -5228,319 +5385,271 @@ namespace WebsitePanel.Providers.Web { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GrantWebManagementAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] - public delegate void GrantWebDeployPublishingAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] - public delegate void RevokeWebDeployPublishingAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] - public delegate void RevokeWebManagementAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void RevokeWebManagementAccessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void ChangeWebManagementAccessPasswordCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void generateCSRCompletedEventHandler(object sender, generateCSRCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class generateCSRCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class generateCSRCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal generateCSRCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal generateCSRCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SSLCertificate Result - { - get - { + public SSLCertificate Result { + get { this.RaiseExceptionIfNecessary(); return ((SSLCertificate)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void generateRenewalCSRCompletedEventHandler(object sender, generateRenewalCSRCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class generateRenewalCSRCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class generateRenewalCSRCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal generateRenewalCSRCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal generateRenewalCSRCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SSLCertificate Result - { - get - { + public SSLCertificate Result { + get { this.RaiseExceptionIfNecessary(); return ((SSLCertificate)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void getCertificateCompletedEventHandler(object sender, getCertificateCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class getCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class getCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal getCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal getCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SSLCertificate Result - { - get - { + public SSLCertificate Result { + get { this.RaiseExceptionIfNecessary(); return ((SSLCertificate)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void installCertificateCompletedEventHandler(object sender, installCertificateCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class installCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class installCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal installCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal installCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SSLCertificate Result - { - get - { + public SSLCertificate Result { + get { this.RaiseExceptionIfNecessary(); return ((SSLCertificate)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void installPFXCompletedEventHandler(object sender, installPFXCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class installPFXCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class installPFXCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal installPFXCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal installPFXCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SSLCertificate Result - { - get - { + public SSLCertificate Result { + get { this.RaiseExceptionIfNecessary(); return ((SSLCertificate)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void exportCertificateCompletedEventHandler(object sender, exportCertificateCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class exportCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class exportCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal exportCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal exportCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public byte[] Result - { - get - { + public byte[] Result { + get { this.RaiseExceptionIfNecessary(); return ((byte[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void getServerCertificatesCompletedEventHandler(object sender, getServerCertificatesCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class getServerCertificatesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class getServerCertificatesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal getServerCertificatesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal getServerCertificatesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SSLCertificate[] Result - { - get - { + public SSLCertificate[] Result { + get { this.RaiseExceptionIfNecessary(); return ((SSLCertificate[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteCertificateCompletedEventHandler(object sender, DeleteCertificateCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class DeleteCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class DeleteCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal DeleteCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal DeleteCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public ResultObject Result - { - get - { + public ResultObject Result { + get { this.RaiseExceptionIfNecessary(); return ((ResultObject)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void ImportCertificateCompletedEventHandler(object sender, ImportCertificateCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class ImportCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class ImportCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal ImportCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal ImportCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SSLCertificate Result - { - get - { + public SSLCertificate Result { + get { this.RaiseExceptionIfNecessary(); return ((SSLCertificate)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void CheckCertificateCompletedEventHandler(object sender, CheckCertificateCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class CheckCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class CheckCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal CheckCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal CheckCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/WindowsServerProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/WindowsServerProxy.cs index cef73fa6..57e41dd1 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/WindowsServerProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/WindowsServerProxy.cs @@ -47,497 +47,914 @@ namespace WebsitePanel.Server using System.Web.Services.Protocols; using System; using System.Xml.Serialization; - - + using WebsitePanel.Providers; + + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "WindowsServerSoap", Namespace = "http://smbsaas/websitepanel/server/")] - public partial class WindowsServer : Microsoft.Web.Services3.WebServicesClientProtocol - { - + [System.Web.Services.WebServiceBindingAttribute(Name="WindowsServerSoap", Namespace="http://smbsaas/websitepanel/server/")] + public partial class WindowsServer : Microsoft.Web.Services3.WebServicesClientProtocol { + private System.Threading.SendOrPostCallback GetTerminalServicesSessionsOperationCompleted; - + private System.Threading.SendOrPostCallback CloseTerminalServicesSessionOperationCompleted; - + private System.Threading.SendOrPostCallback GetWindowsProcessesOperationCompleted; - + private System.Threading.SendOrPostCallback TerminateWindowsProcessOperationCompleted; - + private System.Threading.SendOrPostCallback GetWindowsServicesOperationCompleted; - + private System.Threading.SendOrPostCallback ChangeWindowsServiceStatusOperationCompleted; - + + private System.Threading.SendOrPostCallback GetWPIProductsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIProductsFilteredOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPITabsOperationCompleted; + + private System.Threading.SendOrPostCallback InitWPIFeedsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIKeywordsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIProductsWithDependenciesOperationCompleted; + + private System.Threading.SendOrPostCallback InstallWPIProductsOperationCompleted; + + private System.Threading.SendOrPostCallback CancelInstallWPIProductsOperationCompleted; + + private System.Threading.SendOrPostCallback GetWPIStatusOperationCompleted; + + private System.Threading.SendOrPostCallback WpiGetLogFileDirectoryOperationCompleted; + + private System.Threading.SendOrPostCallback WpiGetLogsInDirectoryOperationCompleted; + private System.Threading.SendOrPostCallback GetLogNamesOperationCompleted; - + private System.Threading.SendOrPostCallback GetLogEntriesOperationCompleted; - + private System.Threading.SendOrPostCallback GetLogEntriesPagedOperationCompleted; - + private System.Threading.SendOrPostCallback ClearLogOperationCompleted; - + private System.Threading.SendOrPostCallback RebootSystemOperationCompleted; - + private System.Threading.SendOrPostCallback ExecuteSystemCommandOperationCompleted; - + /// - public WindowsServer() - { - this.Url = "http://localhost/WebsitePanelServer/WindowsServer.asmx"; + public WindowsServer() { + this.Url = "http://localhost:9003/WindowsServer.asmx"; } - + /// public event GetTerminalServicesSessionsCompletedEventHandler GetTerminalServicesSessionsCompleted; - + /// public event CloseTerminalServicesSessionCompletedEventHandler CloseTerminalServicesSessionCompleted; - + /// public event GetWindowsProcessesCompletedEventHandler GetWindowsProcessesCompleted; - + /// public event TerminateWindowsProcessCompletedEventHandler TerminateWindowsProcessCompleted; - + /// public event GetWindowsServicesCompletedEventHandler GetWindowsServicesCompleted; - + /// public event ChangeWindowsServiceStatusCompletedEventHandler ChangeWindowsServiceStatusCompleted; - + + /// + public event GetWPIProductsCompletedEventHandler GetWPIProductsCompleted; + + /// + public event GetWPIProductsFilteredCompletedEventHandler GetWPIProductsFilteredCompleted; + + /// + public event GetWPITabsCompletedEventHandler GetWPITabsCompleted; + + /// + public event InitWPIFeedsCompletedEventHandler InitWPIFeedsCompleted; + + /// + public event GetWPIKeywordsCompletedEventHandler GetWPIKeywordsCompleted; + + /// + public event GetWPIProductsWithDependenciesCompletedEventHandler GetWPIProductsWithDependenciesCompleted; + + /// + public event InstallWPIProductsCompletedEventHandler InstallWPIProductsCompleted; + + /// + public event CancelInstallWPIProductsCompletedEventHandler CancelInstallWPIProductsCompleted; + + /// + public event GetWPIStatusCompletedEventHandler GetWPIStatusCompleted; + + /// + public event WpiGetLogFileDirectoryCompletedEventHandler WpiGetLogFileDirectoryCompleted; + + /// + public event WpiGetLogsInDirectoryCompletedEventHandler WpiGetLogsInDirectoryCompleted; + /// public event GetLogNamesCompletedEventHandler GetLogNamesCompleted; - + /// public event GetLogEntriesCompletedEventHandler GetLogEntriesCompleted; - + /// public event GetLogEntriesPagedCompletedEventHandler GetLogEntriesPagedCompleted; - + /// public event ClearLogCompletedEventHandler ClearLogCompleted; - + /// public event RebootSystemCompletedEventHandler RebootSystemCompleted; - + /// public event ExecuteSystemCommandCompletedEventHandler ExecuteSystemCommandCompleted; - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetTerminalServicesSessions", 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 TerminalSession[] GetTerminalServicesSessions() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetTerminalServicesSessions", 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 TerminalSession[] GetTerminalServicesSessions() { object[] results = this.Invoke("GetTerminalServicesSessions", new object[0]); return ((TerminalSession[])(results[0])); } - + /// - public System.IAsyncResult BeginGetTerminalServicesSessions(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetTerminalServicesSessions(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetTerminalServicesSessions", new object[0], callback, asyncState); } - + /// - public TerminalSession[] EndGetTerminalServicesSessions(System.IAsyncResult asyncResult) - { + public TerminalSession[] EndGetTerminalServicesSessions(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((TerminalSession[])(results[0])); } - + /// - public void GetTerminalServicesSessionsAsync() - { + public void GetTerminalServicesSessionsAsync() { this.GetTerminalServicesSessionsAsync(null); } - + /// - public void GetTerminalServicesSessionsAsync(object userState) - { - if ((this.GetTerminalServicesSessionsOperationCompleted == null)) - { + public void GetTerminalServicesSessionsAsync(object userState) { + if ((this.GetTerminalServicesSessionsOperationCompleted == null)) { this.GetTerminalServicesSessionsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetTerminalServicesSessionsOperationCompleted); } this.InvokeAsync("GetTerminalServicesSessions", new object[0], this.GetTerminalServicesSessionsOperationCompleted, userState); } - - private void OnGetTerminalServicesSessionsOperationCompleted(object arg) - { - if ((this.GetTerminalServicesSessionsCompleted != null)) - { + + private void OnGetTerminalServicesSessionsOperationCompleted(object arg) { + if ((this.GetTerminalServicesSessionsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetTerminalServicesSessionsCompleted(this, new GetTerminalServicesSessionsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CloseTerminalServicesSession", 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 CloseTerminalServicesSession(int sessionId) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CloseTerminalServicesSession", 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 CloseTerminalServicesSession(int sessionId) { this.Invoke("CloseTerminalServicesSession", new object[] { sessionId}); } - + /// - public System.IAsyncResult BeginCloseTerminalServicesSession(int sessionId, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCloseTerminalServicesSession(int sessionId, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CloseTerminalServicesSession", new object[] { sessionId}, callback, asyncState); } - + /// - public void EndCloseTerminalServicesSession(System.IAsyncResult asyncResult) - { + public void EndCloseTerminalServicesSession(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void CloseTerminalServicesSessionAsync(int sessionId) - { + public void CloseTerminalServicesSessionAsync(int sessionId) { this.CloseTerminalServicesSessionAsync(sessionId, null); } - + /// - public void CloseTerminalServicesSessionAsync(int sessionId, object userState) - { - if ((this.CloseTerminalServicesSessionOperationCompleted == null)) - { + public void CloseTerminalServicesSessionAsync(int sessionId, object userState) { + if ((this.CloseTerminalServicesSessionOperationCompleted == null)) { this.CloseTerminalServicesSessionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCloseTerminalServicesSessionOperationCompleted); } this.InvokeAsync("CloseTerminalServicesSession", new object[] { sessionId}, this.CloseTerminalServicesSessionOperationCompleted, userState); } - - private void OnCloseTerminalServicesSessionOperationCompleted(object arg) - { - if ((this.CloseTerminalServicesSessionCompleted != null)) - { + + private void OnCloseTerminalServicesSessionOperationCompleted(object arg) { + if ((this.CloseTerminalServicesSessionCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CloseTerminalServicesSessionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWindowsProcesses", 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 WindowsProcess[] GetWindowsProcesses() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWindowsProcesses", 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 WindowsProcess[] GetWindowsProcesses() { object[] results = this.Invoke("GetWindowsProcesses", new object[0]); return ((WindowsProcess[])(results[0])); } - + /// - public System.IAsyncResult BeginGetWindowsProcesses(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetWindowsProcesses(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetWindowsProcesses", new object[0], callback, asyncState); } - + /// - public WindowsProcess[] EndGetWindowsProcesses(System.IAsyncResult asyncResult) - { + public WindowsProcess[] EndGetWindowsProcesses(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((WindowsProcess[])(results[0])); } - + /// - public void GetWindowsProcessesAsync() - { + public void GetWindowsProcessesAsync() { this.GetWindowsProcessesAsync(null); } - + /// - public void GetWindowsProcessesAsync(object userState) - { - if ((this.GetWindowsProcessesOperationCompleted == null)) - { + public void GetWindowsProcessesAsync(object userState) { + if ((this.GetWindowsProcessesOperationCompleted == null)) { this.GetWindowsProcessesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWindowsProcessesOperationCompleted); } this.InvokeAsync("GetWindowsProcesses", new object[0], this.GetWindowsProcessesOperationCompleted, userState); } - - private void OnGetWindowsProcessesOperationCompleted(object arg) - { - if ((this.GetWindowsProcessesCompleted != null)) - { + + private void OnGetWindowsProcessesOperationCompleted(object arg) { + if ((this.GetWindowsProcessesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetWindowsProcessesCompleted(this, new GetWindowsProcessesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/TerminateWindowsProcess", 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 TerminateWindowsProcess(int pid) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/TerminateWindowsProcess", 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 TerminateWindowsProcess(int pid) { this.Invoke("TerminateWindowsProcess", new object[] { pid}); } - + /// - public System.IAsyncResult BeginTerminateWindowsProcess(int pid, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginTerminateWindowsProcess(int pid, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("TerminateWindowsProcess", new object[] { pid}, callback, asyncState); } - + /// - public void EndTerminateWindowsProcess(System.IAsyncResult asyncResult) - { + public void EndTerminateWindowsProcess(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void TerminateWindowsProcessAsync(int pid) - { + public void TerminateWindowsProcessAsync(int pid) { this.TerminateWindowsProcessAsync(pid, null); } - + /// - public void TerminateWindowsProcessAsync(int pid, object userState) - { - if ((this.TerminateWindowsProcessOperationCompleted == null)) - { + public void TerminateWindowsProcessAsync(int pid, object userState) { + if ((this.TerminateWindowsProcessOperationCompleted == null)) { this.TerminateWindowsProcessOperationCompleted = new System.Threading.SendOrPostCallback(this.OnTerminateWindowsProcessOperationCompleted); } this.InvokeAsync("TerminateWindowsProcess", new object[] { pid}, this.TerminateWindowsProcessOperationCompleted, userState); } - - private void OnTerminateWindowsProcessOperationCompleted(object arg) - { - if ((this.TerminateWindowsProcessCompleted != null)) - { + + private void OnTerminateWindowsProcessOperationCompleted(object arg) { + if ((this.TerminateWindowsProcessCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.TerminateWindowsProcessCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWindowsServices", 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 WindowsService[] GetWindowsServices() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWindowsServices", 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 WindowsService[] GetWindowsServices() { object[] results = this.Invoke("GetWindowsServices", new object[0]); return ((WindowsService[])(results[0])); } - + /// - public System.IAsyncResult BeginGetWindowsServices(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetWindowsServices(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetWindowsServices", new object[0], callback, asyncState); } - + /// - public WindowsService[] EndGetWindowsServices(System.IAsyncResult asyncResult) - { + public WindowsService[] EndGetWindowsServices(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((WindowsService[])(results[0])); } - + /// - public void GetWindowsServicesAsync() - { + public void GetWindowsServicesAsync() { this.GetWindowsServicesAsync(null); } - + /// - public void GetWindowsServicesAsync(object userState) - { - if ((this.GetWindowsServicesOperationCompleted == null)) - { + public void GetWindowsServicesAsync(object userState) { + if ((this.GetWindowsServicesOperationCompleted == null)) { this.GetWindowsServicesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWindowsServicesOperationCompleted); } this.InvokeAsync("GetWindowsServices", new object[0], this.GetWindowsServicesOperationCompleted, userState); } - - private void OnGetWindowsServicesOperationCompleted(object arg) - { - if ((this.GetWindowsServicesCompleted != null)) - { + + private void OnGetWindowsServicesOperationCompleted(object arg) { + if ((this.GetWindowsServicesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetWindowsServicesCompleted(this, new GetWindowsServicesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ChangeWindowsServiceStatus", 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 ChangeWindowsServiceStatus(string id, WindowsServiceStatus status) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ChangeWindowsServiceStatus", 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 ChangeWindowsServiceStatus(string id, WindowsServiceStatus status) { this.Invoke("ChangeWindowsServiceStatus", new object[] { id, status}); } - + /// - public System.IAsyncResult BeginChangeWindowsServiceStatus(string id, WindowsServiceStatus status, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginChangeWindowsServiceStatus(string id, WindowsServiceStatus status, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ChangeWindowsServiceStatus", new object[] { id, status}, callback, asyncState); } - + /// - public void EndChangeWindowsServiceStatus(System.IAsyncResult asyncResult) - { + public void EndChangeWindowsServiceStatus(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void ChangeWindowsServiceStatusAsync(string id, WindowsServiceStatus status) - { + public void ChangeWindowsServiceStatusAsync(string id, WindowsServiceStatus status) { this.ChangeWindowsServiceStatusAsync(id, status, null); } - + /// - public void ChangeWindowsServiceStatusAsync(string id, WindowsServiceStatus status, object userState) - { - if ((this.ChangeWindowsServiceStatusOperationCompleted == null)) - { + public void ChangeWindowsServiceStatusAsync(string id, WindowsServiceStatus status, object userState) { + if ((this.ChangeWindowsServiceStatusOperationCompleted == null)) { this.ChangeWindowsServiceStatusOperationCompleted = new System.Threading.SendOrPostCallback(this.OnChangeWindowsServiceStatusOperationCompleted); } this.InvokeAsync("ChangeWindowsServiceStatus", new object[] { id, status}, this.ChangeWindowsServiceStatusOperationCompleted, userState); } - - private void OnChangeWindowsServiceStatusOperationCompleted(object arg) - { - if ((this.ChangeWindowsServiceStatusCompleted != null)) - { + + private void OnChangeWindowsServiceStatusOperationCompleted(object arg) { + if ((this.ChangeWindowsServiceStatusCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ChangeWindowsServiceStatusCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetLogNames", 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 string[] GetLogNames() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWPIProducts", 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 WPIProduct[] GetWPIProducts(string tabId, string keywordId) { + object[] results = this.Invoke("GetWPIProducts", new object[] { + tabId, + keywordId}); + return ((WPIProduct[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIProducts(string tabId, string keywordId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIProducts", new object[] { + tabId, + keywordId}, callback, asyncState); + } + + /// + public WPIProduct[] EndGetWPIProducts(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPIProduct[])(results[0])); + } + + /// + public void GetWPIProductsAsync(string tabId, string keywordId) { + this.GetWPIProductsAsync(tabId, keywordId, null); + } + + /// + public void GetWPIProductsAsync(string tabId, string keywordId, object userState) { + if ((this.GetWPIProductsOperationCompleted == null)) { + this.GetWPIProductsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIProductsOperationCompleted); + } + this.InvokeAsync("GetWPIProducts", new object[] { + tabId, + keywordId}, this.GetWPIProductsOperationCompleted, userState); + } + + private void OnGetWPIProductsOperationCompleted(object arg) { + if ((this.GetWPIProductsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIProductsCompleted(this, new GetWPIProductsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWPIProductsFiltered", 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 WPIProduct[] GetWPIProductsFiltered(string filter) { + object[] results = this.Invoke("GetWPIProductsFiltered", new object[] { + filter}); + return ((WPIProduct[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIProductsFiltered(string filter, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIProductsFiltered", new object[] { + filter}, callback, asyncState); + } + + /// + public WPIProduct[] EndGetWPIProductsFiltered(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPIProduct[])(results[0])); + } + + /// + public void GetWPIProductsFilteredAsync(string filter) { + this.GetWPIProductsFilteredAsync(filter, null); + } + + /// + public void GetWPIProductsFilteredAsync(string filter, object userState) { + if ((this.GetWPIProductsFilteredOperationCompleted == null)) { + this.GetWPIProductsFilteredOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIProductsFilteredOperationCompleted); + } + this.InvokeAsync("GetWPIProductsFiltered", new object[] { + filter}, this.GetWPIProductsFilteredOperationCompleted, userState); + } + + private void OnGetWPIProductsFilteredOperationCompleted(object arg) { + if ((this.GetWPIProductsFilteredCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIProductsFilteredCompleted(this, new GetWPIProductsFilteredCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWPITabs", 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 WPITab[] GetWPITabs() { + object[] results = this.Invoke("GetWPITabs", new object[0]); + return ((WPITab[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPITabs(System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPITabs", new object[0], callback, asyncState); + } + + /// + public WPITab[] EndGetWPITabs(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPITab[])(results[0])); + } + + /// + public void GetWPITabsAsync() { + this.GetWPITabsAsync(null); + } + + /// + public void GetWPITabsAsync(object userState) { + if ((this.GetWPITabsOperationCompleted == null)) { + this.GetWPITabsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPITabsOperationCompleted); + } + this.InvokeAsync("GetWPITabs", new object[0], this.GetWPITabsOperationCompleted, userState); + } + + private void OnGetWPITabsOperationCompleted(object arg) { + if ((this.GetWPITabsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPITabsCompleted(this, new GetWPITabsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/InitWPIFeeds", 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 InitWPIFeeds(string feedUrls) { + this.Invoke("InitWPIFeeds", new object[] { + feedUrls}); + } + + /// + public System.IAsyncResult BeginInitWPIFeeds(string feedUrls, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("InitWPIFeeds", new object[] { + feedUrls}, callback, asyncState); + } + + /// + public void EndInitWPIFeeds(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void InitWPIFeedsAsync(string feedUrls) { + this.InitWPIFeedsAsync(feedUrls, null); + } + + /// + public void InitWPIFeedsAsync(string feedUrls, object userState) { + if ((this.InitWPIFeedsOperationCompleted == null)) { + this.InitWPIFeedsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInitWPIFeedsOperationCompleted); + } + this.InvokeAsync("InitWPIFeeds", new object[] { + feedUrls}, this.InitWPIFeedsOperationCompleted, userState); + } + + private void OnInitWPIFeedsOperationCompleted(object arg) { + if ((this.InitWPIFeedsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.InitWPIFeedsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWPIKeywords", 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 WPIKeyword[] GetWPIKeywords() { + object[] results = this.Invoke("GetWPIKeywords", new object[0]); + return ((WPIKeyword[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIKeywords(System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIKeywords", new object[0], callback, asyncState); + } + + /// + public WPIKeyword[] EndGetWPIKeywords(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPIKeyword[])(results[0])); + } + + /// + public void GetWPIKeywordsAsync() { + this.GetWPIKeywordsAsync(null); + } + + /// + public void GetWPIKeywordsAsync(object userState) { + if ((this.GetWPIKeywordsOperationCompleted == null)) { + this.GetWPIKeywordsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIKeywordsOperationCompleted); + } + this.InvokeAsync("GetWPIKeywords", new object[0], this.GetWPIKeywordsOperationCompleted, userState); + } + + private void OnGetWPIKeywordsOperationCompleted(object arg) { + if ((this.GetWPIKeywordsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIKeywordsCompleted(this, new GetWPIKeywordsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWPIProductsWithDependencies", 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 WPIProduct[] GetWPIProductsWithDependencies(string[] products) { + object[] results = this.Invoke("GetWPIProductsWithDependencies", new object[] { + products}); + return ((WPIProduct[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIProductsWithDependencies(string[] products, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIProductsWithDependencies", new object[] { + products}, callback, asyncState); + } + + /// + public WPIProduct[] EndGetWPIProductsWithDependencies(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((WPIProduct[])(results[0])); + } + + /// + public void GetWPIProductsWithDependenciesAsync(string[] products) { + this.GetWPIProductsWithDependenciesAsync(products, null); + } + + /// + public void GetWPIProductsWithDependenciesAsync(string[] products, object userState) { + if ((this.GetWPIProductsWithDependenciesOperationCompleted == null)) { + this.GetWPIProductsWithDependenciesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIProductsWithDependenciesOperationCompleted); + } + this.InvokeAsync("GetWPIProductsWithDependencies", new object[] { + products}, this.GetWPIProductsWithDependenciesOperationCompleted, userState); + } + + private void OnGetWPIProductsWithDependenciesOperationCompleted(object arg) { + if ((this.GetWPIProductsWithDependenciesCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIProductsWithDependenciesCompleted(this, new GetWPIProductsWithDependenciesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/InstallWPIProducts", 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 InstallWPIProducts(string[] products) { + this.Invoke("InstallWPIProducts", new object[] { + products}); + } + + /// + public System.IAsyncResult BeginInstallWPIProducts(string[] products, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("InstallWPIProducts", new object[] { + products}, callback, asyncState); + } + + /// + public void EndInstallWPIProducts(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void InstallWPIProductsAsync(string[] products) { + this.InstallWPIProductsAsync(products, null); + } + + /// + public void InstallWPIProductsAsync(string[] products, object userState) { + if ((this.InstallWPIProductsOperationCompleted == null)) { + this.InstallWPIProductsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInstallWPIProductsOperationCompleted); + } + this.InvokeAsync("InstallWPIProducts", new object[] { + products}, this.InstallWPIProductsOperationCompleted, userState); + } + + private void OnInstallWPIProductsOperationCompleted(object arg) { + if ((this.InstallWPIProductsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.InstallWPIProductsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CancelInstallWPIProducts", 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 CancelInstallWPIProducts() { + this.Invoke("CancelInstallWPIProducts", new object[0]); + } + + /// + public System.IAsyncResult BeginCancelInstallWPIProducts(System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("CancelInstallWPIProducts", new object[0], callback, asyncState); + } + + /// + public void EndCancelInstallWPIProducts(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void CancelInstallWPIProductsAsync() { + this.CancelInstallWPIProductsAsync(null); + } + + /// + public void CancelInstallWPIProductsAsync(object userState) { + if ((this.CancelInstallWPIProductsOperationCompleted == null)) { + this.CancelInstallWPIProductsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCancelInstallWPIProductsOperationCompleted); + } + this.InvokeAsync("CancelInstallWPIProducts", new object[0], this.CancelInstallWPIProductsOperationCompleted, userState); + } + + private void OnCancelInstallWPIProductsOperationCompleted(object arg) { + if ((this.CancelInstallWPIProductsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.CancelInstallWPIProductsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetWPIStatus", 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 string GetWPIStatus() { + object[] results = this.Invoke("GetWPIStatus", new object[0]); + return ((string)(results[0])); + } + + /// + public System.IAsyncResult BeginGetWPIStatus(System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetWPIStatus", new object[0], callback, asyncState); + } + + /// + public string EndGetWPIStatus(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((string)(results[0])); + } + + /// + public void GetWPIStatusAsync() { + this.GetWPIStatusAsync(null); + } + + /// + public void GetWPIStatusAsync(object userState) { + if ((this.GetWPIStatusOperationCompleted == null)) { + this.GetWPIStatusOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWPIStatusOperationCompleted); + } + this.InvokeAsync("GetWPIStatus", new object[0], this.GetWPIStatusOperationCompleted, userState); + } + + private void OnGetWPIStatusOperationCompleted(object arg) { + if ((this.GetWPIStatusCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetWPIStatusCompleted(this, new GetWPIStatusCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/WpiGetLogFileDirectory", 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 string WpiGetLogFileDirectory() { + object[] results = this.Invoke("WpiGetLogFileDirectory", new object[0]); + return ((string)(results[0])); + } + + /// + public System.IAsyncResult BeginWpiGetLogFileDirectory(System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("WpiGetLogFileDirectory", new object[0], callback, asyncState); + } + + /// + public string EndWpiGetLogFileDirectory(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((string)(results[0])); + } + + /// + public void WpiGetLogFileDirectoryAsync() { + this.WpiGetLogFileDirectoryAsync(null); + } + + /// + public void WpiGetLogFileDirectoryAsync(object userState) { + if ((this.WpiGetLogFileDirectoryOperationCompleted == null)) { + this.WpiGetLogFileDirectoryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnWpiGetLogFileDirectoryOperationCompleted); + } + this.InvokeAsync("WpiGetLogFileDirectory", new object[0], this.WpiGetLogFileDirectoryOperationCompleted, userState); + } + + private void OnWpiGetLogFileDirectoryOperationCompleted(object arg) { + if ((this.WpiGetLogFileDirectoryCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.WpiGetLogFileDirectoryCompleted(this, new WpiGetLogFileDirectoryCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/WpiGetLogsInDirectory", 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 SettingPair[] WpiGetLogsInDirectory(string Path) { + object[] results = this.Invoke("WpiGetLogsInDirectory", new object[] { + Path}); + return ((SettingPair[])(results[0])); + } + + /// + public System.IAsyncResult BeginWpiGetLogsInDirectory(string Path, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("WpiGetLogsInDirectory", new object[] { + Path}, callback, asyncState); + } + + /// + public SettingPair[] EndWpiGetLogsInDirectory(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((SettingPair[])(results[0])); + } + + /// + public void WpiGetLogsInDirectoryAsync(string Path) { + this.WpiGetLogsInDirectoryAsync(Path, null); + } + + /// + public void WpiGetLogsInDirectoryAsync(string Path, object userState) { + if ((this.WpiGetLogsInDirectoryOperationCompleted == null)) { + this.WpiGetLogsInDirectoryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnWpiGetLogsInDirectoryOperationCompleted); + } + this.InvokeAsync("WpiGetLogsInDirectory", new object[] { + Path}, this.WpiGetLogsInDirectoryOperationCompleted, userState); + } + + private void OnWpiGetLogsInDirectoryOperationCompleted(object arg) { + if ((this.WpiGetLogsInDirectoryCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.WpiGetLogsInDirectoryCompleted(this, new WpiGetLogsInDirectoryCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetLogNames", 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 string[] GetLogNames() { object[] results = this.Invoke("GetLogNames", new object[0]); return ((string[])(results[0])); } - + /// - public System.IAsyncResult BeginGetLogNames(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetLogNames(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetLogNames", new object[0], callback, asyncState); } - + /// - public string[] EndGetLogNames(System.IAsyncResult asyncResult) - { + public string[] EndGetLogNames(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string[])(results[0])); } - + /// - public void GetLogNamesAsync() - { + public void GetLogNamesAsync() { this.GetLogNamesAsync(null); } - + /// - public void GetLogNamesAsync(object userState) - { - if ((this.GetLogNamesOperationCompleted == null)) - { + public void GetLogNamesAsync(object userState) { + if ((this.GetLogNamesOperationCompleted == null)) { this.GetLogNamesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLogNamesOperationCompleted); } this.InvokeAsync("GetLogNames", new object[0], this.GetLogNamesOperationCompleted, userState); } - - private void OnGetLogNamesOperationCompleted(object arg) - { - if ((this.GetLogNamesCompleted != null)) - { + + private void OnGetLogNamesOperationCompleted(object arg) { + if ((this.GetLogNamesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetLogNamesCompleted(this, new GetLogNamesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetLogEntries", 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 SystemLogEntry[] GetLogEntries(string logName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetLogEntries", 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 SystemLogEntry[] GetLogEntries(string logName) { object[] results = this.Invoke("GetLogEntries", new object[] { logName}); return ((SystemLogEntry[])(results[0])); } - + /// - public System.IAsyncResult BeginGetLogEntries(string logName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetLogEntries(string logName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetLogEntries", new object[] { logName}, callback, asyncState); } - + /// - public SystemLogEntry[] EndGetLogEntries(System.IAsyncResult asyncResult) - { + public SystemLogEntry[] EndGetLogEntries(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SystemLogEntry[])(results[0])); } - + /// - public void GetLogEntriesAsync(string logName) - { + public void GetLogEntriesAsync(string logName) { this.GetLogEntriesAsync(logName, null); } - + /// - public void GetLogEntriesAsync(string logName, object userState) - { - if ((this.GetLogEntriesOperationCompleted == null)) - { + public void GetLogEntriesAsync(string logName, object userState) { + if ((this.GetLogEntriesOperationCompleted == null)) { this.GetLogEntriesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLogEntriesOperationCompleted); } this.InvokeAsync("GetLogEntries", new object[] { logName}, this.GetLogEntriesOperationCompleted, userState); } - - private void OnGetLogEntriesOperationCompleted(object arg) - { - if ((this.GetLogEntriesCompleted != null)) - { + + private void OnGetLogEntriesOperationCompleted(object arg) { + if ((this.GetLogEntriesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetLogEntriesCompleted(this, new GetLogEntriesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetLogEntriesPaged", 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 SystemLogEntriesPaged GetLogEntriesPaged(string logName, int startRow, int maximumRows) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetLogEntriesPaged", 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 SystemLogEntriesPaged GetLogEntriesPaged(string logName, int startRow, int maximumRows) { object[] results = this.Invoke("GetLogEntriesPaged", new object[] { logName, startRow, maximumRows}); return ((SystemLogEntriesPaged)(results[0])); } - + /// - public System.IAsyncResult BeginGetLogEntriesPaged(string logName, int startRow, int maximumRows, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetLogEntriesPaged(string logName, int startRow, int maximumRows, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetLogEntriesPaged", new object[] { logName, startRow, maximumRows}, callback, asyncState); } - + /// - public SystemLogEntriesPaged EndGetLogEntriesPaged(System.IAsyncResult asyncResult) - { + public SystemLogEntriesPaged EndGetLogEntriesPaged(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SystemLogEntriesPaged)(results[0])); } - + /// - public void GetLogEntriesPagedAsync(string logName, int startRow, int maximumRows) - { + public void GetLogEntriesPagedAsync(string logName, int startRow, int maximumRows) { this.GetLogEntriesPagedAsync(logName, startRow, maximumRows, null); } - + /// - public void GetLogEntriesPagedAsync(string logName, int startRow, int maximumRows, object userState) - { - if ((this.GetLogEntriesPagedOperationCompleted == null)) - { + public void GetLogEntriesPagedAsync(string logName, int startRow, int maximumRows, object userState) { + if ((this.GetLogEntriesPagedOperationCompleted == null)) { this.GetLogEntriesPagedOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLogEntriesPagedOperationCompleted); } this.InvokeAsync("GetLogEntriesPaged", new object[] { @@ -545,398 +962,555 @@ namespace WebsitePanel.Server startRow, maximumRows}, this.GetLogEntriesPagedOperationCompleted, userState); } - - private void OnGetLogEntriesPagedOperationCompleted(object arg) - { - if ((this.GetLogEntriesPagedCompleted != null)) - { + + private void OnGetLogEntriesPagedOperationCompleted(object arg) { + if ((this.GetLogEntriesPagedCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetLogEntriesPagedCompleted(this, new GetLogEntriesPagedCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ClearLog", 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 ClearLog(string logName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ClearLog", 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 ClearLog(string logName) { this.Invoke("ClearLog", new object[] { logName}); } - + /// - public System.IAsyncResult BeginClearLog(string logName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginClearLog(string logName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ClearLog", new object[] { logName}, callback, asyncState); } - + /// - public void EndClearLog(System.IAsyncResult asyncResult) - { + public void EndClearLog(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void ClearLogAsync(string logName) - { + public void ClearLogAsync(string logName) { this.ClearLogAsync(logName, null); } - + /// - public void ClearLogAsync(string logName, object userState) - { - if ((this.ClearLogOperationCompleted == null)) - { + public void ClearLogAsync(string logName, object userState) { + if ((this.ClearLogOperationCompleted == null)) { this.ClearLogOperationCompleted = new System.Threading.SendOrPostCallback(this.OnClearLogOperationCompleted); } this.InvokeAsync("ClearLog", new object[] { logName}, this.ClearLogOperationCompleted, userState); } - - private void OnClearLogOperationCompleted(object arg) - { - if ((this.ClearLogCompleted != null)) - { + + private void OnClearLogOperationCompleted(object arg) { + if ((this.ClearLogCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ClearLogCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RebootSystem", 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 RebootSystem() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RebootSystem", 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 RebootSystem() { this.Invoke("RebootSystem", new object[0]); } - + /// - public System.IAsyncResult BeginRebootSystem(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginRebootSystem(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("RebootSystem", new object[0], callback, asyncState); } - + /// - public void EndRebootSystem(System.IAsyncResult asyncResult) - { + public void EndRebootSystem(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void RebootSystemAsync() - { + public void RebootSystemAsync() { this.RebootSystemAsync(null); } - + /// - public void RebootSystemAsync(object userState) - { - if ((this.RebootSystemOperationCompleted == null)) - { + public void RebootSystemAsync(object userState) { + if ((this.RebootSystemOperationCompleted == null)) { this.RebootSystemOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRebootSystemOperationCompleted); } this.InvokeAsync("RebootSystem", new object[0], this.RebootSystemOperationCompleted, userState); } - - private void OnRebootSystemOperationCompleted(object arg) - { - if ((this.RebootSystemCompleted != null)) - { + + private void OnRebootSystemOperationCompleted(object arg) { + if ((this.RebootSystemCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.RebootSystemCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ExecuteSystemCommand", 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 string ExecuteSystemCommand(string path, string args) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ExecuteSystemCommand", 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 string ExecuteSystemCommand(string path, string args) { object[] results = this.Invoke("ExecuteSystemCommand", new object[] { path, args}); return ((string)(results[0])); } - + /// - public System.IAsyncResult BeginExecuteSystemCommand(string path, string args, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginExecuteSystemCommand(string path, string args, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ExecuteSystemCommand", new object[] { path, args}, callback, asyncState); } - + /// - public string EndExecuteSystemCommand(System.IAsyncResult asyncResult) - { + public string EndExecuteSystemCommand(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string)(results[0])); } - + /// - public void ExecuteSystemCommandAsync(string path, string args) - { + public void ExecuteSystemCommandAsync(string path, string args) { this.ExecuteSystemCommandAsync(path, args, null); } - + /// - public void ExecuteSystemCommandAsync(string path, string args, object userState) - { - if ((this.ExecuteSystemCommandOperationCompleted == null)) - { + public void ExecuteSystemCommandAsync(string path, string args, object userState) { + if ((this.ExecuteSystemCommandOperationCompleted == null)) { this.ExecuteSystemCommandOperationCompleted = new System.Threading.SendOrPostCallback(this.OnExecuteSystemCommandOperationCompleted); } this.InvokeAsync("ExecuteSystemCommand", new object[] { path, args}, this.ExecuteSystemCommandOperationCompleted, userState); } - - private void OnExecuteSystemCommandOperationCompleted(object arg) - { - if ((this.ExecuteSystemCommandCompleted != null)) - { + + private void OnExecuteSystemCommandOperationCompleted(object arg) { + if ((this.ExecuteSystemCommandCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ExecuteSystemCommandCompleted(this, new ExecuteSystemCommandCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - public new void CancelAsync(object userState) - { + public new void CancelAsync(object userState) { base.CancelAsync(userState); } } - - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetTerminalServicesSessionsCompletedEventHandler(object sender, GetTerminalServicesSessionsCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetTerminalServicesSessionsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetTerminalServicesSessionsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetTerminalServicesSessionsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) - : - base(exception, cancelled, userState) - { + + internal GetTerminalServicesSessionsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public TerminalSession[] Result - { - get - { + public TerminalSession[] Result { + get { this.RaiseExceptionIfNecessary(); return ((TerminalSession[])(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void CloseTerminalServicesSessionCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetWindowsProcessesCompletedEventHandler(object sender, GetWindowsProcessesCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetWindowsProcessesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetWindowsProcessesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetWindowsProcessesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) - : - base(exception, cancelled, userState) - { + + internal GetWindowsProcessesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public WindowsProcess[] Result - { - get - { + public WindowsProcess[] Result { + get { this.RaiseExceptionIfNecessary(); return ((WindowsProcess[])(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void TerminateWindowsProcessCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetWindowsServicesCompletedEventHandler(object sender, GetWindowsServicesCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetWindowsServicesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetWindowsServicesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetWindowsServicesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) - : - base(exception, cancelled, userState) - { + + internal GetWindowsServicesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public WindowsService[] Result - { - get - { + public WindowsService[] Result { + get { this.RaiseExceptionIfNecessary(); return ((WindowsService[])(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void ChangeWindowsServiceStatusCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] - public delegate void GetLogNamesCompletedEventHandler(object sender, GetLogNamesCompletedEventArgs e); - + public delegate void GetWPIProductsCompletedEventHandler(object sender, GetWPIProductsCompletedEventArgs e); + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetLogNamesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetWPIProductsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetLogNamesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) - : - base(exception, cancelled, userState) - { + + internal GetWPIProductsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public string[] Result - { - get - { + public WPIProduct[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPIProduct[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIProductsFilteredCompletedEventHandler(object sender, GetWPIProductsFilteredCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIProductsFilteredCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIProductsFilteredCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPIProduct[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPIProduct[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPITabsCompletedEventHandler(object sender, GetWPITabsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPITabsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPITabsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPITab[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPITab[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void InitWPIFeedsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIKeywordsCompletedEventHandler(object sender, GetWPIKeywordsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIKeywordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIKeywordsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPIKeyword[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPIKeyword[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIProductsWithDependenciesCompletedEventHandler(object sender, GetWPIProductsWithDependenciesCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIProductsWithDependenciesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIProductsWithDependenciesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public WPIProduct[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((WPIProduct[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void InstallWPIProductsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void CancelInstallWPIProductsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetWPIStatusCompletedEventHandler(object sender, GetWPIStatusCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetWPIStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetWPIStatusCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public string Result { + get { + this.RaiseExceptionIfNecessary(); + return ((string)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void WpiGetLogFileDirectoryCompletedEventHandler(object sender, WpiGetLogFileDirectoryCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class WpiGetLogFileDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal WpiGetLogFileDirectoryCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public string Result { + get { + this.RaiseExceptionIfNecessary(); + return ((string)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void WpiGetLogsInDirectoryCompletedEventHandler(object sender, WpiGetLogsInDirectoryCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class WpiGetLogsInDirectoryCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal WpiGetLogsInDirectoryCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public SettingPair[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((SettingPair[])(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetLogNamesCompletedEventHandler(object sender, GetLogNamesCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetLogNamesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetLogNamesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public string[] Result { + get { this.RaiseExceptionIfNecessary(); return ((string[])(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetLogEntriesCompletedEventHandler(object sender, GetLogEntriesCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetLogEntriesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetLogEntriesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetLogEntriesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) - : - base(exception, cancelled, userState) - { + + internal GetLogEntriesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SystemLogEntry[] Result - { - get - { + public SystemLogEntry[] Result { + get { this.RaiseExceptionIfNecessary(); return ((SystemLogEntry[])(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetLogEntriesPagedCompletedEventHandler(object sender, GetLogEntriesPagedCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetLogEntriesPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetLogEntriesPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetLogEntriesPagedCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) - : - base(exception, cancelled, userState) - { + + internal GetLogEntriesPagedCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SystemLogEntriesPaged Result - { - get - { + public SystemLogEntriesPaged Result { + get { this.RaiseExceptionIfNecessary(); return ((SystemLogEntriesPaged)(this.results[0])); } } } - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void ClearLogCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void RebootSystemCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void ExecuteSystemCommandCompletedEventHandler(object sender, ExecuteSystemCommandCompletedEventArgs e); - + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class ExecuteSystemCommandCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class ExecuteSystemCommandCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal ExecuteSystemCommandCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) - : - base(exception, cancelled, userState) - { + + internal ExecuteSystemCommandCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public string Result - { - get - { + public string Result { + get { this.RaiseExceptionIfNecessary(); return ((string)(this.results[0])); } diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Utils/StringUtils.cs b/WebsitePanel/Sources/WebsitePanel.Server.Utils/StringUtils.cs index 436ee19e..ae0ddc6b 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Utils/StringUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Utils/StringUtils.cs @@ -28,6 +28,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; using System.Text.RegularExpressions; @@ -51,5 +52,18 @@ namespace WebsitePanel.Providers.Utils return Regex.Replace(str, "\\W+", "_", RegexOptions.Compiled); } + + public static string CleanupASCIIControlCharacters(string s) + { + byte[] invalidCharacters = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0xB, + 0xC, 0xE, 0xF, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x1A, 0x1B, 0x1E, 0x1F, 0x7F }; + + byte[] sanitizedBytes = (from a in Encoding.UTF8.GetBytes(s) + where !invalidCharacters.Contains(a) + select a).ToArray(); + + return Encoding.UTF8.GetString(sanitizedBytes); + } } } diff --git a/WebsitePanel/Sources/WebsitePanel.Server.WPIService/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Server.WPIService/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..9399f7f3 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Server.WPIService/Properties/AssemblyInfo.cs @@ -0,0 +1,65 @@ +// 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.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.Server.WPIService")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WebsitePanel.Server.WPIService")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[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("aed34aef-8940-48e0-9183-f2522efd7d28")] + +// 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.Server.WPIService/Server.cs b/WebsitePanel/Sources/WebsitePanel.Server.WPIService/Server.cs new file mode 100644 index 00000000..227dc8c1 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Server.WPIService/Server.cs @@ -0,0 +1,68 @@ +// 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.Diagnostics; +using System.Runtime.Remoting; +using System.Runtime.Remoting.Channels; +using System.Runtime.Remoting.Channels.Tcp; +using System.Threading; + +namespace WebsitePanel.Server.WPIService +{ + class Server + { + static Mutex mutex = null; + static void Main(string[] args) + { + bool onlyInstance = false; + mutex = new Mutex(false, "Global\\{5DE133EC-49AE-4AE4-99BE-0F0A0BB5719E}", out onlyInstance); + if (!mutex.WaitOne(0, false)) //if (!onlyInstance) + { + Console.WriteLine("The service is already running."); + return; + } + TcpChannel ch = new TcpChannel(WPIServiceContract.PORT); + ChannelServices.RegisterChannel(ch, true); + + WPIService wpiService = new WPIService(); + RemotingServices.Marshal(wpiService, "WPIServiceContract"); + + + Console.WriteLine("The service is running."); + + while (!wpiService.IsFinished) + { + Thread.Sleep(2000); + } + + Console.WriteLine("The service is finished."); + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Server.WPIService/WPIService.cs b/WebsitePanel/Sources/WebsitePanel.Server.WPIService/WPIService.cs new file mode 100644 index 00000000..22e7ca82 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Server.WPIService/WPIService.cs @@ -0,0 +1,247 @@ +// 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.Generic; +using System.Text; +using System.Threading; +using Microsoft.Web.PlatformInstaller; +using WebsitePanel.Server.Code; + +namespace WebsitePanel.Server.WPIService +{ + // Define a service contract. + //[ServiceContract(Namespace = "http://Helicon.Zoo.WPIService")] + //public interface IWPIService + //{ + // // [OperationContract] + // void Initialize(string[] feeds); + + // //[OperationContract] + // void BeginInstallation(string[] productsToInstall); + + // //[OperationContract] + // string GetStatus(); + + // string GetLogs(); + //} + + enum EWPIServiceStatus + { + Initialised, + Installation, + InstallationComplete, + InstallationError + } + + // Service class which implements the service contract. + //[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] + class WPIService : WPIServiceContract + { + private WpiHelper _wpiHelper; + private string[] _productsToInstall; + + private EWPIServiceStatus _installationStatus; + private string _statusMessage = "preparing..."; + + private Thread _installerThread; + private object _lock = new object(); + + public bool IsFinished { get; private set; } + + #region IWPIService contract + + public override string Ping() + { + return "OK"; + } + + public override void Initialize(string[] feeds) + { + lock (_lock) + { + if (_installationStatus == EWPIServiceStatus.Installation) + { + throw new Exception("Invalid state, already in Installation process"); + } + + _installationStatus = EWPIServiceStatus.Initialised; + + if (_wpiHelper == null) + { + _wpiHelper = new WpiHelper(feeds); + Console.WriteLine("_wpiHelper initialized"); + } + } + } + + public override void BeginInstallation(string[] productsToInstall) + { + lock (_lock) + { + + if (_installationStatus != EWPIServiceStatus.Initialised) + { + throw new Exception("Invalid state, expected EWPIServiceStatus.Initialised. now: " + _installationStatus); + } + + _installationStatus = EWPIServiceStatus.Installation; + _statusMessage = "Preparing for install"; + + _productsToInstall = new string[productsToInstall.Length]; + productsToInstall.CopyTo(_productsToInstall,0); + + _installerThread = new Thread(new ThreadStart(InternalBeginInstallation)); + _installerThread.Start(); + } + } + + + public override string GetStatus() + { + + lock(_lock) + { + + string result = this._statusMessage; + + //Allow exit from app, if finished + IsInstallationProceed(); + + return result; + } + } + + public override string GetLogFileDirectory() + { + + lock (_lock) + { + return null != _wpiHelper ? _wpiHelper.GetLogFileDirectory() : null; + } + } + + #endregion + + #region private implementaion + private bool IsInstallationProceed() + { + if (_installationStatus == EWPIServiceStatus.InstallationComplete) + { + IsFinished = true; + return false; + } + else if (_installationStatus == EWPIServiceStatus.InstallationError) + { + IsFinished = true; + return false; + } + + return true; + } + + + private void InternalBeginInstallation() + { + _wpiHelper.InstallProducts( + _productsToInstall, + WpiHelper.DeafultLanguage, + InstallStatusUpdatedHandler, + InstallCompleteHandler + ); + + lock (_lock) + { + _installationStatus = EWPIServiceStatus.InstallationComplete; + } + } + + private void InstallCompleteHandler(object sender, EventArgs eventArgs) + { + lock(_lock) + { + _installationStatus = EWPIServiceStatus.InstallationComplete; + } + } + + + private void InstallStatusUpdatedHandler(object sender, InstallStatusEventArgs e) + { + StringBuilder sb = new StringBuilder(); + sb.AppendFormat("{0}: ", e.InstallerContext.ProductName); + + switch (e.InstallerContext.InstallationState) + { + case InstallationState.Waiting: + sb.Append("please wait...").AppendLine(); + break; + case InstallationState.Downloading: + sb.Append("downloading").AppendLine(); + if (e.ProgressValue > 0) + { + sb.AppendFormat("{0} of {1} Kb downloaded", e.ProgressValue, + e.InstallerContext.Installer.InstallerFile.FileSize); + sb.AppendLine(); + } + break; + case InstallationState.Downloaded: + sb.Append("downloaded").AppendLine(); + break; + case InstallationState.DownloadFailed: + sb.AppendFormat("download failed").AppendLine(); + sb.AppendLine(e.InstallerContext.InstallStateDetails); + break; + case InstallationState.DependencyFailed: + sb.AppendFormat("dependency failed").AppendLine(); + sb.AppendLine(e.InstallerContext.InstallStateDetails); + sb.AppendFormat("{0}: {1}", e.InstallerContext.ReturnCode.Status, e.InstallerContext.ReturnCode.DetailedInformation).AppendLine(); + break; + case InstallationState.Installing: + sb.Append("installing").AppendLine(); + break; + case InstallationState.InstallCompleted: + sb.Append("install completed").AppendLine(); + break; + case InstallationState.Canceled: + sb.AppendFormat("canceled").AppendLine(); + sb.AppendLine(e.InstallerContext.InstallStateDetails); + sb.AppendFormat("{0}: {1}", e.InstallerContext.ReturnCode.Status, e.InstallerContext.ReturnCode.DetailedInformation).AppendLine(); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + lock (_lock) + { + _statusMessage = sb.ToString(); + } + } + #endregion + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Server.WPIService/WebsitePanel.Server.WPIService.csproj b/WebsitePanel/Sources/WebsitePanel.Server.WPIService/WebsitePanel.Server.WPIService.csproj new file mode 100644 index 00000000..dd23de4b --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Server.WPIService/WebsitePanel.Server.WPIService.csproj @@ -0,0 +1,76 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {DD9E57D5-797F-4420-AF1A-23CEA2F310E0} + Exe + Properties + WebsitePanel.Server.WPIService + WebsitePanel.Server.WPIService + v3.5 + + + 512 + + + true + full + false + ..\WebsitePanel.Server\bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\WebsitePanel.Server\bin\ + TRACE + prompt + 4 + + + + False + ..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll + + + False + ..\..\Lib\Microsoft.Web.PlatformInstaller.dll + + + + + + + + + + WPIHelper.cs + + + + + + + + {736FA0F0-ECA3-416E-B299-85CC425FFF44} + WebsitePanel.Server.WPIServiceContract + + + + + + + + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.Server.WPIServiceContract/Properties/AssemblyInfo.cs b/WebsitePanel/Sources/WebsitePanel.Server.WPIServiceContract/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..61847b8a --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Server.WPIServiceContract/Properties/AssemblyInfo.cs @@ -0,0 +1,65 @@ +// 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.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("WpiServiceContract")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WpiServiceContract")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[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("9af06617-244e-4494-a960-08c2e1654f0b")] + +// 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.Server.WPIServiceContract/WPIServiceContract.cs b/WebsitePanel/Sources/WebsitePanel.Server.WPIServiceContract/WPIServiceContract.cs new file mode 100644 index 00000000..35ec5f7e --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Server.WPIServiceContract/WPIServiceContract.cs @@ -0,0 +1,46 @@ +// 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.Generic; + + +namespace WebsitePanel.Server.WPIService +{ + public class WPIServiceContract : MarshalByRefObject + { + public const int PORT = 7591; //random + + virtual public string Ping() { return "NotImplemented"; } + virtual public void Initialize(string[] feeds){} + virtual public void BeginInstallation(string[] productsToInstall) { } + virtual public string GetStatus() { return "NotImplemented"; } + virtual public string GetLogFileDirectory() { return "NotImplemented"; } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Server.WPIServiceContract/WebsitePanel.Server.WPIServiceContract.csproj b/WebsitePanel/Sources/WebsitePanel.Server.WPIServiceContract/WebsitePanel.Server.WPIServiceContract.csproj new file mode 100644 index 00000000..1bc29ffc --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Server.WPIServiceContract/WebsitePanel.Server.WPIServiceContract.csproj @@ -0,0 +1,54 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {736FA0F0-ECA3-416E-B299-85CC425FFF44} + Library + Properties + WpiServiceContract + WpiServiceContract + v3.5 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.Server.sln b/WebsitePanel/Sources/WebsitePanel.Server.sln index c4b625b2..d6a24e21 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.sln +++ b/WebsitePanel/Sources/WebsitePanel.Server.sln @@ -99,6 +99,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Virt EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Providers.Mail.SmarterMail9", "WebsitePanel.Providers.Mail.SmarterMail9\WebsitePanel.Providers.Mail.SmarterMail9.csproj", "{FB97E984-2463-44EB-B8BE-14AA41D0365E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Server.WPIService", "WebsitePanel.Server.WPIService\WebsitePanel.Server.WPIService.csproj", "{DD9E57D5-797F-4420-AF1A-23CEA2F310E0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebsitePanel.Server.WPIServiceContract", "WebsitePanel.Server.WPIServiceContract\WebsitePanel.Server.WPIServiceContract.csproj", "{736FA0F0-ECA3-416E-B299-85CC425FFF44}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -277,6 +281,14 @@ Global {FB97E984-2463-44EB-B8BE-14AA41D0365E}.Debug|Any CPU.Build.0 = Debug|Any CPU {FB97E984-2463-44EB-B8BE-14AA41D0365E}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB97E984-2463-44EB-B8BE-14AA41D0365E}.Release|Any CPU.Build.0 = Release|Any CPU + {DD9E57D5-797F-4420-AF1A-23CEA2F310E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD9E57D5-797F-4420-AF1A-23CEA2F310E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD9E57D5-797F-4420-AF1A-23CEA2F310E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD9E57D5-797F-4420-AF1A-23CEA2F310E0}.Release|Any CPU.Build.0 = Release|Any CPU + {736FA0F0-ECA3-416E-B299-85CC425FFF44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {736FA0F0-ECA3-416E-B299-85CC425FFF44}.Debug|Any CPU.Build.0 = Debug|Any CPU + {736FA0F0-ECA3-416E-B299-85CC425FFF44}.Release|Any CPU.ActiveCfg = Release|Any CPU + {736FA0F0-ECA3-416E-B299-85CC425FFF44}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Code/UsernameAssertion.cs b/WebsitePanel/Sources/WebsitePanel.Server/Code/UsernameAssertion.cs index 505f79fe..cfd60f5e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Code/UsernameAssertion.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/Code/UsernameAssertion.cs @@ -38,6 +38,7 @@ using Microsoft.Web.Services3; using Microsoft.Web.Services3.Design; using Microsoft.Web.Services3.Security; using Microsoft.Web.Services3.Security.Tokens; +using WebSecurity=Microsoft.Web.Services3.Security.Security; namespace WebsitePanel.Server { @@ -105,7 +106,7 @@ namespace WebsitePanel.Server this.filterContext = filterContext; } - public override void ValidateMessageSecurity(SoapEnvelope envelope, Security security) + public override void ValidateMessageSecurity(SoapEnvelope envelope, WebSecurity security) { if (!ServerConfiguration.Security.SecurityEnabled) return; @@ -145,7 +146,7 @@ namespace WebsitePanel.Server throw new SecurityFault("Message did not meet security requirements."); } - private bool CheckSignature(SoapEnvelope envelope, Security security, MessageSignature signature) + private bool CheckSignature(SoapEnvelope envelope, WebSecurity security, MessageSignature signature) { // // Now verify which parts of the message were actually signed. diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Code/WPIHelper.cs b/WebsitePanel/Sources/WebsitePanel.Server/Code/WPIHelper.cs new file mode 100644 index 00000000..e37445b8 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Server/Code/WPIHelper.cs @@ -0,0 +1,807 @@ +// 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.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using Microsoft.Web.Deployment; +using Microsoft.Web.PlatformInstaller; +using Installer = Microsoft.Web.PlatformInstaller.Installer; + +namespace WebsitePanel.Server.Code +{ + public class WpiUpdatedDeploymentParameter + { + public string Name; + public string Value; + public DeploymentWellKnownTag WellKnownTags; + } + + public class WpiHelper + { + #region public consts + + public const string DeafultLanguage = "en"; + + #endregion + + #region private fields + + private readonly List _feeds; + private string _webPIinstallersFolder; + private const string MainWpiFeed = "https://www.microsoft.com/web/webpi/3.0/webproductlist.xml"; + private const string IisChoiceProduct = "StaticContent"; + private const string WebMatrixChoiceProduct = "WebMatrix"; + private ProductManager _productManager; + private bool _installCompleted; + private InstallManager _installManager; + private string _LogFileDirectory = string.Empty; + string _resourceLanguage = DeafultLanguage; + private const DeploymentWellKnownTag databaseEngineTags = + DeploymentWellKnownTag.Sql | + DeploymentWellKnownTag.MySql | + DeploymentWellKnownTag.SqLite | + DeploymentWellKnownTag.VistaDB | + DeploymentWellKnownTag.FlatFile; + + #endregion private fields + + public WpiHelper(IEnumerable feeds) + { + _feeds = new List(); + _feeds.AddRange(feeds); + + Initialize(); + } + + private void Initialize() + { + // insert Main WebPI xml file + if (!_feeds.Contains(MainWpiFeed, StringComparer.OrdinalIgnoreCase)) + { + _feeds.Insert(0, MainWpiFeed); + } + + // create cache folder if not exists + //_webPIinstallersFolder = Environment.ExpandEnvironmentVariables(@"%LocalAppData%\Microsoft\Web Platform Installer\installers"); + _webPIinstallersFolder = Path.Combine( + Environment.ExpandEnvironmentVariables("%SystemRoot%"), + "Temp\\zoo.wpi\\AppData\\Local\\Microsoft\\Web Platform Installer\\installers" ); + + if (!Directory.Exists(_webPIinstallersFolder)) + { + Directory.CreateDirectory(_webPIinstallersFolder); + } + + // load feeds + _productManager = new ProductManager(); + + + foreach (string feed in _feeds) + { + Log(string.Format("Loading {0}", feed)); + if (feed.StartsWith("https://www.microsoft.com", StringComparison.OrdinalIgnoreCase)) + { + _productManager.Load(new Uri(feed), true, true, true, _webPIinstallersFolder); + } + else + { + _productManager.LoadExternalFile(new Uri(feed)); + } + } + + Log(string.Format("{0} products loaded", _productManager.Products.Count)); + + LogDebugInfo(); + } + + public void SetResourceLanguage(string resourceLanguage) + { + _resourceLanguage = resourceLanguage; + _productManager.SetResourceLanguage(resourceLanguage); + } + + #region Public interface + + public List GetProducts() + { + return GetProducts(null,null); + } + + public List GetLanguages() + { + List languages = new List(); + + foreach (Product product in GetProducts()) + { + if (null!=product.Installers) + { + foreach (Installer installer in product.Installers) + { + Language lang = installer.Language; + if (null!=lang && !languages.Contains(lang)) + { + languages.Add(lang); + } + } + } + } + + return languages; + } + + public void CancelInstallProducts() + { + if (_installManager!= null) + { + _installManager.Cancel(); + } + } + + private List GetInstallers(List productsToInstall, Language lang) + { + List installersToUse = new List(); + foreach (Product product in productsToInstall) + { + Installer installer = product.GetInstaller(lang); + if (null != installer) + { + installersToUse.Add(installer); + } + } + + return installersToUse; + } + + + public List GetProductsWithDependencies(IEnumerable productIdsToInstall ) + { + List updatedProductIdsToInstall = new List(); + // add iis chioce product to force iis (not-iisexpress/webmatrix) branch + updatedProductIdsToInstall.Add(IisChoiceProduct); + updatedProductIdsToInstall.AddRange(productIdsToInstall); + + List productsToInstall = new List(); + + foreach (string productId in updatedProductIdsToInstall) + { + Log(string.Format("Product {0} to be installed", productId)); + + Product product = _productManager.GetProduct(productId); + if (null == product) + { + Log(string.Format("Product {0} not found", productId)); + continue; + } + if (product.IsInstalled(true)) + { + Log(string.Format("Product {0} is installed", product.Title)); + } + else + { + Log(string.Format("Adding product {0} with dependencies", product.Title)); + // search and add dependencies but skip webmatrix/iisexpress branches + AddProductWithDependencies(product, productsToInstall, WebMatrixChoiceProduct); + } + } + + return productsToInstall; + } + + public string GetLogFileDirectory() + { + return _LogFileDirectory; + } + + + private Language GetLanguage(string languageId) + { + if (!string.IsNullOrEmpty(languageId)) + { + return _productManager.GetLanguage(languageId); + } + + return _productManager.GetLanguage(DeafultLanguage); + } + + + // GetTabs + public ReadOnlyCollection GetTabs() + { + return _productManager.Tabs; + } + + public Tab GetTab(string tabId) + { + return _productManager.GetTab(tabId); + } + + // GetKeywords + public ReadOnlyCollection GetKeywords() + { + return _productManager.Keywords; + } + + public List GetApplications(string keywordId) + { + + Keyword keyword = null; + if (!string.IsNullOrEmpty(keywordId)) + { + keyword = _productManager.GetKeyword(keywordId); + } + + + + List products = new List(); + + Language lang = GetLanguage(_resourceLanguage); + Language langDefault = GetLanguage(DeafultLanguage); + + foreach (Product product in _productManager.Products) + { + if (!product.IsApplication) + { + // skip + continue; + } + + //Check language + if ( + lang.AvailableProducts.Contains(product) || + langDefault.AvailableProducts.Contains(product) + ) + { + if (null == keyword) + { + products.Add(product); + } + else if (product.Keywords.Contains(keyword)) + { + products.Add(product); + } + + } + + } + + //Sort by Title + products.Sort(delegate(Product a, Product b) + { + return a.Title.CompareTo(b.Title); + }); + + + return products; + } + + public Product GetProduct(string productId) + { + return _productManager.GetProduct(productId); + } + + public IList GetAppDecalredParameters(string productId) + { + Product app = _productManager.GetProduct(productId); + Installer appInstaller = app.GetInstaller(GetLanguage(null)); + return appInstaller.MSDeployPackage.DeclaredParameters; + } + + public void InstallProducts( + IEnumerable productIdsToInstall, + string languageId, + EventHandler installStatusUpdatedHandler, + EventHandler installCompleteHandler) + { + + // Get products & dependencies list to install + List productsToInstall = GetProductsWithDependencies(productIdsToInstall); + + // Get installers + Language lang = GetLanguage(languageId); + List installersToUse = GetInstallers(productsToInstall, lang ); + + + // Prepare install manager & set event handlers + _installManager = new InstallManager(); + _installManager.Load(installersToUse); + + + if (null != installStatusUpdatedHandler) + { + _installManager.InstallerStatusUpdated += installStatusUpdatedHandler; + } + _installManager.InstallerStatusUpdated += InstallManager_InstallerStatusUpdated; + + if (null != installCompleteHandler) + { + _installManager.InstallCompleted += installCompleteHandler; + } + _installManager.InstallCompleted += InstallManager_InstallCompleted; + + // Download installer files + foreach (InstallerContext installerContext in _installManager.InstallerContexts) + { + if (null != installerContext.Installer.InstallerFile) + { + string failureReason; + if (!_installManager.DownloadInstallerFile(installerContext, out failureReason)) + { + Log(string.Format("DownloadInstallerFile '{0}' failed: {1}", + installerContext.Installer.InstallerFile.InstallerUrl, failureReason)); + } + } + } + + if (installersToUse.Count > 0) + { + // Start installation + _installCompleted = false; + Log("_installManager.StartInstallation()"); + _installManager.StartInstallation(); + + Log("_installManager.StartInstallation() done"); + while (!_installCompleted) + { + Thread.Sleep(100); + } + + //save logs + SaveLogDirectory(); + + + _installCompleted = false; + } + else + { + Log("Nothing to install"); + } + + } + + public bool InstallApplication( + string appId, + List updatedValues, + string languageId, + EventHandler installStatusUpdatedHandler, + EventHandler installCompleteHandler, + out string log, + out string failedMessage + ) + { + + Product app = GetProduct(appId); + Installer appInstaller = app.GetInstaller(GetLanguage(languageId)); + WpiAppInstallLogger logger = new WpiAppInstallLogger(); + + if (null != installStatusUpdatedHandler) + { + _installManager.InstallerStatusUpdated += installStatusUpdatedHandler; + } + _installManager.InstallerStatusUpdated += logger.HanlderInstallerStatusUpdated; + + if (null != installCompleteHandler) + { + _installManager.InstallCompleted += installCompleteHandler; + } + _installManager.InstallCompleted += logger.HandlerInstallCompleted; + + // set updated parameters + foreach (WpiUpdatedDeploymentParameter parameter in updatedValues) + { + if (!string.IsNullOrEmpty(parameter.Value)) + { + appInstaller.MSDeployPackage.SetParameters[parameter.Name] = parameter.Value; + } + } + + DeploymentWellKnownTag dbTag = (DeploymentWellKnownTag)GetDbTag(updatedValues); + + // remove parameters with alien db tags + foreach (DeclaredParameter parameter in appInstaller.MSDeployPackage.DeclaredParameters) + { + if (IsAlienDbTaggedParameter(dbTag, parameter)) + { + appInstaller.MSDeployPackage.RemoveParameters.Add(parameter.Name); + } + } + + // skip alien directives + RemoveUnusedProviders(appInstaller.MSDeployPackage, dbTag); + + _installCompleted = false; + Log("_installManager.StartApplicationInstallation()"); + _installManager.StartApplicationInstallation(); + while (!_installCompleted) + { + Thread.Sleep(1000); + } + Log("_installManager.StartApplicationInstallation() _installCompleted"); + + //save logs + SaveLogDirectory(); + + _installCompleted = false; + + log = logger.GetLog(); + failedMessage = logger.FailedMessage; + + return !logger.IsFailed; + } + + public bool IsKeywordApplication(Keyword keyword) + { + //if all products are Application + foreach (Product product in keyword.Products) + { + if (!product.IsApplication) + { + return false; + } + } + + return true; + + } + + #endregion Public interface + + + #region private members + + private void LogDebugInfo() + { + StringBuilder sb = new StringBuilder(); + + sb.Append("Products: "); + + sb.Append("Tabs: ").AppendLine(); + foreach (Tab tab in _productManager.Tabs) + { + sb.AppendFormat("\t{0}, FromCustomFeed = {1}", tab.Name, tab.FromCustomFeed).AppendLine(); + foreach (string f in tab.FeedList) + { + sb.AppendFormat("\t\t{0}", f).AppendLine(); + } + sb.AppendLine(); + } + sb.AppendLine(); + + sb.Append("Keywords: ").AppendLine().Append("\t"); + foreach (Keyword keyword in _productManager.Keywords) + { + sb.Append(keyword.Id).Append(","); + } + sb.AppendLine(); + + sb.Append("Languages: ").AppendLine().Append("\t"); + foreach (Language language in _productManager.Languages) + { + sb.Append(language.Name).Append(","); + } + sb.AppendLine(); + + Log(sb.ToString()); + } + + private static void Log(string message) + { +//#if DEBUG + Debug.WriteLine(string.Format("[{0}] WpiHelper: {1}", Process.GetCurrentProcess().Id, message)); + Console.WriteLine(message); +//#endif + } + + public List GetProducts(string FeedLocation, string keywordId) + { + Keyword keyword = null; + if (!string.IsNullOrEmpty(keywordId)) + { + keyword = _productManager.GetKeyword(keywordId); + } + + List products = new List(); + + foreach (Product product in _productManager.Products) + { + if (!string.IsNullOrEmpty(FeedLocation) && string.Compare(product.FeedLocation, FeedLocation, StringComparison.OrdinalIgnoreCase) != 0) + { + // if FeedLocation defined, then select products only from this feed location + continue; + } + + if (null == product.Installers || product.Installers.Count == 0) + { + // skip this product + // usually product without intsallers user as product detection + continue; + } + + if (null == keyword) + { + products.Add(product); + } + else if (product.Keywords.Contains(keyword)) + { + products.Add(product); + } + } + + //Sort by Title + products.Sort(delegate(Product a, Product b) + { + return a.Title.CompareTo(b.Title); + }); + + return products; + } + + public List GetProductsFiltered(string filter) + { + + List products = new List(); + + foreach (Product product in _productManager.Products) + { + if (null == product.Installers || product.Installers.Count == 0) + { + // skip this product + // usually product without intsallers user as product detection + continue; + } + + if (string.IsNullOrEmpty(filter)) + { + products.Add(product); + } + else if (product.Title.ToLower().Contains(filter.ToLower())) + { + products.Add(product); + } + } + + //Sort by Title + products.Sort(delegate(Product a, Product b) + { + return a.Title.CompareTo(b.Title); + }); + + + return products; + } + + + private void InstallManager_InstallCompleted(object sender, EventArgs e) + { + Log("Installation completed"); + if (null != _installManager) + { + /* + try + { + _installManager.Dispose(); + } catch(Exception ex) + { + Log("InstallManager_InstallCompleted Exception: "+ex.ToString()); + } + _installManager = null; + */ + } + _installCompleted = true; + } + + private void InstallManager_InstallerStatusUpdated(object sender, InstallStatusEventArgs e) + { + Log(string.Format("{0}: {1}. {2} Progress: {3}", + e.InstallerContext.ProductName, + e.InstallerContext.InstallationState, + e.InstallerContext.ReturnCode.DetailedInformation, + e.ProgressValue)); + } + + private static void AddProductWithDependencies(Product product, List productsToInstall, string skipProduct) + { + if (!productsToInstall.Contains(product)) + { + productsToInstall.Add(product); + } + + ICollection missingDependencies = product.GetMissingDependencies(productsToInstall); + if (missingDependencies != null) + { + foreach (Product dependency in missingDependencies) + { + if (string.Equals(dependency.ProductId, skipProduct, StringComparison.OrdinalIgnoreCase)) + { + Log(string.Format("Product {0} is iis express dependency, skip it", dependency.Title)); + continue; + } + + AddProductWithDependencies(dependency, productsToInstall, skipProduct); + } + } + } + + private void SaveLogDirectory() + { + Log("SaveLogDirectory"); + foreach (InstallerContext ctx in _installManager.InstallerContexts) + { + Log(ctx.LogFileDirectory); + _LogFileDirectory = ctx.LogFileDirectory; + break; + + } + } + + private DeploymentWellKnownTag GetDbTag(List parameters) + { + foreach (WpiUpdatedDeploymentParameter parameter in parameters) + { + if ((parameter.WellKnownTags & databaseEngineTags) != 0) + { + return (DeploymentWellKnownTag)Enum.Parse( + typeof(DeploymentWellKnownTag), + (parameter.WellKnownTags & databaseEngineTags).ToString().Split(',')[0]); + } + } + + return DeploymentWellKnownTag.None; + } + + private static bool IsAlienDbTaggedParameter(DeploymentWellKnownTag dbTag, DeclaredParameter parameter) + { + return (parameter.Tags & databaseEngineTags) != DeploymentWellKnownTag.None + && + (parameter.Tags & dbTag) == DeploymentWellKnownTag.None; + } + + private static void RemoveUnusedProviders(MSDeployPackage msDeployPackage, DeploymentWellKnownTag dbTag) + { + List providersToRemove = new List(); + + switch (dbTag) + { + case DeploymentWellKnownTag.MySql: + providersToRemove.Add("dbFullSql"); + providersToRemove.Add("DBSqlite"); + break; + case DeploymentWellKnownTag.Sql: + providersToRemove.Add("dbMySql"); + providersToRemove.Add("DBSqlite"); + break; + case DeploymentWellKnownTag.FlatFile: + providersToRemove.Add("dbFullSql"); + providersToRemove.Add("DBSqlite"); + providersToRemove.Add("dbMySql"); + break; + case DeploymentWellKnownTag.SqLite: + providersToRemove.Add("dbFullSql"); + providersToRemove.Add("dbMySql"); + break; + case DeploymentWellKnownTag.VistaDB: + providersToRemove.Add("dbFullSql"); + providersToRemove.Add("DBSqlite"); + providersToRemove.Add("dbMySql"); + break; + case DeploymentWellKnownTag.SqlCE: + providersToRemove.Add("dbFullSql"); + providersToRemove.Add("DBSqlite"); + providersToRemove.Add("dbMySql"); + break; + default: + break; + } + + foreach (string provider in providersToRemove) + { + msDeployPackage.SkipDirectives.Add(string.Format("objectName={0}", provider)); + } + } + + #endregion private members + } + + class WpiAppInstallLogger + { + private StringBuilder sb; + private InstallReturnCode _installReturnCode; + private string _failedMessage = string.Empty; + + public WpiAppInstallLogger() + { + sb = new StringBuilder(); + } + + public InstallReturnCode ReturnCode + { + get { return _installReturnCode; } + } + + public string FailedMessage + { + get { return _failedMessage; } + } + + public bool IsFailed + { + get + { + if (null != _installReturnCode) + { + return _installReturnCode.Status == InstallReturnCodeStatus.Failure || + _installReturnCode.Status == InstallReturnCodeStatus.FailureRebootRequired; + } + return false; + } + } + + public void HanlderInstallerStatusUpdated(object sender, InstallStatusEventArgs e) + { + sb.AppendFormat("{0}: {1}. {2} Progress: {3}", + e.InstallerContext.ProductName, + e.InstallerContext.InstallationState, + e.InstallerContext.ReturnCode.DetailedInformation, + e.ProgressValue).AppendLine(); + } + + public void HandlerInstallCompleted(object sender, EventArgs e) + { + InstallManager installManager = sender as InstallManager; + if (null != installManager) + { + InstallerContext installerContext; + if (null != installManager.InstallerContexts && installManager.InstallerContexts.Count>0) + { + installerContext = installManager.InstallerContexts[0]; + _installReturnCode = installerContext.ReturnCode; + } + } + + if (null != _installReturnCode) + { + _failedMessage = string.Format("{0}: {1}", + _installReturnCode.Status, + _installReturnCode.DetailedInformation); + sb.AppendFormat("Return Code: {0}", _failedMessage).AppendLine(); + } + sb.AppendLine("Installation completed"); + } + + public string GetLog() + { + return sb.ToString(); + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Web.config b/WebsitePanel/Sources/WebsitePanel.Server/Web.config index 61882914..dafa8009 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.Server/Web.config @@ -119,7 +119,7 @@ algorithmSuite="Default" /> - - + + diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs index 0db78da3..16706c94 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/WebServer.asmx.cs @@ -1062,12 +1062,62 @@ namespace WebsitePanel.Server #region Web Application Gallery [WebMethod, SoapHeader("settings")] - public GalleryCategoriesResult GetGalleryCategories() + public void InitFeeds(int UserId, string[] feeds) + { + try + { + Log.WriteStart("'{0}' InitFeeds", ProviderSettings.ProviderName); + WebProvider.InitFeeds(UserId, feeds); + Log.WriteEnd("'{0}' InitFeeds", ProviderSettings.ProviderName); + } + catch (Exception ex) + { + Log.WriteError(String.Format("'{0}' InitFeeds", ProviderSettings.ProviderName), ex); + throw; + } + } + + [WebMethod, SoapHeader("settings")] + public void SetResourceLanguage(int UserId, string resourceLanguage) + { + try + { + Log.WriteStart("'{0}' SetResourceLanguage", ProviderSettings.ProviderName); + WebProvider.SetResourceLanguage(UserId,resourceLanguage); + Log.WriteEnd("'{0}' SetResourceLanguage", ProviderSettings.ProviderName); + } + catch (Exception ex) + { + Log.WriteError(String.Format("'{0}' SetResourceLanguage", ProviderSettings.ProviderName), ex); + throw; + } + } + + + [WebMethod, SoapHeader("settings")] + public GalleryLanguagesResult GetGalleryLanguages(int UserId) + { + try + { + Log.WriteStart("'{0}' GalleryLanguagesResult", ProviderSettings.ProviderName); + GalleryLanguagesResult result = WebProvider.GetGalleryLanguages(UserId); + Log.WriteEnd("'{0}' GalleryLanguagesResult", ProviderSettings.ProviderName); + return result; + } + catch (Exception ex) + { + Log.WriteError(String.Format("'{0}' GalleryLanguagesResult", ProviderSettings.ProviderName), ex); + throw; + } + } + + [WebMethod, SoapHeader("settings")] + public GalleryCategoriesResult GetGalleryCategories(int UserId) { try { Log.WriteStart("'{0}' GalleryCategoriesResult", ProviderSettings.ProviderName); - GalleryCategoriesResult result = WebProvider.GetGalleryCategories(); + GalleryCategoriesResult result = WebProvider.GetGalleryCategories(UserId); Log.WriteEnd("'{0}' GalleryCategoriesResult", ProviderSettings.ProviderName); return result; } @@ -1079,12 +1129,12 @@ namespace WebsitePanel.Server } [WebMethod, SoapHeader("settings")] - public GalleryApplicationsResult GetGalleryApplications(string categoryId) + public GalleryApplicationsResult GetGalleryApplications(int UserId, string categoryId) { try { Log.WriteStart("'{0}' GetGalleryApplications", ProviderSettings.ProviderName); - GalleryApplicationsResult result = WebProvider.GetGalleryApplications(categoryId); + GalleryApplicationsResult result = WebProvider.GetGalleryApplications(UserId,categoryId); Log.WriteEnd("'{0}' GetGalleryApplications", ProviderSettings.ProviderName); return result; } @@ -1094,7 +1144,26 @@ namespace WebsitePanel.Server throw; } } - [WebMethod, SoapHeader("settings")] + + [WebMethod, SoapHeader("settings")] + public GalleryApplicationsResult GetGalleryApplicationsFiltered(int UserId, string pattern) + { + try + { + Log.WriteStart("'{0}' GetGalleryApplicationsFiltered", ProviderSettings.ProviderName); + GalleryApplicationsResult result = WebProvider.GetGalleryApplicationsFiltered(UserId,pattern); + Log.WriteEnd("'{0}' GetGalleryApplicationsFiltered", ProviderSettings.ProviderName); + return result; + } + catch (Exception ex) + { + Log.WriteError(String.Format("'{0}' GetGalleryApplicationsFiltered", ProviderSettings.ProviderName), ex); + throw; + } + } + + + [WebMethod, SoapHeader("settings")] public bool IsMsDeployInstalled() { try @@ -1111,13 +1180,13 @@ namespace WebsitePanel.Server } } - [WebMethod, SoapHeader("settings")] - public GalleryApplicationResult GetGalleryApplication(string id) + [WebMethod, SoapHeader("settings")] + public GalleryApplicationResult GetGalleryApplication(int UserId, string id) { try { Log.WriteStart("'{0}' GetGalleryApplication", ProviderSettings.ProviderName); - GalleryApplicationResult result = WebProvider.GetGalleryApplication(id); + GalleryApplicationResult result = WebProvider.GetGalleryApplication(UserId,id); Log.WriteEnd("'{0}' GetGalleryApplication", ProviderSettings.ProviderName); return result; } @@ -1128,13 +1197,13 @@ namespace WebsitePanel.Server } } - [WebMethod, SoapHeader("settings")] - public GalleryWebAppStatus GetGalleryApplicationStatus(string id) + [WebMethod, SoapHeader("settings")] + public GalleryWebAppStatus GetGalleryApplicationStatus(int UserId, string id) { try { Log.WriteStart("'{0}' GetGalleryApplicationStatus", ProviderSettings.ProviderName); - GalleryWebAppStatus result = WebProvider.GetGalleryApplicationStatus(id); + GalleryWebAppStatus result = WebProvider.GetGalleryApplicationStatus(UserId,id); Log.WriteEnd("'{0}' GetGalleryApplicationStatus", ProviderSettings.ProviderName); return result; } @@ -1144,14 +1213,14 @@ namespace WebsitePanel.Server throw; } } - - [WebMethod, SoapHeader("settings")] - public GalleryWebAppStatus DownloadGalleryApplication(string id) + + [WebMethod, SoapHeader("settings")] + public GalleryWebAppStatus DownloadGalleryApplication(int UserId, string id) { try { Log.WriteStart("'{0}' DownloadGalleryApplication", ProviderSettings.ProviderName); - GalleryWebAppStatus result = WebProvider.DownloadGalleryApplication(id); + GalleryWebAppStatus result = WebProvider.DownloadGalleryApplication(UserId,id); Log.WriteEnd("'{0}' DownloadGalleryApplication", ProviderSettings.ProviderName); return result; } @@ -1162,13 +1231,13 @@ namespace WebsitePanel.Server } } - [WebMethod, SoapHeader("settings")] - public DeploymentParametersResult GetGalleryApplicationParameters(string id) + [WebMethod, SoapHeader("settings")] + public DeploymentParametersResult GetGalleryApplicationParameters(int UserId, string id) { try { Log.WriteStart("'{0}' GetGalleryApplicationParameters", ProviderSettings.ProviderName); - DeploymentParametersResult result = WebProvider.GetGalleryApplicationParameters(id); + DeploymentParametersResult result = WebProvider.GetGalleryApplicationParameters(UserId,id); Log.WriteEnd("'{0}' GetGalleryApplicationParameters", ProviderSettings.ProviderName); return result; } @@ -1179,13 +1248,13 @@ namespace WebsitePanel.Server } } - [WebMethod, SoapHeader("settings")] - public StringResultObject InstallGalleryApplication(string id, List updatedValues) + [WebMethod, SoapHeader("settings")] + public StringResultObject InstallGalleryApplication(int UserId, string id, List updatedValues, string languageId) { try { Log.WriteStart("'{0}' InstallGalleryApplication", ProviderSettings.ProviderName); - StringResultObject result = WebProvider.InstallGalleryApplication(id, updatedValues); + StringResultObject result = WebProvider.InstallGalleryApplication(UserId,id, updatedValues, languageId); Log.WriteEnd("'{0}' InstallGalleryApplication", ProviderSettings.ProviderName); return result; } diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj index 4ae2bf2d..0953eeaa 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Server/WebsitePanel.Server.csproj @@ -42,6 +42,14 @@ 618 + + False + ..\..\Lib\References\Microsoft\Microsoft.Web.Deployment.dll + + + False + ..\..\Lib\Microsoft.Web.PlatformInstaller.dll + False ..\..\Lib\Microsoft.Web.Services3.dll @@ -52,6 +60,8 @@ + + @@ -113,6 +123,7 @@ LyncServer.asmx Component + OCSEdgeServer.asmx Component @@ -206,6 +217,10 @@ {E91E52F3-9555-4D00-B577-2B1DBDD87CA7} WebsitePanel.Server.Utils + + {736FA0F0-ECA3-416E-B299-85CC425FFF44} + WebsitePanel.Server.WPIServiceContract + diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WindowsServer.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/WindowsServer.asmx.cs index e6769ca1..7c990684 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/WindowsServer.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/WindowsServer.asmx.cs @@ -29,6 +29,9 @@ using System; using System.IO; using System.Data; +using System.Security; +using System.Text; +using System.Threading; using System.Web; using System.Diagnostics; using System.Collections; @@ -38,11 +41,20 @@ using System.Web.Services.Protocols; using System.ComponentModel; using System.Text.RegularExpressions; using System.ServiceProcess; +using System.ServiceModel; +using System.Runtime.Remoting; +using System.Runtime.Remoting.Channels; +using System.Runtime.Remoting.Channels.Tcp; using System.Management; +using System.Collections.Specialized; +using Microsoft.Web.PlatformInstaller; using Microsoft.Web.Services3; - using WebsitePanel.Providers.Utils; +using WebsitePanel.Server.Code; using WebsitePanel.Server.Utils; +using WebsitePanel.Providers; +using WebsitePanel.Server.WPIService; + namespace WebsitePanel.Server { @@ -280,6 +292,554 @@ namespace WebsitePanel.Server } #endregion + #region Web Platform Installer + + + + private string makeHref(string value) + { + if (string.IsNullOrEmpty(value)) + return value; + + //" qweqwe http://www.helicontech.com/zoo/feed/ asdasdasd" + Regex link =new Regex("(http[^\\s,]+)(?$1"); + } + + + private WPIProduct ProductToWPIProduct(Product product) + { + WPIProduct p = new WPIProduct(); + p.ProductId = product.ProductId; + p.Summary = product.Summary; + p.LongDescription = makeHref(product.LongDescription); + p.Published = product.Published; + p.Author = product.Author; + p.AuthorUri = (product.AuthorUri != null) ? product.AuthorUri.ToString() : ""; + p.Title = product.Title; + p.Link = (product.Link != null) ? product.Link.ToString() : ""; + p.Version = product.Version; + + if (product.Installers.Count > 0) + { + if (product.Installers[0].EulaUrl != null) + { + p.EulaUrl = product.Installers[0].EulaUrl.ToString(); + + } + + if (product.Installers[0].InstallerFile != null) + { + if (product.Installers[0].InstallerFile.InstallerUrl != null) + { + p.DownloadedLocation = product.Installers[0].InstallerFile.InstallerUrl.ToString(); + } + p.FileSize = product.Installers[0].InstallerFile.FileSize; + } + + } + + if (product.IconUrl != null) + { + p.Logo = product.IconUrl.ToString(); + } + + p.IsInstalled = product.IsInstalled(true); + + return p; + } + + [WebMethod] + public WPIProduct[] GetWPIProducts(string tabId, string keywordId) + { + + + try + { + Log.WriteStart("GetWPIProducts"); + List wpiProducts = new List(); + + + WpiHelper wpi = GetWpiFeed(); + + string feedLocation = null; + if (tabId != null) + { + Tab tab = wpi.GetTab(tabId); + ICollection feeds = tab.FeedList; + feedLocation = feeds.GetEnumerator().Current; + } + + List products = wpi.GetProducts(feedLocation, keywordId); + + if (products != null) + { + + + foreach (Product product in products) + { + if (null != product && !product.IsApplication) + { + wpiProducts.Add(ProductToWPIProduct(product)); + + } + } + + } + + + + Log.WriteEnd("GetWPIProducts"); + return wpiProducts.ToArray(); + } + catch (Exception ex) + { + Log.WriteError("GetWPIProducts", ex); + throw; + } + } + + + [WebMethod] + public WPIProduct[] GetWPIProductsFiltered(string filter) + { + + + try + { + Log.WriteStart("GetWPIProductsFiltered"); + List wpiProducts = new List(); + + + WpiHelper wpi = GetWpiFeed(); + + List products = wpi.GetProductsFiltered( filter); + + if (products != null) + { + + + foreach (Product product in products) + { + if (null != product && !product.IsApplication) + { + wpiProducts.Add(ProductToWPIProduct(product)); + + } + } + + } + + + + Log.WriteEnd("GetWPIProductsFiltered"); + return wpiProducts.ToArray(); + } + catch (Exception ex) + { + Log.WriteError("GetWPIProductsFiltered", ex); + throw; + } + } + + [WebMethod] + public WPITab[] GetWPITabs() + { + try + { + Log.WriteStart("GetWPITabs"); + + WpiHelper wpi = GetWpiFeed(); + + List result = new List(); + + foreach (Tab tab in wpi.GetTabs()) + { + result.Add(new WPITab(tab.Id, tab.Name)); + } + + + Log.WriteEnd("GetWPITabs"); + + return result.ToArray(); + } + catch (Exception ex) + { + Log.WriteError("GetWPITabs", ex); + throw; + } + } + + + static string[] FEEDS = new string[] + { + // "https://www.microsoft.com/web/webpi/3.0/WebProductList.xml", + // "http://www.helicontech.com/zoo/feed/" + }; + + [WebMethod] + public void InitWPIFeeds(string feedUrls) + { + if (string.IsNullOrEmpty(feedUrls)) + { + throw new Exception("Empty feed list"); + } + + string[] newFEEDS = feedUrls.Split(';'); + + if (newFEEDS.Length == 0) + { + throw new Exception("Empty feed list"); + } + if (!ArraysEqual(newFEEDS, FEEDS)) + { + Log.WriteInfo("InitWPIFeeds - new value: " + feedUrls); + + //Feeds settings have been channged + FEEDS = newFEEDS; + wpi = null; + + } + } + + + public static bool ArraysEqual(T[] a1, T[] a2) + { + if (ReferenceEquals(a1, a2)) + return true; + + if (a1 == null || a2 == null) + return false; + + if (a1.Length != a2.Length) + return false; + + EqualityComparer comparer = EqualityComparer.Default; + for (int i = 0; i < a1.Length; i++) + { + if (!comparer.Equals(a1[i], a2[i])) return false; + } + return true; + } + + [WebMethod] + public WPIKeyword[] GetWPIKeywords() + { + try + { + Log.WriteStart("GetWPIKeywords"); + + WpiHelper wpi = GetWpiFeed(); + + List result = new List(); + + result.Add(new WPIKeyword("", "All")); + + foreach (Keyword keyword in wpi.GetKeywords()) + { + if (!wpi.IsKeywordApplication(keyword)) + { + result.Add(new WPIKeyword(keyword.Id, keyword.Text)); + } + + } + + + Log.WriteEnd("GetWPIKeywords"); + + return result.ToArray(); + } + catch (Exception ex) + { + Log.WriteError("GetWPIKeywords", ex); + throw; + } + } + + + [WebMethod] + public WPIProduct[] GetWPIProductsWithDependencies(string[] products) + { + try + { + Log.WriteStart("GetWPIProductsWithDependencies"); + + WpiHelper wpi = GetWpiFeed(); + + List result = new List(); + foreach (Product product in wpi.GetProductsWithDependencies(products)) + { + result.Add(ProductToWPIProduct(product)); + } + + Log.WriteEnd("GetWPIProductsWithDependencies"); + + return result.ToArray(); + } + catch (Exception ex) + { + Log.WriteError("GetWPIProductsWithDependencies", ex); + throw; + } + } + + static Process _WpiServiceExe = null; + + [WebMethod] + public void InstallWPIProducts(string[] products) + { + try + { + Log.WriteStart("InstallWPIProducts"); + + StartWpiService(); + + RegisterWpiService(); + + WPIServiceContract client = new WPIServiceContract(); + + client.Initialize(FEEDS); + client.BeginInstallation(products); + + + + + + Log.WriteEnd("InstallWPIProducts"); + } + catch (Exception ex) + { + Log.WriteError("InstallWPIProducts", ex); + throw; + } + } + + private void StartWpiService() + { + string binFolder = HttpContext.Current.Server.MapPath("/bin/"); + + string newUserProfile = Path.Combine(Environment.ExpandEnvironmentVariables("%SystemRoot%"), "Temp\\zoo.wpi"); + string newAppData = Path.Combine(newUserProfile, "Roaming"); + string newLocalAppData = Path.Combine(newUserProfile, "Local"); + try + { + Directory.CreateDirectory(newUserProfile); + Directory.CreateDirectory(newAppData); + Directory.CreateDirectory(newLocalAppData); + } + catch (Exception) + { + //throw; + } + + + Process wpiServiceExe = new Process(); + wpiServiceExe.StartInfo = new ProcessStartInfo(Path.Combine(binFolder, "WebsitePanel.Server.WPIService.exe")); + wpiServiceExe.StartInfo.UseShellExecute = false; + wpiServiceExe.StartInfo.EnvironmentVariables["UserProfile"] = newUserProfile; + wpiServiceExe.StartInfo.EnvironmentVariables["LocalAppData"] = newLocalAppData; + wpiServiceExe.StartInfo.EnvironmentVariables["AppData"] = newAppData; + if (wpiServiceExe.Start()) + { + _WpiServiceExe = wpiServiceExe; + } + } + + [WebMethod] + public void CancelInstallWPIProducts() + { + try + { + Log.WriteStart("CancelInstallWPIProducts"); + + KillWpiService(); + + + Log.WriteEnd("CancelInstallWPIProducts"); + } + catch (Exception ex) + { + Log.WriteError("CancelInstallWPIProducts", ex); + throw; + } + } + + private void KillWpiService() + { + //kill own service + if (_WpiServiceExe != null && !_WpiServiceExe.HasExited) + { + _WpiServiceExe.Kill(); + _WpiServiceExe = null; + } + else + { + //find WebsitePanel.Server.WPIService.exe + Process[] wpiservices = Process.GetProcessesByName("WebsitePanel.Server.WPIService"); + foreach (Process p in wpiservices) + { + p.Kill(); + } + } + } + + [WebMethod] + public string GetWPIStatus() + { + try + { + Log.WriteStart("GetWPIStatus"); + + RegisterWpiService(); + + WPIServiceContract client = new WPIServiceContract(); + + string status = client.GetStatus(); + + Log.WriteEnd("GetWPIStatus"); + + return status; //OK + } + catch (Exception ex) + { + // done or error + + if (_WpiServiceExe == null || _WpiServiceExe.HasExited) + { + // reset WpiHelper for refresh status + wpi = null; + return ""; //OK + } + + Log.WriteError("GetWPIStatus", ex); + + return ex.ToString(); + } + } + + [WebMethod] + public string WpiGetLogFileDirectory() + { + try + { + Log.WriteStart("WpiGetLogFileDirectory"); + + RegisterWpiService(); + + WPIServiceContract client = new WPIServiceContract(); + + string result = client.GetLogFileDirectory(); + + Log.WriteEnd("WpiGetLogFileDirectory"); + + return result; //OK + } + catch (Exception ex) + { + + Log.WriteError("WpiGetLogFileDirectory", ex); + + throw; + } + } + + [WebMethod] + public SettingPair[] WpiGetLogsInDirectory(string Path) + { + try + { + Log.WriteStart("WpiGetLogsInDirectory"); + + ArrayList result = new ArrayList(); + + string[] filePaths = Directory.GetFiles(Path); + foreach (string filePath in filePaths) + { + using (StreamReader streamReader = new StreamReader(filePath)) + { + string fileContent = SecurityElement.Escape(StringUtils.CleanupASCIIControlCharacters(streamReader.ReadToEnd())); + result.Add(new SettingPair(filePath, fileContent)); + } + + } + + Log.WriteEnd("WpiGetLogFileDirectory"); + + return (SettingPair[])result.ToArray(typeof(SettingPair)); //OK + } + catch (Exception ex) + { + + Log.WriteError("WpiGetLogFileDirectory", ex); + + throw; + } + } + + + + + + static WpiHelper wpi = null; + WpiHelper GetWpiFeed() + { + if (FEEDS.Length == 0) + { + throw new Exception("Empty feed list"); + } + + if (null == wpi) + { + wpi = new WpiHelper(FEEDS); + } + return wpi; + } + + private static object _lockRegisterWpiService = new object(); + private void RegisterWpiService() + { + lock (_lockRegisterWpiService) + { + + + try + { + ChannelServices.RegisterChannel(new TcpChannel(), true); + } + catch (System.Exception) + { + //ignor + } + + if (null == RemotingConfiguration.IsWellKnownClientType(typeof(WPIServiceContract))) + { + RemotingConfiguration.RegisterWellKnownClientType(typeof(WPIServiceContract), string.Format("tcp://localhost:{0}/WPIServiceContract", WPIServiceContract.PORT)); + } + + try + { + WPIServiceContract client = new WPIServiceContract(); + client.Ping(); + } + catch (Exception) + { + //unable to connect + //try to restart service + KillWpiService(); + //StartWpiService(); + } + + + + + } + + + } + #endregion GetWPIProducts + + #region Event Viewer [WebMethod] public List GetLogNames() diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config index e15f3f0a..e8d06e78 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_Data/WebsitePanel_Modules.config @@ -174,7 +174,8 @@ - + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Modules.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Modules.ascx.resx index 3541969a..843fd123 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Modules.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Modules.ascx.resx @@ -378,6 +378,9 @@ Manage Windows Services + + Manage Web Platform Installer + My Databases diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Pages.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Pages.ascx.resx index 7a3e2bc4..1d3d1e32 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Pages.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_Pages.ascx.resx @@ -337,7 +337,7 @@ Applications Installer - Microsoft Web App Gallery + Web App Gallery {user} - {space} - Applications Installer 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 4ce46d09..f1e54acc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -873,6 +873,9 @@ Error saving server service settings + + Error loading feeds. Please check system settings + Error building hosting space summary letter @@ -4604,7 +4607,7 @@ OCS users quota has been reached. - Microsoft Web App Gallery + Web App Gallery We apologize for the inconvenience but the application download has been failed. Please contact your service provider to correct the issue. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/ServersEditWebPlatformInstaller.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/ServersEditWebPlatformInstaller.ascx.resx new file mode 100644 index 00000000..c9a1b77b --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/ServersEditWebPlatformInstaller.ascx.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Cancel + + + Continue + + + Pause + + + Start + + + Stop + + + No Windows Services found. + + + Id + + + Name + + + Status + + + Logo + + + Continuing + + + Paused + + + Pausing + + + Running + + + Starting + + + Stopped + + + Stopping + + + Add + + + Install + + + Install + + + Accept + + + Products to be installed + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebApplicationGalleryParams.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebApplicationGalleryParams.ascx.resx index e14fede4..2a4caaa3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebApplicationGalleryParams.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/WebApplicationGalleryParams.ascx.resx @@ -226,6 +226,12 @@ Choose your database: + + Database type + + + Choose your database type: + Create a new or use an existing database diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/WebAppGalleryHelpers.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/WebAppGalleryHelpers.cs index 67e812f1..f08fe6c1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/WebAppGalleryHelpers.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/WebAppGalleryHelpers.cs @@ -39,6 +39,12 @@ namespace WebsitePanel.Portal return ES.Services.WebApplicationGallery.GetGalleryApplications(packageId, categoryId); } + public GalleryApplicationsResult GetGalleryApplicationsFiltered(string pattern, int packageId) + { + return ES.Services.WebApplicationGallery.GetGalleryApplicationsFiltered(packageId, pattern); + } + + public List GetGalleryApplicationsByServiceId(int serviceId) { GalleryApplicationsResult result = ES.Services.WebApplicationGallery.GetGalleryApplicationsByServiceId(serviceId); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx index 32015972..3f4a170e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx @@ -4,6 +4,7 @@ <%@ Register Src="../UserControls/EditDomainsList.ascx" TagName="EditDomainsList" TagPrefix="uc5" %> <%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagPrefix="wsp" TagName="CollapsiblePanel" %> <%@ Register Src="../UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %> +<%@ Register src="../UserControls/EditFeedsList.ascx" tagname="EditFeedsList" tagprefix="uc6" %> <%@ Import Namespace="WebsitePanel.Portal.ProviderControls" %>
@@ -175,25 +176,36 @@  
+ + - - - - + + + + + + + + + + + + +
- - - -

-
Enable Microsoft feed + +
Enable HeliconTech feed + +
+

diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.cs index b1b6c30a..c1a1d222 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.cs @@ -127,7 +127,13 @@ namespace WebsitePanel.Portal.ProviderControls // ASP.NET 2.0 & 4.0 Bitness Mode Utils.SelectListItem(AspNetBitnessMode, settings[AspNetBitnessMode.ID]); - txtGalleryFeedUrl.Text = settings["GalleryXmlFeedUrl"]; + + + // WPI + wpiMicrosoftFeed.Checked = Utils.ParseBool(settings["FeedEnableMicrosoft"], true); + wpiHeliconTechFeed.Checked = Utils.ParseBool(settings["FeedEnableHelicon"], true); + wpiEditFeedsList.Value = settings["FeedUrls"]; + txtAspPath.Text = settings["AspPath"]; php4Path.Text = settings["Php4Path"]; @@ -219,8 +225,6 @@ namespace WebsitePanel.Portal.ProviderControls // ASP.NET 2.0 & 4.0 Bitness Mode settings[AspNetBitnessMode.ID] = AspNetBitnessMode.SelectedValue; - settings["GalleryXmlFeedUrl"] = txtGalleryFeedUrl.Text.Trim(); - settings["AspPath"] = txtAspPath.Text.Trim(); settings["Php4Path"] = php4Path.Text.Trim(); settings["PhpPath"] = txtPhpPath.Text.Trim(); @@ -243,7 +247,12 @@ namespace WebsitePanel.Portal.ProviderControls ActiveDirectoryIntegration.SaveSettings(settings); - settings["GalleryAppsFilter"] = GetAppsCatalogFilter(); + + + settings["FeedEnableMicrosoft"] = wpiMicrosoftFeed.Checked.ToString(); + settings["FeedEnableHelicon"] = wpiHeliconTechFeed.Checked.ToString(); + settings["FeedUrls"] = wpiEditFeedsList.Value; + settings["GalleryAppsFilter"] = GetAppsCatalogFilter(); if (WDeployEnabledCheckBox.Checked) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.designer.cs index 8ebc30d1..f266966a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/IIS70_Settings.ascx.designer.cs @@ -1,3 +1,32 @@ +// 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. @@ -273,24 +302,6 @@ namespace WebsitePanel.Portal.ProviderControls { ///
protected global::System.Web.UI.WebControls.Label lblWebAppGallery; - /// - /// lblGalleryFeed control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblGalleryFeed; - - /// - /// txtGalleryFeedUrl control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtGalleryFeedUrl; - /// /// FilterDialogButton control. /// @@ -300,6 +311,33 @@ namespace WebsitePanel.Portal.ProviderControls { ///
protected global::System.Web.UI.WebControls.LinkButton FilterDialogButton; + /// + /// wpiMicrosoftFeed control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox wpiMicrosoftFeed; + + /// + /// wpiHeliconTechFeed control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox wpiHeliconTechFeed; + + /// + /// wpiEditFeedsList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.EditFeedsList wpiEditFeedsList; + /// /// FilterDialogPanel control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditServer.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditServer.ascx index 6eba6725..36f559d8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditServer.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditServer.ascx @@ -196,6 +196,12 @@ meta:resourcekey="lnkEventViewer" Text="Event Viewer"> + + +     + +     // This code was generated by a tool. -// Runtime Version:2.0.50727.1873 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -400,6 +428,15 @@ namespace WebsitePanel.Portal { ///
protected global::System.Web.UI.WebControls.HyperLink lnkEventViewer; + /// + /// lnkPlatformInstaller control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink lnkPlatformInstaller; + /// /// lnkServerReboot control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditSystemProcesses.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditSystemProcesses.ascx.designer.cs index 60334595..d7ad231d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditSystemProcesses.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditSystemProcesses.ascx.designer.cs @@ -1,21 +1,98 @@ +// 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.42 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ namespace WebsitePanel.Portal { + public partial class ServersEditSystemProcesses { - protected WebsitePanel.Portal.ServerHeaderControl ServerHeaderControl1; - protected System.Web.UI.WebControls.Button btnCancel; - protected System.Web.UI.UpdateProgress updatePanelProgress; - protected System.Web.UI.UpdatePanel ItemsUpdatePanel; - protected System.Web.UI.Timer itemsTimer; - protected System.Web.UI.WebControls.GridView gvProcesses; + + /// + /// ServerHeaderControl1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ServerHeaderControl ServerHeaderControl1; + + /// + /// btnCancel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnCancel; + + /// + /// updatePanelProgress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.UpdateProgress updatePanelProgress; + + /// + /// ItemsUpdatePanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.UpdatePanel ItemsUpdatePanel; + + /// + /// itemsTimer control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.Timer itemsTimer; + + /// + /// gvProcesses control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvProcesses; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx new file mode 100644 index 00000000..456b474f --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx @@ -0,0 +1,327 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ServersEditWebPlatformInstaller.ascx.cs" Inherits="WebsitePanel.Portal.ServersEditWebPlatformInstaller" %> +<%@ Import Namespace="WebsitePanel.Portal" %> +<%@ Register Src="ServerHeaderControl.ascx" TagName="ServerHeaderControl" TagPrefix="uc1" %> +<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> +<%@ Register Src="UserControls/PopupHeader.ascx" TagName="PopupHeader" TagPrefix="wsp" %> +<%@ Register Src="UserControls/EditFeedsList.ascx" TagName="EditFeedsList" TagPrefix="uc6" %> + + + + + + + + + +<%-- + + + + + + + + +--%> + + + + + + + + + + + + + + +
+ + + + +
+
+ +
+ + +
+ + + + + + + + + + + + + + + + + + +

<%# Eval("Title")%>

+

<%# Eval("Summary") %>

+ + +

+ More information +  ·  + Version: <%# Eval("Version")%> +  ·  + Published: <%# ((DateTime)Eval("Published")).ToShortDateString() %> +

+ +
+
+ + + + + + + + + + + +
+
+ +
+ +
+ +
+ + +
+ + +
+

No products selected to install

+
+
+
+ +
+
+
+ + + +
+

Products to be installed

+

Review the following list of software to be installed and Windows components to be turned on.

+
+ + + + + + +

<%# Eval("Title")%>

+

+ License Agreement + <%# Eval("DownloadedLocation")%> + +

+
+
+ +
+
+
+
+ +
+

+ Warning: During product installation your IIS process might be restarted depending on the package installed, + causing all users connected to the control panel to lose their session, requiring them to re-login after completion. + Please assure that no other users are processing requests before you start this process as it might cause corruption + if they are in the middle of an update. +

+
+

+ By clicking "I Accept", you agree to the license terms for the software listed above. If you do not agree + to all of the license terms, click "I Decline". +

+
+ + + +
+ + + + + +

Selected products are installed now:

+
+ + initializing... + +
+
+ +
+
+
+ +
+

Selected products are successfully installed + + +

+

Some products installation are failed

+
+
+ + +

+                
+
+
+
+
+ + +
+ +
+
+ +
+ + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx.cs new file mode 100644 index 00000000..1b2c1156 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx.cs @@ -0,0 +1,569 @@ +// 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; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Text; +using System.Web; +using System.Web.Security; +using System.Web.UI; +using System.Web.UI.HtmlControls; +using System.Web.UI.WebControls; +using System.Web.UI.WebControls.WebParts; +using WebsitePanel.Server; +using WebsitePanel.Providers; + +namespace WebsitePanel.Portal +{ + + public partial class ServersEditWebPlatformInstaller : WebsitePanelModuleBase + { + protected const string _wpiLogsDirViewStateKey = "WPI_LOGS_DIR"; + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + try + { + ES.Services.Servers.InitWPIFeeds(PanelRequest.ServerId); + } + catch + { + ProductsPanel.Visible = false; + keywordsList.Visible = false; + SearchPanel.Visible = false; + InstallButtons1.Visible = false; + InstallButtons2.Visible = false; + + ShowWarningMessage("No products available. Please enable Web Platfrom Installer feeds in System Settings."); + + return; + } + + + + ProgressAnimation.ImageUrl = PortalUtils.GetThemedImage("indicator_medium.gif"); + ViewState["SearchResultShown"] = false; + BindWpiProducts(); + + string message = UpdateProgress(); + if (!string.IsNullOrEmpty(message)) + { + ShowProgressPanel(); + } + + } + } + + private void BindWpiProducts() + { + try + { + + keywordsList.Items.Clear(); + List keywords = new List(ES.Services.Servers.GetWPIKeywords(PanelRequest.ServerId)); + keywords.Add(new WPIKeyword("Show installed", "Show Installed")); + keywordsList.DataSource = keywords; + keywordsList.DataTextField = "Text"; + keywordsList.DataValueField = "ID"; + keywordsList.DataBind(); + + if (keywordsList.Items.Count > 0) + { + keywordsList.Items[0].Attributes["class"] = "selected"; + } + + gvWpiProducts.DataSource = FilterInstaledProducts(ES.Services.Servers.GetWPIProducts(PanelRequest.ServerId, null, SelectedKeywordValue)); + gvWpiProducts.DataBind(); + + } + catch (Exception ex) + { + ShowErrorMessage("SERVER_GET_WIN_SERVICES", ex); + return; + } + } + + private string SelectedKeywordValue + { + get + { + return IsShowInstalledPseudoKeywordSelected ? null : keywordsList.SelectedValue; + } + } + + private bool IsShowInstalledPseudoKeywordSelected + { + get { return keywordsList.SelectedIndex == keywordsList.Items.Count - 1; } + } + + + private ArrayList GetProductsToInstallList() + { + if (ViewState["wpiProductsForInstall"] != null) + { + return (ArrayList)ViewState["wpiProductsForInstall"]; + } + return new ArrayList(); + } + + private void SetProductsToInstallList(ArrayList wpiProductsForInstall) + { + ViewState["wpiProductsForInstall"] = wpiProductsForInstall; + } + + private void ShowProductsGrid() + { + ProductsPanel.Visible = true; + keywordsList.Visible = true; + SearchPanel.Visible = true; + InstallButtons1.Visible = true; + InstallButtons2.Visible = true; + + NoProductsSelectedPanel.Visible = false; + + InstallPanel.Visible = false; + AceptDEclineButtons.Visible = false; + ProgressPanel.Visible = false; + ProgressTimer.Enabled = false; + InstallCompletedPanel.Visible = false; + + ProductsPanel.Update(); + InstallPanel.Update(); + ProgressPanel.Update(); + } + + private void ShowNoProductsSelectedPanel() + { + ProductsPanel.Visible = false; + keywordsList.Visible = false; + SearchPanel.Visible = false; + InstallButtons1.Visible = false; + InstallButtons2.Visible = false; + + NoProductsSelectedPanel.Visible = true; + + InstallPanel.Visible = false; + AceptDEclineButtons.Visible = false; + ProgressPanel.Visible = false; + ProgressTimer.Enabled = false; + InstallCompletedPanel.Visible = false; + + ProductsPanel.Update(); + InstallPanel.Update(); + ProgressPanel.Update(); + } + + private void ShowSelectedProducts() + { + ProductsPanel.Visible = false; + keywordsList.Visible = false; + SearchPanel.Visible = false; + InstallButtons1.Visible = false; + InstallButtons2.Visible = false; + ProgressPanel.Visible = false; + ProgressTimer.Enabled = false; + InstallCompletedPanel.Visible = false; + + InstallPanel.Visible = true; + AceptDEclineButtons.Visible = true; + + ProductsPanel.Update(); + InstallPanel.Update(); + ProgressPanel.Update(); + } + + private void ShowProgressPanel() + { + ProductsPanel.Visible = false; + keywordsList.Visible = false; + SearchPanel.Visible = false; + InstallButtons1.Visible = false; + InstallButtons2.Visible = false; + InstallPanel.Visible = false; + AceptDEclineButtons.Visible = false; + InstallCompletedPanel.Visible = false; + + ProgressPanel.Visible = true; + ProgressTimer.Enabled = true; + + ProductsPanel.Update(); + InstallPanel.Update(); + ProgressPanel.Update(); + } + + protected void gvWpiProducts_PageIndexChanging(object sender, GridViewPageEventArgs e) + { + gvWpiProducts.PageIndex = ((System.Web.UI.WebControls.GridViewPageEventArgs)e).NewPageIndex; + if ((bool)ViewState["SearchResultShown"]) + { + gvWpiProducts.DataSource = GetWpiProductsFiltered(); + } + else + { + gvWpiProducts.DataSource = FilterInstaledProducts(ES.Services.Servers.GetWPIProducts(PanelRequest.ServerId, null, SelectedKeywordValue)); + } + gvWpiProducts.DataBind(); + + } + + + protected void gvWpiProducts_RowCommand(object sender, GridViewCommandEventArgs e) + { + + if (e.CommandName == "WpiAdd") + { + ((Button)e.CommandSource).Text = "- remove"; + ((Button)e.CommandSource).CommandName = "WpiRemove"; + + ArrayList wpiProductsForInstall = GetProductsToInstallList(); + wpiProductsForInstall.Add(e.CommandArgument.ToString()); + SetProductsToInstallList(wpiProductsForInstall); + + } + + if (e.CommandName == "WpiRemove") + { + ((Button)e.CommandSource).Text = "+ add"; + ((Button)e.CommandSource).CommandName = "WpiAdd"; + + ArrayList wpiProductsForInstall = GetProductsToInstallList(); + wpiProductsForInstall.Remove(e.CommandArgument.ToString()); + SetProductsToInstallList(wpiProductsForInstall); + + + } + + } + + + private void UpdateProductsByKeyword() + { + gvWpiProducts.DataSource = FilterInstaledProducts( + ES.Services.Servers.GetWPIProducts(PanelRequest.ServerId, null, SelectedKeywordValue) + ); + gvWpiProducts.DataBind(); + } + + protected void keywordsList_SelectedIndexChanged(object sender, EventArgs e) + { + gvWpiProducts.PageIndex = 0; + + keywordsList.SelectedItem.Attributes["class"] = "selected"; + searchBox.Text = ""; + + UpdateProductsByKeyword(); + } + + protected void btnInstall_Click(object sender, EventArgs e) + { + string[] productsToInstall = (string[]) GetProductsToInstallList().ToArray(typeof (string)); + if (null == productsToInstall || productsToInstall.Length == 0) + { + ShowNoProductsSelectedPanel(); + } + else + { + // get dependencies and show it + gvWpiInstall.DataSource = ES.Services.Servers.GetWPIProductsWithDependencies(PanelRequest.ServerId, productsToInstall); + gvWpiInstall.DataBind(); + ShowSelectedProducts(); + } + } + + protected void btnDecline_Click(object sender, EventArgs e) + { + ShowProductsGrid(); + } + + private IAsyncResult WPIInstallationResult; + protected void btnAccept_Click(object sender, EventArgs e) + { + WPIInstallationResult = ES.Services.Servers.BeginInstallWPIProducts( + PanelRequest.ServerId, + (string[])GetProductsToInstallList().ToArray(typeof(string)), + null, + null + ); + ShowProgressPanel(); + UpdateProgress(); + } + + private string UpdateProgress() + { + + try + { + string wpiLogsDir = ViewState[_wpiLogsDirViewStateKey] as string; + if (string.IsNullOrEmpty(wpiLogsDir)) + { + wpiLogsDir = ES.Services.Servers.WpiGetLogFileDirectory(PanelRequest.ServerId); + ViewState[_wpiLogsDirViewStateKey] = wpiLogsDir; + } + } + catch + { + // + } + + + string message = ES.Services.Servers.GetWPIStatus(PanelRequest.ServerId); + if (!string.IsNullOrEmpty(message)) + { + ProgressMessage.Text = message.Replace("\n", "
"); + } + else + { + //ProgressMessage.Text = "please wait..."; + } + + + return message; + } + + protected void ProgressTimerTick(object sender, EventArgs e) + { + string message = UpdateProgress(); + + if (string.IsNullOrEmpty(message)) + { + ShowInstallCompletedPanel(); + //ProgressTimer.Enabled = false; + } + else if (message.IndexOf("failed", StringComparison.OrdinalIgnoreCase) > 0) + { + // some installation failed + ShowInstallFailedPanel(); + } + } + + private void ShowInstallFailedPanel() + { + ProgressMessagePanel.Visible = true; + InstallCompletedPanel.Visible = true; + ProgressAnimation.Style["display"] = "none"; + CancelInstall.Visible = false; + + LabelInstallationFailed.Visible = true; + LabelInstallationSuccess.Visible = false; + + ShowLogButton(); + } + + private void ShowInstallCompletedPanel() + { + if (!LabelInstallationFailed.Visible) + { + ProgressMessagePanel.Visible = false; + } + InstallCompletedPanel.Visible = true; + ProgressAnimation.Style["display"] = "none"; + + if (!InstalledProductsList.Visible) + { + string[] productsToInstall = (string[]) GetProductsToInstallList().ToArray(typeof (string)); + foreach (string product in productsToInstall) + { + InstalledProductsList.Items.Add(new ListItem(product)); + } + + InstalledProductsList.Visible = true; + } + + ShowLogButton(); + } + + private void ShowLogButton() + { + string wpiLogsDir = ViewState[_wpiLogsDirViewStateKey] as string; + if (!string.IsNullOrEmpty(wpiLogsDir)) + { + ShowLogsButton.Visible = true; + } + } + + protected void gvWpiInstall_RowDataBound(object sender, GridViewRowEventArgs e) + { + WPIProduct p = (WPIProduct)e.Row.DataItem; + if (p != null) + { + Label labelFileSize = (Label)e.Row.FindControl("downloadSize"); + if (p.FileSize == 0 ) + { + if (labelFileSize != null) + { + labelFileSize.Visible = false; + } + } + else + { + if (labelFileSize != null) + { + labelFileSize.Text += " " + p.FileSize + " Kb"; + } + } + + + if (string.IsNullOrEmpty( p.EulaUrl ) ) + { + HyperLink hl = (HyperLink)e.Row.FindControl("eulaLink"); + if (hl != null) + { + hl.Visible = false; + } + } + + if (string.IsNullOrEmpty( p.DownloadedLocation ) ) + { + Label label = (Label)e.Row.FindControl("labelDownloaded"); + if (label != null) + { + label.Visible = false; + } + } + } + } + + + protected void BackToGalleryButtonClick(object sender, EventArgs e) + { + Response.Redirect(EditUrl("ServerID", PanelRequest.ServerId.ToString(), "edit_platforminstaller")); + } + + protected void CacnelInstallButtonClick(object sender, EventArgs e) + { + ES.Services.Servers.CancelInstallWPIProducts(PanelRequest.ServerId); + ProgressMessage.Text = "Canceling..."; + LabelInstallationSuccess.Text = "Installation canceled"; + } + + protected void NoProductsBackButtonClick(object sender, EventArgs e) + { + ShowProductsGrid(); + } + + protected string IsAddedText(string productId) + { + if ( GetProductsToInstallList().Contains(productId) ) + { + return "- remove"; + } + else + { + return "+ add"; + } + } + + protected void btnCancel_Click(object sender, EventArgs e) + { + Response.Redirect(EditUrl("ServerID", PanelRequest.ServerId.ToString(), "edit_server")); + } + + protected void SearchButton_Click(object sender, EventArgs e) + { + keywordsList.ClearSelection(); + ViewState["SearchResultShown"] = true; + gvWpiProducts.PageIndex = 0; + gvWpiProducts.DataSource = GetWpiProductsFiltered(); + gvWpiProducts.DataBind(); + } + + private WPIProduct[] GetWpiProductsFiltered() + { + return ES.Services.Servers.GetWPIProductsFiltered(PanelRequest.ServerId, searchBox.Text); + } + + protected ArrayList FilterInstaledProducts(WPIProduct[] products) + { + ViewState["SearchResultShown"] = false; + + ArrayList result = new ArrayList(); + + foreach (WPIProduct product in products) + { + if (product.IsInstalled == IsShowInstalledPseudoKeywordSelected) + { + result.Add(product); + } + } + + return result; + } + + protected string FixDefaultLogo(string imgUrl) + { + if (string.IsNullOrEmpty(imgUrl)) + { + return GetThemedImage("../icons/dvd_disc_48.png"); + } + + return imgUrl; + } + + protected void ShowLogsButton_OnClick(object sender, EventArgs e) + { + //show logs + try + { + string wpiLogsDir = ViewState[_wpiLogsDirViewStateKey] as string; + + if (!string.IsNullOrEmpty(wpiLogsDir)) + { + //Get logs !!! + object[] logsEntrys = ES.Services.Servers.WpiGetLogsInDirectory(PanelRequest.ServerId, wpiLogsDir); + + WpiLogsPanel.Visible = true; + + StringBuilder sb = new StringBuilder(); + + foreach (SettingPair entry in logsEntrys) + { + string fileName = (string)entry.Name; + string fileContent = (string)entry.Value; + sb.AppendLine().AppendFormat("

{0}

", fileName).AppendLine().Append(fileContent).AppendLine(); + } + + WpiLogsPre.InnerHtml = sb.ToString(); + + ShowLogsButton.Visible = false; + ProgressTimer.Enabled = false; + } + + } + catch (Exception ex) + { + WpiLogsPanel.Visible = true; + WpiLogsPre.InnerText = ex.ToString(); + } + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx.designer.cs new file mode 100644 index 00000000..15aaca0c --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWebPlatformInstaller.ascx.designer.cs @@ -0,0 +1,377 @@ +// 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. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebsitePanel.Portal { + + + public partial class ServersEditWebPlatformInstaller { + + /// + /// asyncTasks control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; + + /// + /// ServerHeaderControl1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ServerHeaderControl ServerHeaderControl1; + + /// + /// SearchPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel SearchPanel; + + /// + /// keywordsList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RadioButtonList keywordsList; + + /// + /// searchBox control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox searchBox; + + /// + /// ProductSearchGo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ImageButton ProductSearchGo; + + /// + /// InstallButtons2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl InstallButtons2; + + /// + /// btnInstall2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnInstall2; + + /// + /// btnCancel2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnCancel2; + + /// + /// ProductsPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.UpdatePanel ProductsPanel; + + /// + /// gvWpiProducts control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvWpiProducts; + + /// + /// InstallButtons1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl InstallButtons1; + + /// + /// btnInstall1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnInstall1; + + /// + /// btnCancel1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnCancel1; + + /// + /// NoProductsSelectedPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel NoProductsSelectedPanel; + + /// + /// NoProductsBackButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button NoProductsBackButton; + + /// + /// InstallPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.UpdatePanel InstallPanel; + + /// + /// gvWpiInstall control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvWpiInstall; + + /// + /// AceptDEclineButtons control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl AceptDEclineButtons; + + /// + /// btnAccept control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnAccept; + + /// + /// btnDecline control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnDecline; + + /// + /// btnCancel3 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnCancel3; + + /// + /// ProgressPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.UpdatePanel ProgressPanel; + + /// + /// ProgressTimer control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.Timer ProgressTimer; + + /// + /// ProgressMessagePanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel ProgressMessagePanel; + + /// + /// ProgressAnimation control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Image ProgressAnimation; + + /// + /// ProgressMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label ProgressMessage; + + /// + /// CancelInstall control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button CancelInstall; + + /// + /// InstallCompletedPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel InstallCompletedPanel; + + /// + /// LabelInstallationSuccess control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelInstallationSuccess; + + /// + /// InstalledProductsList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.BulletedList InstalledProductsList; + + /// + /// LabelInstallationFailed control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelInstallationFailed; + + /// + /// ShowLogsButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button ShowLogsButton; + + /// + /// WpiLogsPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel WpiLogsPanel; + + /// + /// WpiLogsPre control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl WpiLogsPre; + + /// + /// BackToGalleryButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button BackToGalleryButton; + + /// + /// btnBackToServer control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnBackToServer; + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWindowsServices.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWindowsServices.ascx.designer.cs index b18b0e24..d316bb5b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWindowsServices.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ServersEditWindowsServices.ascx.designer.cs @@ -1,21 +1,98 @@ +// 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.42 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ namespace WebsitePanel.Portal { + public partial class ServersEditWindowsServices { - protected WebsitePanel.Portal.ServerHeaderControl ServerHeaderControl1; - protected System.Web.UI.WebControls.Button btnCancel; - protected System.Web.UI.UpdateProgress updatePanelProgress; - protected System.Web.UI.UpdatePanel ItemsUpdatePanel; - protected System.Web.UI.Timer itemsTimer; - protected System.Web.UI.WebControls.GridView gvServices; + + /// + /// ServerHeaderControl1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ServerHeaderControl ServerHeaderControl1; + + /// + /// btnCancel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnCancel; + + /// + /// updatePanelProgress control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.UpdateProgress updatePanelProgress; + + /// + /// ItemsUpdatePanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.UpdatePanel ItemsUpdatePanel; + + /// + /// itemsTimer control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.Timer itemsTimer; + + /// + /// gvServices control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvServices; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx index 1441bac1..51c37f47 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx @@ -1,5 +1,6 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SystemSettings.ascx.cs" Inherits="WebsitePanel.Portal.SystemSettings" %> <%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="UserControls/CollapsiblePanel.ascx" %> +<%@ Register src="UserControls/EditFeedsList.ascx" tagname="EditFeedsList" tagprefix="uc1" %>
@@ -39,6 +40,30 @@ + + + + + + + + + + + + + + + +
Enable Microsoft feed + +
Enable HeliconTech feed + +
+ + +
// This code was generated by a tool. -// Runtime Version:2.0.50727.42 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ namespace WebsitePanel.Portal { + public partial class SystemSettings { - protected WebsitePanel.Portal.CollapsiblePanel lclSmtpSettings; - protected System.Web.UI.WebControls.Panel SmtpPanel; - protected System.Web.UI.WebControls.TextBox txtSmtpServer; - protected System.Web.UI.WebControls.TextBox txtSmtpPort; - protected System.Web.UI.WebControls.TextBox txtSmtpUser; - protected System.Web.UI.WebControls.TextBox txtSmtpPassword; - protected System.Web.UI.WebControls.Localize locEnableSsl; - protected System.Web.UI.WebControls.CheckBox chkEnableSsl; - protected WebsitePanel.Portal.CollapsiblePanel lclBackupSettings; - protected System.Web.UI.WebControls.Panel BackupPanel; - protected System.Web.UI.WebControls.Localize Localize1; - protected System.Web.UI.WebControls.TextBox txtBackupsPath; - protected System.Web.UI.WebControls.Button btnSaveSettings; + + /// + /// lclSmtpSettings control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.CollapsiblePanel lclSmtpSettings; + + /// + /// SmtpPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel SmtpPanel; + + /// + /// txtSmtpServer control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSmtpServer; + + /// + /// txtSmtpPort control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSmtpPort; + + /// + /// txtSmtpUser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSmtpUser; + + /// + /// txtSmtpPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtSmtpPassword; + + /// + /// locEnableSsl control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locEnableSsl; + + /// + /// chkEnableSsl control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkEnableSsl; + + /// + /// lclBackupSettings control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.CollapsiblePanel lclBackupSettings; + + /// + /// BackupPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel BackupPanel; + + /// + /// Localize1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize Localize1; + + /// + /// txtBackupsPath control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtBackupsPath; + + /// + /// lclWpiSettings control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.CollapsiblePanel lclWpiSettings; + + /// + /// WpiPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel WpiPanel; + + /// + /// wpiMicrosoftFeed control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox wpiMicrosoftFeed; + + /// + /// wpiHeliconTechFeed control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox wpiHeliconTechFeed; + + /// + /// wpiEditFeedsList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.EditFeedsList wpiEditFeedsList; + + /// + /// btnSaveSettings control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnSaveSettings; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/App_LocalResources/EditFeedsList.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/App_LocalResources/EditFeedsList.ascx.resx new file mode 100644 index 00000000..659b5a3b --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/App_LocalResources/EditFeedsList.ascx.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Add + + + Delete + + + return confirm('Delete item?'); + + + The list is empty. + + + Additional Name Server: + + + Primary Name Server: + + + Secondary Name Server: + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/DomainListControlBase.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/DomainListControlBase.cs new file mode 100644 index 00000000..8bb18cfa --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/DomainListControlBase.cs @@ -0,0 +1,184 @@ +// 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; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Web.UI.WebControls; + + +namespace WebsitePanel.Portal.UserControls +{ + public abstract class DomainListControlBase : WebsitePanelControlBase + { + # region Properties + + protected abstract Button AddButton { get; } + protected abstract GridView Grid { get; } + + public Boolean DisplayNames + { + get { return Grid.Columns[ 0 ].Visible; } + set { Grid.Columns[ 0 ].Visible = value; } + } + + + public String Value + { + get + { + var items = CollectFormData( false ); + return String.Join( ";", items.ToArray() ); + } + + set + { + var items = new List(); + if ( !String.IsNullOrEmpty( value ) ) + { + var parts = value.Split( ';' ); + items.AddRange( from part in parts where part.Trim() != "" select part.Trim() ); + } + + // save items + _loaded_items = items.ToArray(); + + if ( IsPostBack ) + { + BindItems( _loaded_items ); + } + } + } + + # endregion + + + protected void Page_Load( Object sender, EventArgs e ) + { + if ( !IsPostBack ) + { + BindItems( _loaded_items ); // empty list + } + } + + + private void BindItems( IEnumerable items ) + { + Grid.DataSource = items; + Grid.DataBind(); + } + + + public List CollectFormData( Boolean include_empty ) + { + var items = new List(); + foreach ( GridViewRow row in Grid.Rows ) + { + var txt_name = (TextBox)row.FindControl( _txt_control_name ); + var val = txt_name.Text.Trim(); + + if ( include_empty || "" != val ) + { + items.Add( val ); + } + } + + return items; + } + + + # region Events + + protected void BtnAddClick( Object sender, EventArgs e) + { + var items = CollectFormData( true ); + + // add empty string + items.Add( "" ); + + // bind items + BindItems( items.ToArray() ); + } + + + protected void ListRowCommand( Object sender, GridViewCommandEventArgs e ) + { + if ( "delete_item" != e.CommandName ) + { + return; + } + + var items = CollectFormData(true); + + // remove error + items.RemoveAt( Utils.ParseInt( e.CommandArgument, 0 ) ); + + // bind items + BindItems(items.ToArray()); + } + + + protected void ListRowDataBound( Object sender, GridViewRowEventArgs e ) + { + var lbl_name = (Label)e.Row.FindControl( _lbl_control_name ); + var txt_name = (TextBox)e.Row.FindControl( _txt_control_name ); + var cmd_delete = (ImageButton)e.Row.FindControl( _delete_control_name ); + + if ( null == lbl_name ) + { + return; + } + + var val = (String)e.Row.DataItem; + txt_name.Text = val; + + var pos = ( e.Row.RowIndex < 2 ) + ? e.Row.RowIndex.ToString( CultureInfo.InvariantCulture ) + : ""; + lbl_name.Text = GetLocalizedString( "Item" + pos + ".Text" ); + + cmd_delete.CommandArgument = e.Row.RowIndex.ToString( CultureInfo.InvariantCulture ); + } + + # endregion + + + # region Fields + + protected String[] _loaded_items = new String[] {}; + + protected String _txt_control_name; + protected String _lbl_control_name; + protected String _delete_control_name; + + # endregion + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx index 405828b0..860101f8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx @@ -2,12 +2,12 @@
+ CssClass="Button2" CausesValidation="false" OnClick="BtnAddClick"/>
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx.cs index 22800cb5..0a94a6af 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx.cs @@ -26,134 +26,29 @@ // (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.Generic; -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.UserControls { - public partial class EditDomainsList : WebsitePanelControlBase + public partial class EditDomainsList : DomainListControlBase { - public bool DisplayNames + public EditDomainsList() { - get { return gvDomains.Columns[0].Visible; } - set { gvDomains.Columns[0].Visible = value; } + _txt_control_name = "txtDomainName"; + _lbl_control_name = "lblDomainName"; + _delete_control_name = "cmdDeleteDomain"; } - public string Value + + protected override Button AddButton { - get { return GetDomainsValue(); } - set { SetDomainsValue(value); } + get { return btnAddDomain; } } - private string GetDomainsValue() + + protected override GridView Grid { - List items = CollectFormData(false); - return String.Join(";", items.ToArray()); - } - - private void SetDomainsValue(string s) - { - List items = new List(); - if (!String.IsNullOrEmpty(s)) - { - string[] parts = s.Split(';'); - foreach (string part in parts) - { - if (part.Trim() != "") - items.Add(part.Trim()); - } - } - - // save items - loadItems = items.ToArray(); - - if (IsPostBack) - { - BindItems(loadItems); - } - } - - private string[] loadItems = new string[] { }; - - protected void Page_Load(object sender, EventArgs e) - { - if (!IsPostBack) - { - BindItems(loadItems); // empty list - } - } - - private void BindItems(string[] items) - { - gvDomains.DataSource = items; - gvDomains.DataBind(); - } - - public List CollectFormData(bool includeEmpty) - { - List items = new List(); - foreach (GridViewRow row in gvDomains.Rows) - { - TextBox txtDomainName = (TextBox)row.FindControl("txtDomainName"); - string val = txtDomainName.Text.Trim(); - - if (includeEmpty || val != "") - items.Add(val); - } - - return items; - } - - protected void btnAddDomain_Click(object sender, EventArgs e) - { - List items = CollectFormData(true); - - // add empty string - items.Add(""); - - // bind items - BindItems(items.ToArray()); - } - - protected void gvDomains_RowCommand(object sender, GridViewCommandEventArgs e) - { - if (e.CommandName == "delete_item") - { - List items = CollectFormData(true); - - // remove error - items.RemoveAt(Utils.ParseInt((string)e.CommandArgument, 0)); - - // bind items - BindItems(items.ToArray()); - } - } - - protected void gvDomains_RowDataBound(object sender, GridViewRowEventArgs e) - { - Label lblDomainName = (Label)e.Row.FindControl("lblDomainName"); - TextBox txtDomainName = (TextBox)e.Row.FindControl("txtDomainName"); - ImageButton cmdDeleteDomain = (ImageButton)e.Row.FindControl("cmdDeleteDomain"); - - if (lblDomainName != null) - { - string val = (string)e.Row.DataItem; - txtDomainName.Text = val; - - string pos = (e.Row.RowIndex < 2) ? e.Row.RowIndex.ToString() : ""; - lblDomainName.Text = GetLocalizedString("Item" + pos + ".Text"); - - cmdDeleteDomain.CommandArgument = e.Row.RowIndex.ToString(); - } + get { return gvDomains; } } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx.designer.cs index 9ace0ecf..15251b89 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditDomainsList.ascx.designer.cs @@ -1,17 +1,62 @@ +// 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.42 // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ namespace WebsitePanel.Portal.UserControls { + public partial class EditDomainsList { - protected System.Web.UI.WebControls.Button btnAddDomain; - protected System.Web.UI.WebControls.GridView gvDomains; + + /// + /// btnAddDomain control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnAddDomain; + + /// + /// gvDomains control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvDomains; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx new file mode 100644 index 00000000..a327dba9 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx @@ -0,0 +1,38 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="EditFeedsList.ascx.cs" Inherits="WebsitePanel.Portal.UserControls.EditFeedsList" %> +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx.cs new file mode 100644 index 00000000..9e4ec30d --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx.cs @@ -0,0 +1,54 @@ +// 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.Web.UI.WebControls; + +namespace WebsitePanel.Portal.UserControls +{ + public partial class EditFeedsList : DomainListControlBase + { + public EditFeedsList() + { + _txt_control_name = "txtFeedName"; + _lbl_control_name = "lblFeedName"; + _delete_control_name = "cmdDeleteFeed"; + } + + + protected override Button AddButton + { + get { return btnAddFeed; } + } + + + protected override GridView Grid + { + get { return gvFeeds; } + } + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx.designer.cs new file mode 100644 index 00000000..53c27515 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/EditFeedsList.ascx.designer.cs @@ -0,0 +1,62 @@ +// 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. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebsitePanel.Portal.UserControls { + + + public partial class EditFeedsList { + + /// + /// btnAddFeed control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnAddFeed; + + /// + /// gvFeeds control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvFeeds; + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx index e39fb7a4..5de7bc20 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx @@ -1,15 +1,117 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebApplicationGallery.ascx.cs" Inherits="WebsitePanel.Portal.WebApplicationGallery" %> <%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="uc1" %> <%@ Import Namespace="WebsitePanel.Portal" %> + + + + + +
- - + + + + + +
+ + + + + +
+ + +
+<%-- + --%> + @@ -20,7 +122,7 @@
- @@ -31,7 +133,7 @@
- <%# Eval("Title")%> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx.cs index 293000e7..08978785 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx.cs @@ -47,15 +47,19 @@ namespace WebsitePanel.Portal // if (!result.IsSuccess) { - ddlCategory.Visible = false; + rbsCategory.Visible = false; messageBox.ShowMessage(result, "WAG_NOT_AVAILABLE", "ModuleWAG"); return; } if (!IsPostBack) { + // + SetLanguage(); + BindLanguages(); BindCategories(); BindApplications(); + ViewState["IsSearchResults"] = false; } } catch(Exception ex) @@ -67,43 +71,69 @@ namespace WebsitePanel.Portal protected void gvApplications_PageIndexChanging(object sender, GridViewPageEventArgs e) { gvApplications.PageIndex = e.NewPageIndex; - // - BindApplications(); + if ((bool)ViewState["IsSearchResults"] == false) + { + // categorized app list + BindApplications(); + if (null != rbsCategory.SelectedItem) + { + rbsCategory.SelectedItem.Attributes["class"] = "selected"; + } + } + else + { + // search result app list + SearchButton_Click(sender, null); + } } + private void BindLanguages() + { + GalleryLanguagesResult result = ES.Services.WebApplicationGallery.GetGalleryLanguages(PanelSecurity.PackageId); + dropDownLanguages.DataSource = result.Value; + //dropDownLanguages.SelectedIndex = 0; + dropDownLanguages.SelectedValue = (string)Session["WebApplicationGaleryLanguage"]; + dropDownLanguages.DataTextField = "Value"; + dropDownLanguages.DataValueField = "Name"; + dropDownLanguages.DataBind(); + + } + private void BindCategories() { GalleryCategoriesResult result = ES.Services.WebApplicationGallery.GetGalleryCategories(PanelSecurity.PackageId); // - ddlCategory.DataSource = result.Value; - ddlCategory.DataTextField = "Name"; - ddlCategory.DataValueField = "Id"; - ddlCategory.DataBind(); + rbsCategory.DataSource = result.Value; + rbsCategory.DataTextField = "Name"; + rbsCategory.DataValueField = "Id"; + rbsCategory.DataBind(); // add empty - ddlCategory.Items.Insert(0, new ListItem(GetLocalizedString("SelectCategory.Text"), "")); + ListItem listItem = new ListItem("All", ""); + listItem.Attributes["class"] = "selected"; + rbsCategory.Items.Insert(0, listItem); } private void BindApplications() { - WebAppGalleryHelpers helper = new WebAppGalleryHelpers(); + ViewState["IsSearchResults"] = false; + WebAppGalleryHelpers helper = new WebAppGalleryHelpers(); // - GalleryApplicationsResult result = helper.GetGalleryApplications(ddlCategory.SelectedValue, PanelSecurity.PackageId); + GalleryApplicationsResult result = helper.GetGalleryApplications(rbsCategory.SelectedValue, PanelSecurity.PackageId); // gvApplications.DataSource = result.Value; gvApplications.DataBind(); } - protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e) + protected void CategorySelectedIndexChanged(object sender, EventArgs e) { - gvApplications.PageIndex = 0; - // - BindApplications(); - } + ViewState["IsSearchResults"] = false; + searchBox.Text = ""; + gvApplications.PageIndex = 0; + rbsCategory.SelectedItem.Attributes["class"] = "selected"; - protected void odsApplications_Selected(object sender, ObjectDataSourceStatusEventArgs e) - { - } + BindApplications(); + } protected void gvApplications_RowCommand(object sender, GridViewCommandEventArgs e) { @@ -111,5 +141,42 @@ namespace WebsitePanel.Portal Response.Redirect(EditUrl("ApplicationID", e.CommandArgument.ToString(), "edit", "SpaceID=" + PanelSecurity.PackageId.ToString())); } + + protected void SearchButton_Click(object sender, System.Web.UI.ImageClickEventArgs e) + { + if ((bool)ViewState["IsSearchResults"] == false) + { + gvApplications.PageIndex = 0; + } + ViewState["IsSearchResults"] = true; + + WebAppGalleryHelpers helper = new WebAppGalleryHelpers(); + GalleryApplicationsResult result = helper.GetGalleryApplicationsFiltered(searchBox.Text, PanelSecurity.PackageId); + + gvApplications.DataSource = result.Value ; + gvApplications.DataBind(); + } + + protected void dropDownLanguages_SelectedIndexChanged(object sender, EventArgs e) + { + Session["WebApplicationGaleryLanguage"] = dropDownLanguages.SelectedValue; + + SetLanguage(); + + BindLanguages(); + BindCategories(); + BindApplications(); + + } + + private void SetLanguage() + { + string lang = (string)Session["WebApplicationGaleryLanguage"]; + if (string.IsNullOrEmpty(lang)) + { + lang = "en"; + } + ES.Services.WebApplicationGallery.SetResourceLanguage(PanelSecurity.PackageId, lang); + } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx.designer.cs index 6d7c9fb0..83f5ec39 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGallery.ascx.designer.cs @@ -1,4 +1,33 @@ -//------------------------------------------------------------------------------ +// 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. // @@ -13,13 +42,40 @@ namespace WebsitePanel.Portal { public partial class WebApplicationGallery { /// - /// ddlCategory control. + /// rbsCategory control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.DropDownList ddlCategory; + protected global::System.Web.UI.WebControls.RadioButtonList rbsCategory; + + /// + /// searchBox control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox searchBox; + + /// + /// ProductSearchGo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ImageButton ProductSearchGo; + + /// + /// dropDownLanguages control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList dropDownLanguages; /// /// messageBox control. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryHeader.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryHeader.ascx.cs index dcf2e312..ccf5e1c6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryHeader.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryHeader.ascx.cs @@ -27,7 +27,8 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; -using WebsitePanel.Providers.WebAppGallery; +using System.Globalization; +using WebsitePanel.Providers.WebAppGallery; using WebsitePanel.Providers.ResultObjects; namespace WebsitePanel.Portal @@ -39,7 +40,7 @@ namespace WebsitePanel.Portal lblVersion.Text = application.Version; lblDescription.Text = application.Description; lblTitle.Text = application.Title; - lblSize.Text = application.Size; + lblSize.Text = application.InstallerFileSize.ToString(CultureInfo.InvariantCulture); imgLogo.ImageUrl = "~/DesktopModules/WebsitePanel/resizeimage.ashx?url=" + Server.UrlEncode(application.IconUrl) + "&width=200&height=200"; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx index 1542ca40..c95212b2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx @@ -63,10 +63,10 @@ <%-- database engine --%>
- +
- +
+ + + + +
parameters = GetParameters(); + string language = (string)Session["WebApplicationGaleryLanguage"]; // install application - ResultObject res = ES.Services.WebApplicationGallery.Install(PanelSecurity.PackageId, + StringResultObject res = ES.Services.WebApplicationGallery.Install(PanelSecurity.PackageId, PanelRequest.ApplicationID, ddlWebSite.SelectedItem.Text, directoryName.Text.Trim(), - parameters.ToArray()); + parameters.ToArray(), + language + ); + + InstallLogPanel.Visible = true; + InstallLog.InnerText = res.Value; // show message box with results - messageBox.ShowMessage(res, "WEB_APPLICATION_GALLERY_INSTALLED", "WebAppGallery"); + if (res.IsSuccess) + { + messageBox.ShowMessage(res, "WEB_APPLICATION_GALLERY_INSTALLED", "WebAppGallery"); + } + else + { + messageBox.ShowMessage(res, null, null); + } // toggle controls if there are no errors if (res.ErrorCodes.Count == 0) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx.designer.cs index 8a20e774..91c497d6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebApplicationGalleryParams.ascx.designer.cs @@ -1,4 +1,33 @@ -//------------------------------------------------------------------------------ +// 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. // @@ -175,22 +204,22 @@ namespace WebsitePanel.Portal { protected global::System.Web.UI.HtmlControls.HtmlGenericControl databaseEngineBlock; /// - /// locDatabaseGroup control. + /// locDatabaseType control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Localize locDatabaseGroup; + protected global::System.Web.UI.WebControls.Localize locDatabaseType; /// - /// locDatabaseGroupDescr control. + /// locDatabaseTypeDescr control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Localize locDatabaseGroupDescr; + protected global::System.Web.UI.WebControls.Localize locDatabaseTypeDescr; /// /// databaseEngines control. @@ -246,6 +275,24 @@ namespace WebsitePanel.Portal { /// protected global::System.Web.UI.WebControls.Repeater repParams; + /// + /// InstallLogPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel InstallLogPanel; + + /// + /// InstallLog control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl InstallLog; + /// /// btnInstall control. /// 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 b8d62b5d..9b102bd6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj @@ -336,15 +336,32 @@ Lync_Settings.ascx + ASPXCodeBehind + + + ServersEditWebPlatformInstaller.ascx ASPXCodeBehind Lync_Settings.ascx + + + ServersEditWebPlatformInstaller.ascx NotifyOverusedDatabases.ascx ASPXCodeBehind + + ASPXCodeBehind + + + EditFeedsList.ascx + ASPXCodeBehind + + + EditFeedsList.ascx + MonitoringPage.aspx ASPXCodeBehind @@ -3759,6 +3776,7 @@ + @@ -3779,6 +3797,7 @@ + @@ -4893,6 +4912,9 @@ Designer + + Designer + diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml index bf80d6dc..52edf879 100644 --- a/WebsitePanel/build.xml +++ b/WebsitePanel/build.xml @@ -1,5 +1,5 @@  - + 1.2.2.0 1.2.2.1 @@ -18,9 +18,9 @@ C:\Projects\WebsitePanel-1.2.1\$(BuildConfiguration) $(TrunkFolder)\Tools\Diff.exe - "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" -S (local)\SQLEXPRESS -E + "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe" -S (local)\SQLEXPRESS -E - "C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe" + "C:\Program Files (x86)\IIS\Microsoft Web Deploy V2\msdeploy.exe" WebsitePanel_build server=(local)\SQLEXPRESS;database=$(DataBaseName);Integrated Security=true;