コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }