// Spludlow Software // Copyright © Samuel P. Ludlow 2020 All Rights Reserved // Distributed under the terms of the GNU General Public License version 3 // Distributed WITHOUT ANY WARRANTY; without implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE // https://www.spludlow.co.uk/LICENCE.TXT // The Spludlow logo is a registered trademark of Samuel P. Ludlow and may not be used without permission // v1.14 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.ServiceModel; using System.ServiceModel.Channels; namespace Spludlow { /// /// Wrappers to all Admin Webservice calls with remote host overloads /// public class Admin { private static SpludlowWebServiceAdmin.AdminClient AdminClient = null; static Admin() { string address = Spludlow.Config.Get("Spludlow.AdminWebAddress", false); Spludlow.WebServices.SetServerCertificateValidation(); Binding binding; if (address.StartsWith("http://") == true) binding = new BasicHttpBinding(); else binding = new BasicHttpsBinding(); EndpointAddress endPoint = new EndpointAddress(address); AdminClient = new SpludlowWebServiceAdmin.AdminClient(binding, endPoint); } public static int UpdateWebServiceAdmin() { int pid = AdminClient.UpdateWebServiceAdmin(Spludlow.Security.SecurityKey); Spludlow.Log.Info("Spawned Process UpdateWebServiceAdmin, waiting for pid:" + pid); Spludlow.SpawnProcess.WaitForPid(pid); return pid; } public static void SetSecurityKey(string securityKey) { AdminClient.SetSecurityKey(Spludlow.Security.SecurityKey, securityKey); Spludlow.Log.Warning("Admin; Set Security Key"); } public static string WebQuery(string host, string applicationPoolName) { return (string)Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebQuery", new object[] { applicationPoolName }); } public static string WebQuery(string applicationPoolName) { return AdminClient.WebQuery(Spludlow.Security.SecurityKey, applicationPoolName); } public static DataSet WebQueryAll(string host) { return (DataSet)Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebQueryAll"); } public static DataSet WebQueryAll() { return AdminClient.WebQueryAll(Spludlow.Security.SecurityKey); } public static DataSet WebQueries(string host, string[] applicationPoolNames) { return (DataSet)Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebQueries", new object[] { applicationPoolNames }); } public static DataSet WebQueries(string[] applicationPoolNames) { return AdminClient.WebQueries(Spludlow.Security.SecurityKey, applicationPoolNames); } public static void WebRecycle(string host, string applicationPoolName) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebRecycle", new object[] { applicationPoolName }); } public static void WebRecycle(string applicationPoolName) { AdminClient.WebRecycle(Spludlow.Security.SecurityKey, applicationPoolName); } public static void WebRecycles(string host, string[] applicationPoolNames) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebRecycles", new object[] { applicationPoolNames }); } public static void WebRecycles(string[] applicationPoolNames) { AdminClient.WebRecycles(Spludlow.Security.SecurityKey, applicationPoolNames); } public static void WebStart(string host, string applicationPoolName) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebStart", new object[] { applicationPoolName }); } public static void WebStart(string applicationPoolName) { AdminClient.WebStart(Spludlow.Security.SecurityKey, applicationPoolName); } public static void WebStarts(string host, string[] applicationPoolNames) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebStarts", new object[] { applicationPoolNames }); } public static void WebStarts(string[] applicationPoolNames) { AdminClient.WebStarts(Spludlow.Security.SecurityKey, applicationPoolNames); } public static void WebStop(string host, string applicationPoolName) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebStop", new object[] { applicationPoolName }); } public static void WebStop(string applicationPoolName) { AdminClient.WebStop(Spludlow.Security.SecurityKey, applicationPoolName); } public static void WebStops(string host, string[] applicationPoolNames) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebStops", new object[] { applicationPoolNames }); } public static void WebStops(string[] applicationPoolNames) { AdminClient.WebStops(Spludlow.Security.SecurityKey, applicationPoolNames); } public static DataSet WebQuerySites(string host) { return (DataSet)Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "WebQuerySites"); } public static DataSet WebQuerySites() { return AdminClient.WebQuerySites(Spludlow.Security.SecurityKey); } public static string ServiceQuery(string host, string serviceName) { return (string)Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "ServiceQuery", new object[] { serviceName }); } public static string ServiceQuery(string serviceName) { return AdminClient.ServiceQuery(Spludlow.Security.SecurityKey, serviceName); } public static DataSet ServiceQueryAll(string host) { return (DataSet)Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "ServiceQueryAll"); } public static DataSet ServiceQueryAll() { return AdminClient.ServiceQueryAll(Spludlow.Security.SecurityKey); } public static DataSet ServiceQueries(string host, string[] serviceNames) { return (DataSet)Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "ServiceQueries", new object[] { serviceNames }); } public static DataSet ServiceQueries(string[] serviceNames) { return AdminClient.ServiceQueries(Spludlow.Security.SecurityKey, serviceNames); } public static void ServiceStart(string host, string serviceName) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "ServiceStart", new object[] { serviceName }); } public static void ServiceStart(string serviceName) { AdminClient.ServiceStart(Spludlow.Security.SecurityKey, serviceName); } public static void ServiceStarts(string host, string[] serviceNames) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "ServiceStarts", new object[] { serviceNames }); } public static void ServiceStarts(string[] serviceNames) { AdminClient.ServiceStarts(Spludlow.Security.SecurityKey, serviceNames); } public static void ServiceStop(string host, string serviceName) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "ServiceStop", new object[] { serviceName }); } public static void ServiceStop(string serviceName) { AdminClient.ServiceStop(Spludlow.Security.SecurityKey, serviceName); } public static void ServiceStops(string host, string[] serviceNames) { Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "ServiceStops", new object[] { serviceNames }); } public static void ServiceStops(string[] serviceNames) { AdminClient.ServiceStops(Spludlow.Security.SecurityKey, serviceNames); } public static DataSet QueryEventLogs(string host, int daysBack, bool includeEverything) { string[] encodedDataSet = (string[]) Spludlow.Call.Now(host, "Spludlow", "Spludlow.Admin", "QueryEventLogs", new object[] { daysBack, includeEverything }); return (DataSet)Spludlow.Parameters.DecodeParameter(encodedDataSet); } public static string[] QueryEventLogs(int daysBack, bool includeEverything) { return AdminClient.QueryEventLogs(Spludlow.Security.SecurityKey, daysBack, includeEverything); } } }