static void Main(string[] args) { services = new ServiceCollection(); //// Startup.cs finally :) Startup startup = new Startup(); startup.ConfigureServices(services); serviceProvider = services.BuildServiceProvider(); var idsvrSetting = new IdentityServerSetting(); DataTable workTable = new DataTable("Results"); var Configuration = serviceProvider.GetService <IConfigurationRoot>(); Configuration.GetSection("IdentityServerSetting").Bind(idsvrSetting); Configuration.GetSection("Settings").Bind(settings); lstServerCheck = Configuration.GetSection("ServerChecks").Get <List <ServerCheck> >(); try { CallHealthCheck(idsvrSetting).Wait(); } catch (Exception ex) { Console.WriteLine($"There was an exception: {ex.ToString()}"); } Console.WriteLine("All servers processed."); Console.ReadLine(); }
public static async Task <string> CallHealthCheck(IdentityServerSetting idsvrcSetting) { //specify to use TLS 1.2 as default connection System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback += (o, c, ch, er) => { return(true); }; var proxy = new WebProxy() { Address = new Uri("http://proxy.aetna.com:9119"), UseDefaultCredentials = false, // *** These creds are given to the proxy server, not the web server *** Credentials = new NetworkCredential(settings.ProxyUserName, settings.ProxyPwd) }; var httpClientHandler = new HttpClientHandler() { // Proxy = proxy, ServerCertificateCustomValidationCallback = (o, c, ch, er) => { return(true); } }; //var httpClientFactory = serviceProvider.GetService<IHttpClientFactory>(); // get the http client //var client = new HttpClient(); var client = new HttpClient(handler: httpClientHandler, disposeHandler: true); // discover endpoints from metadata var oidcDiscoveryResult = await DiscoveryClient.GetAsync(idsvrcSetting.IdentityServerUrl); if (oidcDiscoveryResult.IsError) { Console.WriteLine(oidcDiscoveryResult.Error); return(oidcDiscoveryResult.Error); } //Console.WriteLine(tokenResponse.Json); //Console.WriteLine("\n\n"); Dictionary <string, Result> allresults = new Dictionary <string, Result>(); int i = 0; // http://localhost:19641/api/HealthCheck/fileinfo foreach (ServerCheck chk in lstServerCheck) { if (chk.Type == "UMPortalWeb") { // request token var tokenClient = new TokenClient(oidcDiscoveryResult.TokenEndpoint, idsvrcSetting.APIClientId, idsvrcSetting.APIClientSecret); var tokenResponse = await tokenClient.RequestClientCredentialsAsync(idsvrcSetting.ResourceAPIName); if (tokenResponse.IsError) { Console.WriteLine(tokenResponse.Error); throw new HttpRequestException(tokenResponse.Error); } else { client.SetBearerToken(tokenResponse.AccessToken); } } if (chk.Type == "AAWebServices") { client.SetBasicAuthentication(settings.AAWebservicesUserName, settings.AAWebservicesPwd); } //new datatable for each server; var tableResults = new DataTable(); // Create the table definition tableResults.Columns.Add("Server"); foreach (string strdll in chk.DLLFiles) { tableResults.Columns.Add(new DataColumn(strdll)); } foreach (string strconfig in chk.ConfigFiles) { tableResults.Columns.Add(new DataColumn(strconfig)); } foreach (string server in chk.Servers) { var row = tableResults.NewRow(); row["Server"] = server; int colnum = 0; List <string> lstResults = new List <string>(); //Get the dll file info for all servers at the same time string infoUrl = GetFileInfoUrl(server, chk.DLLFiles, chk.Type); try { var response = await client.GetAsync(infoUrl); if (!response.IsSuccessStatusCode) { Console.WriteLine(response.StatusCode); throw new HttpRequestException(response.StatusCode.ToString()); } else { var content = await response.Content.ReadAsStringAsync(); JArray result = JArray.Parse(content); foreach (JObject item in result) { if (chk.Type == "UMPortal" || chk.Type == "UMPortalWeb") { string name = item.GetValue("fileName").ToString(); string creationTimeUTC = item.GetValue("creationTimeUTC").ToString(); string lastModifiedTimeUTC = item.GetValue("lastModifiedTimeUTC").ToString(); string assembleName = item.GetValue("assemblyName").ToString(); row[++colnum] = name + ":" + lastModifiedTimeUTC + ":" + assembleName; } else { string name = item.GetValue("FileName").ToString(); string creationTimeUTC = item.GetValue("CreationTimeUTC").ToString(); string lastModifiedTimeUTC = item.GetValue("LastModifiedTimeUTC").ToString(); string assembleName = item.GetValue("AssemblyName").ToString(); row[++colnum] = name + ":" + lastModifiedTimeUTC + ":" + assembleName; } } // Console.WriteLine(content); } } catch (Exception ex) { Console.WriteLine(ex.Message); } //Get the config files in the for loop try { if (chk.ConfigFiles.Length > 0) { Dictionary <string, string> lstconfig = new Dictionary <string, string>(); foreach (string file in chk.ConfigFiles) { string fileUrl = GetFileUrl(server, file, chk.Type); var responseFile = await client.GetAsync(fileUrl); if (!responseFile.IsSuccessStatusCode) { Console.WriteLine(responseFile.StatusCode); throw new HttpRequestException(responseFile.StatusCode.ToString()); } else { var content = await responseFile.Content.ReadAsStringAsync(); row[++colnum] = content; // Console.WriteLine(content); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } tableResults.Rows.Add(row); } ExportDatatableToHtml(tableResults, chk.Name); } return(""); }