From a3272a6fd29fe2983c0ab63f47b639b6bc0da8b3 Mon Sep 17 00:00:00 2001
From: James Hannah <jhannah@bytemark.co.uk>
Date: Mon, 27 Mar 2017 10:49:37 +0100
Subject: First stab at allowing custom SSL expiry days

---
 lib/custodian/protocoltest/ssl.rb | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

(limited to 'lib/custodian/protocoltest')

diff --git a/lib/custodian/protocoltest/ssl.rb b/lib/custodian/protocoltest/ssl.rb
index c58a083..82754c6 100644
--- a/lib/custodian/protocoltest/ssl.rb
+++ b/lib/custodian/protocoltest/ssl.rb
@@ -25,13 +25,15 @@ class SSLCheck
   #
   # Takes one parameter -- the URL.
   #
-  def initialize(uri)
+  def initialize(uri, expiry_days = 14)
     raise ArgumentError, 'URI must be a string' unless uri.is_a?(String)
     @uri = URI.parse(uri)
 
     @domain = @uri.host
     @key = nil
 
+    @expiry_days = expiry_days
+
     @certificate = nil
     @certificate_store = nil
 
@@ -352,7 +354,7 @@ class SSLCheck
 
     days_until_expiry = (self.certificate.not_after.to_i - Time.now.to_i) / (24.0 * 3600).floor.to_i
 
-    if days_until_expiry > 14
+    if days_until_expiry > @expiry_days
       verbose "The certificate for #{self.domain} is valid until #{self.certificate.not_after}."
       return true
     else
@@ -440,6 +442,12 @@ module Custodian
         #
         @line = line
 
+        if @line =~ /and cannot expire within (\d+) days/ then
+          @expiry_days = $1.to_i
+        else
+          @expiry_days = 14
+        end
+
         #
         # Save the host
         #
@@ -448,6 +456,13 @@ module Custodian
       end
 
 
+      #
+      # Return the expiry period we'll test against
+      #
+      def expiry_days
+        @expiry_days
+      end
+
 
 
       #
@@ -499,7 +514,7 @@ module Custodian
           return Custodian::TestResult::TEST_SKIPPED
         end
 
-        s = SSLCheck.new(@host)
+        s = SSLCheck.new(@host,@expiry_days)
         result = s.verify
 
         if true == result
-- 
cgit v1.2.3