github-pages-health-check 1.7.4 → 1.8.0
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 031aea2c1fdce16fab8803dd54bbbb7d58273a6f
|
4
|
+
data.tar.gz: 15f224dee340c769356de80232c27e2117ff9af4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4cac9adfa7bf2d73c6003d90232ddea0bd56b5f84d00816e476b29f56167614133fdfca442a3235978758afde298501d084fdd5b85864dcd2cef6486fe9af357
|
7
|
+
data.tar.gz: ef4efb97d297f0640a391b9ef15e7750648dfc519b3807fbcf554c6adb15edec2b240e91bc96e56d3ec6dab7c6f8e5fc3a38597cb127b38286703862d35c4b7e
|
@@ -28,11 +28,12 @@ module GitHubPages
|
|
28
28
|
autoload :Checkable, "github-pages-health-check/checkable"
|
29
29
|
autoload :Domain, "github-pages-health-check/domain"
|
30
30
|
autoload :Repository, "github-pages-health-check/repository"
|
31
|
+
autoload :Resolver, "github-pages-health-check/resolver"
|
31
32
|
autoload :Site, "github-pages-health-check/site"
|
32
33
|
autoload :Printer, "github-pages-health-check/printer"
|
33
34
|
|
34
35
|
# DNS and HTTP timeout, in seconds
|
35
|
-
TIMEOUT =
|
36
|
+
TIMEOUT = 7
|
36
37
|
|
37
38
|
HUMAN_NAME = "GitHub Pages Health Check".freeze
|
38
39
|
URL = "https://github.com/github/pages-health-check".freeze
|
@@ -47,15 +47,10 @@ module GitHubPages
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def query(domain)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
resolver.query(domain, Dnsruby::Types::CAA).answer
|
55
|
-
rescue Dnsruby::ResolvError => e
|
56
|
-
@error = e
|
57
|
-
[]
|
58
|
-
end
|
50
|
+
GitHubPages::HealthCheck::Resolver.new(domain).query(Dnsruby::Types::CAA)
|
51
|
+
rescue Dnsruby::ResolvError, Dnsruby::ResolvTimeout => e
|
52
|
+
@error = e
|
53
|
+
[]
|
59
54
|
end
|
60
55
|
end
|
61
56
|
end
|
@@ -253,7 +253,7 @@ module GitHubPages
|
|
253
253
|
GitHubPages::HealthCheck.without_warnings do
|
254
254
|
next if host.nil?
|
255
255
|
REQUESTED_RECORD_TYPES
|
256
|
-
.map { |type| resolver.query(
|
256
|
+
.map { |type| resolver.query(type) }
|
257
257
|
.flatten.uniq
|
258
258
|
end
|
259
259
|
end
|
@@ -262,10 +262,7 @@ module GitHubPages
|
|
262
262
|
end
|
263
263
|
|
264
264
|
def resolver
|
265
|
-
@resolver ||=
|
266
|
-
@resolver.retry_times = 2
|
267
|
-
@resolver.query_timeout = 2
|
268
|
-
@resolver
|
265
|
+
@resolver ||= GitHubPages::HealthCheck::Resolver.new(absolute_domain)
|
269
266
|
end
|
270
267
|
|
271
268
|
# Are we even able to get the DNS record?
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GitHubPages
|
4
|
+
module HealthCheck
|
5
|
+
class Resolver
|
6
|
+
DEFAULT_RESOLVER_OPTIONS = {
|
7
|
+
:retry_times => 2,
|
8
|
+
:query_timeout => 5,
|
9
|
+
:dnssec => true
|
10
|
+
}.freeze
|
11
|
+
|
12
|
+
PREFERS_AUTHORITATIVE_ANSWER = [
|
13
|
+
Dnsruby::Types::A,
|
14
|
+
Dnsruby::Types::CAA,
|
15
|
+
Dnsruby::Types::MX
|
16
|
+
].freeze
|
17
|
+
|
18
|
+
class << self
|
19
|
+
def default_resolver
|
20
|
+
@default_resolver ||= Dnsruby::Resolver.new(DEFAULT_RESOLVER_OPTIONS)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
attr_reader :domain
|
25
|
+
|
26
|
+
def initialize(domain)
|
27
|
+
@domain = domain
|
28
|
+
end
|
29
|
+
|
30
|
+
# rubocop:disable Metrics/AbcSize
|
31
|
+
def query(type)
|
32
|
+
if PREFERS_AUTHORITATIVE_ANSWER.include?(type)
|
33
|
+
answer = authoritative_resolver.query(domain, type).answer
|
34
|
+
return answer unless answer.empty?
|
35
|
+
end
|
36
|
+
|
37
|
+
self.class.default_resolver.query(domain, type).answer
|
38
|
+
rescue Dnsruby::ResolvTimeout, Dnsruby::ResolvError
|
39
|
+
self.class.default_resolver.query(domain, type).answer
|
40
|
+
end
|
41
|
+
# rubocop:enable Metrics/AbcSize
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def authoritative_resolver
|
46
|
+
return self.class.default_resolver if nameservers.nil? || nameservers.empty?
|
47
|
+
|
48
|
+
Dnsruby::Resolver.new(DEFAULT_RESOLVER_OPTIONS.merge(:nameservers => nameservers))
|
49
|
+
end
|
50
|
+
|
51
|
+
def nameservers
|
52
|
+
@nameservers ||= begin
|
53
|
+
self.class.default_resolver.query(domain, Dnsruby::Types::NS).answer.map do |rr|
|
54
|
+
next rr.nsdname.to_s if rr.type == Dnsruby::Types::NS
|
55
|
+
end.compact
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github-pages-health-check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- lib/github-pages-health-check/errors/not_served_by_pages_error.rb
|
202
202
|
- lib/github-pages-health-check/printer.rb
|
203
203
|
- lib/github-pages-health-check/repository.rb
|
204
|
+
- lib/github-pages-health-check/resolver.rb
|
204
205
|
- lib/github-pages-health-check/site.rb
|
205
206
|
- lib/github-pages-health-check/version.rb
|
206
207
|
- script/bootstrap
|