ssl_expiry 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7fdb65705e9581b535c9f95c49af80e877986f5c81d3c04fec43461b0cabb996
4
- data.tar.gz: 5a845d4782168e0b5dcaaa3a5e773dbd5c9642e5a567592bcf7b7301efc4b66a
3
+ metadata.gz: 96cbba1150d51acb0a1f4d27f9634e3b7f92f2ea4fa4f41bae2e848484a0c078
4
+ data.tar.gz: 5c0cb052de1b6da7e3881dcbc7aafafa048e991404c9c535f9a401c9248e3c85
5
5
  SHA512:
6
- metadata.gz: ecd76b1f645446801da8a509c38152dfe3b6f8446f035b38090a3afc5b7e552fa4480b91d27632f943e6b6c97146c5f167a509569fe4ce57ddb66b0396dd3af8
7
- data.tar.gz: 49d2ce2be9e83d3884f68de032ed23b186ea319525157444851f81ef8fb6e43631b150e750821d4f2ee739467ac35419791c6ea73c08289811fb75d6219c5f4e
6
+ metadata.gz: c86634f01a0cb849634e2ba8b5d0eac5f931f8193a928a1d6584f926679e6d49b6772f3af77e3f161bd38bc9d2ee5a29c9436dc0030c2d8b1cdf7983851874f9
7
+ data.tar.gz: 7038c81c4247218ae59484d62e853b892135ae52ec2ef2e66d1f207c9ec55dd250dcbe93f0facf1bbbdde89604c1e88a444574baf25bcbd8619f06f5d306e11e
data/.rubocop.yml CHANGED
@@ -1,23 +1,23 @@
1
1
  Layout/IndentationWidth:
2
2
  Width: 4
3
3
 
4
- Metrics/AbcSize:
5
- Max: 50
4
+ Layout/LineLength:
5
+ Enabled: false
6
6
 
7
- Metrics/LineLength:
7
+ Metrics/AbcSize:
8
8
  Enabled: false
9
9
 
10
10
  Metrics/BlockLength:
11
- Max: 40
11
+ Enabled: false
12
12
 
13
13
  Metrics/CyclomaticComplexity:
14
- Max: 20
14
+ Enabled: false
15
15
 
16
16
  Metrics/MethodLength:
17
- Max: 60
17
+ Enabled: false
18
18
 
19
19
  Metrics/PerceivedComplexity:
20
- Max: 20
20
+ Enabled: false
21
21
 
22
22
  Style/GlobalVars:
23
23
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 1.0.3 (February 7, 2020)
2
+
3
+ IMPROVEMENTS:
4
+
5
+ * Allow the specification of a custom port. ([@TGWolf][])
6
+
1
7
  ## 1.0.2 (June 28, 2019)
2
8
 
3
9
  IMPROVEMENTS:
data/README.md CHANGED
@@ -72,6 +72,14 @@ There is a command line tool included with this gem.
72
72
  ----------------------------------------------------------------------------------------------------
73
73
  ```
74
74
 
75
+ ### Custom port
76
+
77
+ If you want to check an SSL expiry on a custom port you can do this by adding the port to the end of the domain.
78
+
79
+ ```
80
+ check-ssl -d antiphoton.com:8080
81
+ ```
82
+
75
83
  ## Development
76
84
 
77
85
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/lib/ssl_expiry.rb CHANGED
@@ -14,18 +14,25 @@ module SSLExpiry
14
14
  # Docs to follow
15
15
  #
16
16
  class SSLExpiry
17
- def self.get_cert(domain_name, verify = false)
17
+ def self.get_cert(domain_name, supplied_port = nil, verify = false)
18
18
  begin
19
19
  cert = nil
20
20
 
21
21
  uri = URI::HTTPS.build(host: domain_name)
22
- http = Net::HTTP.new(uri.host, uri.port)
22
+
23
+ port = if supplied_port.nil?
24
+ uri.port
25
+ else
26
+ supplied_port
27
+ end
28
+
29
+ http = Net::HTTP.new(uri.host, port)
23
30
 
24
31
  http.use_ssl = true
25
32
  http.verify_mode = verify ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
26
- http.open_timeout = 10
27
- http.read_timeout = 10
28
- http.ssl_timeout = 10
33
+ http.open_timeout = 5
34
+ http.read_timeout = 5
35
+ http.ssl_timeout = 5
29
36
 
30
37
  http.start do |h|
31
38
  cert = h.peer_cert
@@ -48,7 +55,13 @@ module SSLExpiry
48
55
 
49
56
  domains.each do |domain|
50
57
  begin
51
- cert = get_cert(domain)
58
+ parts = domain.split(':')
59
+
60
+ cert = if parts.length == 2
61
+ get_cert(parts[0], parts[1])
62
+ else
63
+ get_cert(parts[0])
64
+ end
52
65
  rescue SSLError => e
53
66
  results[domain] = { 'status' => 400, 'error' => e.message }
54
67
  next
@@ -72,7 +85,7 @@ module SSLExpiry
72
85
  delim = '-' * width
73
86
 
74
87
  puts(delim)
75
- printf(" %-30s | %s\n", 'Domain', 'Status')
88
+ printf(" %-30<header1>s | %<header2>s\n", header1: 'Domain', header2: 'Status')
76
89
  puts(delim)
77
90
  results.each do |domain, details|
78
91
  status = if details['status'] == 400
@@ -80,7 +93,7 @@ module SSLExpiry
80
93
  else
81
94
  format('expires on %<expires_in>s (in %<expires_on>s days) [CN=%<common_name>s]', expires_in: details['expires_on'], expires_on: details['expires_in'], common_name: details['common_name'])
82
95
  end
83
- printf(" %-30s | %s\n", domain, status)
96
+ printf(" %-30<domain>s | %<status>s\n", domain: domain, status: status)
84
97
  end
85
98
  puts(delim)
86
99
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SSLExpiry
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.3'
5
5
  end
data/testing/check-ssl ADDED
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+
6
+ require 'optparse'
7
+ require 'ssl_expiry'
8
+
9
+ # -------------------------------------------------------------------------------- #
10
+ # Process Arguments #
11
+ # -------------------------------------------------------------------------------- #
12
+ # This function will process the input from the command line and work out what it #
13
+ # is that the user wants to see. #
14
+ # #
15
+ # This is the main processing function where all the processing logic is handled. #
16
+ # -------------------------------------------------------------------------------- #
17
+
18
+ def process_arguments
19
+ options = {}
20
+ # Enforce the presence of
21
+ mandatory = %I[domain]
22
+
23
+ optparse = OptionParser.new do |opts|
24
+ opts.banner = "Usage: #{$PROGRAM_NAME}"
25
+
26
+ opts.on('-h', '--help', 'Display this screen') do
27
+ puts opts
28
+ exit(1)
29
+ end
30
+ opts.on('-d', '--domain string', 'The domain name to check') do |domain|
31
+ options[:domain] = domain
32
+ end
33
+ end
34
+
35
+ begin
36
+ optparse.parse!
37
+ options[:message] = ARGF.read unless STDIN.tty? # override message parameter if data is piped in
38
+ missing = mandatory.select { |param| options[param].nil? }
39
+ raise OptionParser::MissingArgument.new(missing.join(', ')) unless missing.empty?
40
+ rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e
41
+ puts e.to_s
42
+ puts optparse
43
+ exit
44
+ end
45
+
46
+ results = SSLExpiry::SSLExpiry.check_certificates(options[:domain])
47
+ SSLExpiry::SSLExpiry.display_results(results)
48
+ end
49
+
50
+ # -------------------------------------------------------------------------------- #
51
+ # Main() #
52
+ # -------------------------------------------------------------------------------- #
53
+ # The main function where all of the heavy lifting and script config is done. #
54
+ # -------------------------------------------------------------------------------- #
55
+
56
+ def main
57
+ process_arguments
58
+ end
59
+
60
+ main
61
+
62
+ # -------------------------------------------------------------------------------- #
63
+ # End of Script #
64
+ # -------------------------------------------------------------------------------- #
65
+ # This is the end - nothing more to see here. #
66
+ # -------------------------------------------------------------------------------- #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ssl_expiry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Gurney aka Wolf
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-28 00:00:00.000000000 Z
11
+ date: 2020-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -142,6 +142,7 @@ files:
142
142
  - spec/spec_helper.rb
143
143
  - spec/ssl_expiry_spec.rb
144
144
  - ssl_expiry.gemspec
145
+ - testing/check-ssl
145
146
  homepage: https://github.com/AntiPhotonltd/ssl_expiry
146
147
  licenses:
147
148
  - MIT
@@ -161,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
162
  - !ruby/object:Gem::Version
162
163
  version: '0'
163
164
  requirements: []
164
- rubygems_version: 3.0.2
165
+ rubygems_version: 3.1.2
165
166
  signing_key:
166
167
  specification_version: 4
167
168
  summary: A simple gem checking for ssl expiry.