github-pages-health-check 1.3.5 → 1.3.6
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 +4 -4
- data/.rubocop.yml +15 -21
- data/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/Gemfile +1 -0
- data/LICENSE.md +1 -1
- data/github-pages-health-check.gemspec +8 -7
- data/lib/github-pages-health-check.rb +1 -0
- data/lib/github-pages-health-check/cdn.rb +1 -0
- data/lib/github-pages-health-check/cdns/cloudflare.rb +1 -0
- data/lib/github-pages-health-check/cdns/fastly.rb +2 -1
- data/lib/github-pages-health-check/checkable.rb +1 -0
- data/lib/github-pages-health-check/domain.rb +19 -19
- data/lib/github-pages-health-check/error.rb +1 -0
- data/lib/github-pages-health-check/errors.rb +1 -0
- data/lib/github-pages-health-check/errors/build_error.rb +1 -0
- data/lib/github-pages-health-check/errors/deprecated_ip_error.rb +1 -0
- data/lib/github-pages-health-check/errors/invalid_a_record_error.rb +1 -0
- data/lib/github-pages-health-check/errors/invalid_cname_error.rb +1 -0
- data/lib/github-pages-health-check/errors/invalid_dns_error.rb +1 -0
- data/lib/github-pages-health-check/errors/invalid_domain_error.rb +1 -0
- data/lib/github-pages-health-check/errors/invalid_repository_error.rb +1 -0
- data/lib/github-pages-health-check/errors/missing_access_token_error.rb +1 -0
- data/lib/github-pages-health-check/errors/not_served_by_pages_error.rb +1 -0
- data/lib/github-pages-health-check/printer.rb +1 -0
- data/lib/github-pages-health-check/repository.rb +3 -2
- data/lib/github-pages-health-check/site.rb +1 -0
- data/lib/github-pages-health-check/version.rb +2 -1
- data/script/check +1 -0
- data/script/update-cdn-ips +3 -2
- metadata +37 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4aa4545c8ebed2a2b755a25d350d800f5f65145b
|
4
|
+
data.tar.gz: f5a22041fd0af5fb9e672469f634bf9f76e7d141
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a8450a32356a7c697f16c6f502e91d1efea845cd6f5d61f679b2a29b5243488173f4c41b5f51cdc04285eb424f50e8f47ff84dafaa65d9eea795e196c104794
|
7
|
+
data.tar.gz: f4ae592f51a9ac7f09cee77f7e5d0cc1bd5ac3a62fe78e6d2abf5a48d5dab8025b238998bbefd7b94ffa20c98307dd75971322f1b992847b48f975c1c1d48cdb
|
data/.rubocop.yml
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
# https://github.com/bbatsov/rubocop/blob/master/config/default.yml
|
15
15
|
#
|
16
16
|
# If you disable a check, document why.
|
17
|
+
#
|
17
18
|
|
18
19
|
AllCops:
|
19
20
|
Exclude:
|
@@ -25,17 +26,9 @@ AllCops:
|
|
25
26
|
Lint/EndAlignment:
|
26
27
|
Severity: error
|
27
28
|
|
28
|
-
Lint/RescueException:
|
29
|
-
Exclude:
|
30
|
-
- lib/pages_jekyll.rb
|
31
|
-
|
32
29
|
Lint/UnreachableCode:
|
33
30
|
Severity: error
|
34
31
|
|
35
|
-
Lint/AmbiguousRegexpLiteral:
|
36
|
-
Exclude:
|
37
|
-
- 'features/step_definitions/pages_steps.rb'
|
38
|
-
|
39
32
|
Style/StringLiterals:
|
40
33
|
EnforcedStyle: double_quotes
|
41
34
|
Severity: error
|
@@ -47,10 +40,10 @@ Style/HashSyntax:
|
|
47
40
|
EnforcedStyle: hash_rockets
|
48
41
|
Severity: error
|
49
42
|
|
50
|
-
|
43
|
+
Layout/AlignHash:
|
51
44
|
SupportedLastArgumentHashStyles: always_ignore
|
52
45
|
|
53
|
-
|
46
|
+
Layout/AlignParameters:
|
54
47
|
Enabled: false # This is usually true, but we often want to roll back to
|
55
48
|
# the start of a line.
|
56
49
|
|
@@ -75,14 +68,14 @@ Metrics/LineLength:
|
|
75
68
|
|
76
69
|
Metrics/BlockLength:
|
77
70
|
Enabled: false
|
78
|
-
|
71
|
+
|
79
72
|
Style/MultilineTernaryOperator:
|
80
73
|
Severity: error
|
81
74
|
|
82
75
|
Style/AndOr:
|
83
76
|
Severity: error
|
84
77
|
|
85
|
-
|
78
|
+
Layout/IndentationWidth:
|
86
79
|
Severity: error
|
87
80
|
|
88
81
|
Metrics/MethodLength:
|
@@ -101,20 +94,20 @@ Style/RedundantSelf:
|
|
101
94
|
Style/IfUnlessModifier:
|
102
95
|
Enabled: false
|
103
96
|
|
104
|
-
|
97
|
+
Naming/FileName: #Rubocop doesn't like the Git*H*ub namespace
|
105
98
|
Enabled: false
|
106
99
|
|
107
100
|
Metrics/ParameterLists: { Max: 4 }
|
108
101
|
Metrics/AbcSize: { Max: 20 }
|
109
102
|
|
110
|
-
|
103
|
+
Layout/IndentHash: { EnforcedStyle: consistent }
|
104
|
+
Layout/MultilineMethodCallIndentation: { EnforcedStyle: indented }
|
105
|
+
Layout/MultilineOperationIndentation: { EnforcedStyle: indented }
|
106
|
+
Layout/FirstParameterIndentation: { EnforcedStyle: consistent }
|
107
|
+
Layout/IndentArray: { EnforcedStyle: consistent }
|
108
|
+
Layout/ExtraSpacing: { AllowForAlignment: true }
|
111
109
|
Style/SignalException: { EnforcedStyle: only_raise }
|
112
|
-
Style/MultilineMethodCallIndentation: { EnforcedStyle: indented }
|
113
|
-
Style/MultilineOperationIndentation: { EnforcedStyle: indented }
|
114
|
-
Style/FirstParameterIndentation: { EnforcedStyle: consistent }
|
115
110
|
Style/StringLiterals: { EnforcedStyle: double_quotes }
|
116
|
-
Style/IndentArray: { EnforcedStyle: consistent }
|
117
|
-
Style/ExtraSpacing: { AllowForAlignment: true }
|
118
111
|
|
119
112
|
Style/PercentLiteralDelimiters:
|
120
113
|
PreferredDelimiters:
|
@@ -153,5 +146,6 @@ Metrics/AbcSize:
|
|
153
146
|
Style/DoubleNegation:
|
154
147
|
Enabled: false
|
155
148
|
|
156
|
-
|
157
|
-
|
149
|
+
Layout/EmptyLineAfterMagicComment:
|
150
|
+
Exclude:
|
151
|
+
- script/*
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4.2
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/LICENSE.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require File.expand_path("../lib/github-pages-health-check/version", __FILE__)
|
3
4
|
|
4
5
|
Gem::Specification.new do |s|
|
5
|
-
s.required_ruby_version = ">=
|
6
|
+
s.required_ruby_version = ">= 2.2.0"
|
6
7
|
|
7
8
|
s.name = "github-pages-health-check"
|
8
9
|
s.version = GitHubPages::HealthCheck::VERSION
|
@@ -15,16 +16,16 @@ Gem::Specification.new do |s|
|
|
15
16
|
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
17
|
s.require_paths = ["lib"]
|
17
18
|
|
19
|
+
s.add_dependency("addressable", "~> 2.3")
|
18
20
|
s.add_dependency("net-dns", "~> 0.8")
|
21
|
+
s.add_dependency("octokit", "~> 4.0")
|
19
22
|
s.add_dependency("public_suffix", "~> 2.0")
|
20
23
|
s.add_dependency("typhoeus", "~> 0.7")
|
21
|
-
s.add_dependency("addressable", "~> 2.3")
|
22
|
-
s.add_dependency("octokit", "~> 4.0")
|
23
24
|
|
24
|
-
s.add_development_dependency("
|
25
|
-
s.add_development_dependency("pry", "~> 0.10")
|
25
|
+
s.add_development_dependency("dotenv", "~> 1.0")
|
26
26
|
s.add_development_dependency("gem-release", "~> 0.7")
|
27
|
+
s.add_development_dependency("pry", "~> 0.10")
|
28
|
+
s.add_development_dependency("rspec", "~> 3.0")
|
29
|
+
s.add_development_dependency("rubocop", "~> 0.52")
|
27
30
|
s.add_development_dependency("webmock", "~> 1.21")
|
28
|
-
s.add_development_dependency("dotenv", "~> 1.0")
|
29
|
-
s.add_development_dependency("rubocop", "~> 0.40")
|
30
31
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module GitHubPages
|
3
4
|
module HealthCheck
|
4
5
|
# Instance of the Fastly CDN for checking IP ownership
|
@@ -10,7 +11,7 @@ module GitHubPages
|
|
10
11
|
github.map.fastly.net.
|
11
12
|
sni.github.map.fastly.net
|
12
13
|
sni.github.map.fastly.net.
|
13
|
-
)
|
14
|
+
).freeze
|
14
15
|
end
|
15
16
|
end
|
16
17
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module GitHubPages
|
3
4
|
module HealthCheck
|
4
5
|
class Domain < Checkable
|
@@ -70,13 +71,13 @@ module GitHubPages
|
|
70
71
|
192.30.252.154
|
71
72
|
).freeze
|
72
73
|
|
73
|
-
HASH_METHODS = [
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
74
|
+
HASH_METHODS = %i[
|
75
|
+
host uri dns_resolves? proxied? cloudflare_ip? fastly_ip?
|
76
|
+
old_ip_address? a_record? cname_record? mx_records_present?
|
77
|
+
valid_domain? apex_domain? should_be_a_record?
|
78
|
+
cname_to_github_user_domain? cname_to_pages_dot_github_dot_com?
|
79
|
+
cname_to_fastly? pointed_to_github_pages_ip? pages_domain?
|
80
|
+
served_by_pages? valid_domain? https? enforces_https? https_error
|
80
81
|
].freeze
|
81
82
|
|
82
83
|
def initialize(host)
|
@@ -131,16 +132,12 @@ module GitHubPages
|
|
131
132
|
return @apex_domain if defined?(@apex_domain)
|
132
133
|
return unless valid_domain?
|
133
134
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
[]
|
141
|
-
end
|
142
|
-
|
143
|
-
@apex_domain = answers.any?
|
135
|
+
# PublicSuffix.domain pulls out the apex-level domain name.
|
136
|
+
# E.g. PublicSuffix.domain("techblog.netflix.com") # => "netflix.com"
|
137
|
+
# It's aware of multi-step top-level domain names:
|
138
|
+
# E.g. PublicSuffix.domain("blog.digital.gov.uk") # => "digital.gov.uk"
|
139
|
+
# For apex-level domain names, DNS providers do not support CNAME records.
|
140
|
+
PublicSuffix.domain(host) == host
|
144
141
|
end
|
145
142
|
|
146
143
|
# Should the domain be an apex record?
|
@@ -389,8 +386,11 @@ module GitHubPages
|
|
389
386
|
# Does the domain resolve to a CDN-owned IP
|
390
387
|
def cdn_ip?(cdn)
|
391
388
|
return unless dns?
|
392
|
-
|
393
|
-
|
389
|
+
|
390
|
+
a_records = dns.select { |answer| answer.class == Net::DNS::RR::A }
|
391
|
+
return false if !a_records || a_records.empty?
|
392
|
+
|
393
|
+
a_records.all? do |answer|
|
394
394
|
cdn.controls_ip?(answer.address)
|
395
395
|
end
|
396
396
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module GitHubPages
|
3
4
|
module HealthCheck
|
4
5
|
class Repository < Checkable
|
@@ -6,8 +7,8 @@ module GitHubPages
|
|
6
7
|
|
7
8
|
REPO_REGEX = %r{\A[a-z0-9_\-]+/[a-z0-9_\-\.]+\z}i
|
8
9
|
|
9
|
-
HASH_METHODS = [
|
10
|
-
|
10
|
+
HASH_METHODS = %i[
|
11
|
+
name_with_owner built? last_built build_duration build_error
|
11
12
|
].freeze
|
12
13
|
|
13
14
|
def initialize(name_with_owner, access_token: nil)
|
data/script/check
CHANGED
data/script/update-cdn-ips
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
|
-
#
|
4
|
-
#
|
3
|
+
#
|
4
|
+
# Usage script/update-ips
|
5
|
+
# updates config/cloudflare-ips.txt and config/fastly-ips.txt
|
5
6
|
|
6
7
|
require "open-uri"
|
7
8
|
require "json"
|
metadata
CHANGED
@@ -1,169 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github-pages-health-check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: addressable
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: net-dns
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: octokit
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
47
|
+
version: '4.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0
|
54
|
+
version: '4.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: public_suffix
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '2.
|
61
|
+
version: '2.0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '2.
|
68
|
+
version: '2.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: typhoeus
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0.7'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0.7'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: dotenv
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '1.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '1.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: gem-release
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
103
|
+
version: '0.7'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
110
|
+
version: '0.7'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: pry
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0.
|
117
|
+
version: '0.10'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0.
|
124
|
+
version: '0.10'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: rspec
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
131
|
+
version: '3.0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
138
|
+
version: '3.0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: rubocop
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
145
|
+
version: '0.52'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
152
|
+
version: '0.52'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: webmock
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
159
|
+
version: '1.21'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
166
|
+
version: '1.21'
|
167
167
|
description: Checks your GitHub Pages site for commons DNS configuration issues.
|
168
168
|
email: support@github.com
|
169
169
|
executables: []
|
@@ -222,7 +222,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
222
|
requirements:
|
223
223
|
- - ">="
|
224
224
|
- !ruby/object:Gem::Version
|
225
|
-
version:
|
225
|
+
version: 2.2.0
|
226
226
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
227
|
requirements:
|
228
228
|
- - ">="
|
@@ -230,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
230
|
version: '0'
|
231
231
|
requirements: []
|
232
232
|
rubyforge_project:
|
233
|
-
rubygems_version: 2.
|
233
|
+
rubygems_version: 2.6.13
|
234
234
|
signing_key:
|
235
235
|
specification_version: 4
|
236
236
|
summary: Checks your GitHub Pages site for commons DNS configuration issues
|