static TimeSpan IsCertificateExpiring(CertInformation cert, ILogger log) { TimeSpan expirationTime = DateTime.Parse(cert.CertExpiration) - DateTime.Now; TimeSpan test = DateTime.Now - DateTime.Parse(cert.CertExpiration); return(expirationTime); }
public static async Task <CertInformation> GetCertInformation(string urlValue, CertInformation cert, ILogger log) { X509Certificate2 certObject = await GetServerCertificateAsync("https://" + urlValue); cert.URL = urlValue; cert.CertExpiration = certObject.GetExpirationDateString(); cert.ThumbPrint = certObject.Thumbprint; cert.ValidFromDate = certObject.GetEffectiveDateString(); cert.RawCert = certObject.RawData; cert.LastUpdateTime = DateTime.Now; log.LogInformation($"Cert for {cert.URL} Expiration: {certObject.GetExpirationDateString()}"); cert.TimeTilExpiration = IsCertificateExpiring(cert, log); return(cert); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { //Declare Variables CertInformation cert = new CertInformation(); IList <CertInformation> certList = new List <CertInformation>(); IList <string> url = new List <string>(); log.LogInformation("C# HTTP trigger function processed a request."); var requestBodyJson = await new StreamReader(req.Body).ReadToEndAsync(); try { //Check if body contains URLS to check if (requestBodyJson != null) { List <TempJsonBody> tempBody = System.Text.Json.JsonSerializer.Deserialize <List <TempJsonBody> >(requestBodyJson); log.LogInformation($"Count: {tempBody.Count}"); foreach (TempJsonBody temp in tempBody) { url.Add(temp.Name); } } //Else Check the query string for URLs to check else if (req.Query["url"].ToString() != null) { url[0] = req.Query["url"]; } else { return(new BadRequestObjectResult("No value past")); } } catch (Exception e) { log.LogError($"Exception occurred: {e}"); return(new BadRequestObjectResult($"Failed to get parse cert from header or body with exception{e}")); } //Logic for checking if URL is the correct format // //Foreach URL try to get Cert information foreach (string urlValue in url) { try { cert = await GetCertInformation(urlValue, cert, log); if (cert.TimeTilExpiration.TotalSeconds > 0) { cert.IsExpired = false; log.LogInformation($"Cert for {cert.URL} expires in {cert.TimeTilExpiration.TotalDays} days."); } else { cert.IsExpired = true; log.LogInformation($"Cert for {cert.URL} expired {cert.TimeTilExpiration.TotalDays} days ago."); } certList.Add(cert); } catch (Exception e) { log.LogError($"Exception Occurred: {e}"); return(new BadRequestObjectResult($"Failed to get parse cert with exception{e}")); } } //Convert to JSON string jsonString = System.Text.Json.JsonSerializer.Serialize(certList); return(new OkObjectResult(jsonString)); }