cloudflare-rails 0.6.0 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36383a493815fd8b730a9df1ad3c15971d093c05a01ed49b367f8e1cbec8ebfb
4
- data.tar.gz: 6d63be05883d0c1e03d8327662f974b93fb96895de1cf90443ead603641a29a4
3
+ metadata.gz: a0cb8e2ebd449505c8b3afc141a8b91ea4f05bee6b284969eaf1c026d6aa100c
4
+ data.tar.gz: b000033b1f6467bb7ec924d430e458ccb2105c4c95f4624bc7a44968b1abfc62
5
5
  SHA512:
6
- metadata.gz: ca4f1e277840208cb02a27f1e79053761e636d7d7ca31f7aebe75d9714cca8aac22233cc30bbe20c0d29b1fc8ed44413cf71ea7f3e77684fb7ecfdeebfeb26e1
7
- data.tar.gz: 28b93626c352d0dab043dd8cd90dc8ecc2f227cb3a98686ffa167c5c3741ec44e840038a108602763197dd7c003b857ae01d8b923da4f7e6c619b442e02511fe
6
+ metadata.gz: b61da727d6ef432af1beaf5871bc266eb0b436b10ba236b6cf022f8c4cbf74fe81f28d0dd91c58581abc5cbb879048696358084132a2850ec14a9e25c33d0d77
7
+ data.tar.gz: f5eab7c1665b3651779d5a422dbaef74d8f3daa627a55d2e8d859590bb209008fde96e5e6804cce32a78da7238dc7a8e7921ad7f77923250ed13c80966bf7ac0
@@ -7,7 +7,7 @@ jobs:
7
7
  build:
8
8
  docker:
9
9
  # specify the version you desire here
10
- - image: circleci/ruby:2.6.3
10
+ - image: circleci/ruby:2.7.0
11
11
 
12
12
  working_directory: ~/repo
13
13
 
@@ -0,0 +1,8 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "13:00"
8
+ open-pull-requests-limit: 10
data/.rspec CHANGED
@@ -1,4 +1,4 @@
1
1
  --format d
2
2
  --color
3
3
  --format RspecJunitFormatter
4
- --out tmp/rspec/rspec-<%= File.basename ENV['BUNDLE_GEMFILE'] %><%= ENV["RACK_ATTACK"] ? '-rack-attack' : '' %>.xml
4
+ --out tmp/rspec/rspec-<%= File.basename ENV['BUNDLE_GEMFILE'] %><%= ENV["RACK_ATTACK"] ? "-rack-attack-#{ENV["RACK_ATTACK"]}" : '' %>.xml
data/Appraisals CHANGED
@@ -1,15 +1,15 @@
1
1
  appraise "rails-5.0" do
2
- gem "rails", "5.0"
2
+ gem "rails", "~> 5.0.0"
3
3
  end
4
4
 
5
5
  appraise "rails-5.1" do
6
- gem "rails", "5.1"
6
+ gem "rails", "~> 5.1.0"
7
7
  end
8
8
 
9
9
  appraise "rails-5.2" do
10
- gem "rails", "5.2"
10
+ gem "rails", "~> 5.2.0"
11
11
  end
12
12
 
13
13
  appraise "rails-6.0" do
14
- gem "rails", "6.0.0.rc2"
14
+ gem "rails", "~> 6.0.0"
15
15
  end
data/README.md CHANGED
@@ -3,7 +3,7 @@ This gem correctly configures Rails for [CloudFlare](https://www.cloudflare.com)
3
3
 
4
4
  ## Rails Compatibility
5
5
 
6
- For Rails 5, use >= `0.2.x`
6
+ For Rails 5 / 6, use >= `0.6.x`
7
7
 
8
8
  For Rails 4.2, use `0.1.x`
9
9
 
@@ -33,7 +33,7 @@ Using Cloudflare means it's hard to identify the IP address of incoming requests
33
33
  This code will fetch CloudFlare's current [IPv4](https://www.cloudflare.com/ips-v4) and [IPv6](https://www.cloudflare.com/ips-v6) lists, store them in `Rails.cache`, and add them to `config.cloudflare.ips`. The `X-Forwarded-For` header will then be trusted only from those ip addresses.
34
34
 
35
35
  You can configure the HTTP `timeout` and `expires_in` cache parameters inside of your rails config:
36
- ```
36
+ ```ruby
37
37
  config.cloudflare.expires_in = 12.hours # default value
38
38
  config.cloudflare.timeout = 5.seconds # default value
39
39
  ```
data/Rakefile CHANGED
@@ -9,10 +9,16 @@ task :without_rack_attack do
9
9
  Rake::Task["spec"].invoke
10
10
  end
11
11
 
12
- task :with_rack_attack do
13
- ENV['RACK_ATTACK'] = '1'
12
+ task :with_rack_attack_first do
13
+ ENV['RACK_ATTACK'] = 'first'
14
14
  Rake::Task["spec"].reenable
15
15
  Rake::Task["spec"].invoke
16
16
  end
17
17
 
18
- task :default => [:without_rack_attack, :with_rack_attack]
18
+ task :with_rack_attack_last do
19
+ ENV['RACK_ATTACK'] = 'last'
20
+ Rake::Task["spec"].reenable
21
+ Rake::Task["spec"].invoke
22
+ end
23
+
24
+ task :default => [:without_rack_attack, :with_rack_attack_first, :with_rack_attack_last]
@@ -20,14 +20,14 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.10"
24
- spec.add_development_dependency "rake", "~> 12.3.1"
23
+ spec.add_development_dependency "bundler", "~> 2.1.2"
24
+ spec.add_development_dependency "rake", "~> 13.0.1"
25
25
  spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
26
- spec.add_development_dependency "rspec-rails", "~> 3.8.2"
27
- spec.add_development_dependency "rspec", "~> 3.8.0"
28
- spec.add_development_dependency "rubocop-airbnb", "~> 2.0.0"
29
- spec.add_development_dependency "webmock", "~> 3.6.0"
30
- spec.add_development_dependency "rack-attack", "~> 6.1.0"
26
+ spec.add_development_dependency "rspec-rails", "~> 4.0.0"
27
+ spec.add_development_dependency "rspec", "~> 3.9.0"
28
+ spec.add_development_dependency "rubocop-airbnb", "~> 3.0.2"
29
+ spec.add_development_dependency "webmock", "~> 3.9.1"
30
+ spec.add_development_dependency "rack-attack", "~> 6.3.0"
31
31
  spec.add_development_dependency "pry-byebug"
32
32
  spec.add_development_dependency "appraisal"
33
33
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "5.0"
5
+ gem "rails", "~> 5.0.0"
6
6
 
7
7
  gemspec path: "../"
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "5.1"
5
+ gem "rails", "~> 5.1.0"
6
6
 
7
7
  gemspec path: "../"
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "5.2"
5
+ gem "rails", "~> 5.2.0"
6
6
 
7
7
  gemspec path: "../"
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "6.0.0.rc2"
5
+ gem "rails", "~> 6.0.0"
6
6
 
7
7
  gemspec path: "../"
@@ -11,15 +11,6 @@ module Cloudflare
11
11
  end
12
12
  end
13
13
 
14
- Rack::Request::Helpers.prepend CheckTrustedProxies
15
-
16
- # rack-attack Rack::Request before the above is run, so if rack-attack is loaded we need to
17
- # prepend our module there as well, see:
18
- # https://github.com/kickstarter/rack-attack/blob/4fc4d79c9d2697ec21263109af23f11ea93a23ce/lib/rack/attack/request.rb
19
- if defined? Rack::Attack::Request
20
- Rack::Attack::Request.prepend CheckTrustedProxies
21
- end
22
-
23
14
  # patch ActionDispatch::RemoteIP to use our cloudflare ips - this way
24
15
  # request.remote_ip is correct inside of rails
25
16
  module RemoteIpProxies
@@ -28,8 +19,6 @@ module Cloudflare
28
19
  end
29
20
  end
30
21
 
31
- ActionDispatch::RemoteIp.prepend RemoteIpProxies
32
-
33
22
  class Importer
34
23
  include HTTParty
35
24
  base_uri 'https://www.cloudflare.com'
@@ -89,10 +78,22 @@ module Cloudflare
89
78
  rescue Importer::ResponseError => e
90
79
  ::Rails.logger.error "Cloudflare::Rails: Couldn't import #{type} blocks from CloudFlare: #{e.response}"
91
80
  rescue StandardError => e
92
- ::Rails.logger.error "Cloudflare::Rails: Got exception: #{e} for type:#{type}"
81
+ ::Rails.logger.error "Cloudflare::Rails: Got exception: #{e} for type: #{type}"
93
82
  end
94
83
  end
95
84
  end
85
+ initializer "my_railtie.configure_rails_initialization" do
86
+ Rack::Request::Helpers.prepend CheckTrustedProxies
87
+
88
+ ObjectSpace.each_object(Class).
89
+ select do |c|
90
+ c.included_modules.include?(Rack::Request::Helpers) &&
91
+ !c.included_modules.include?(CheckTrustedProxies)
92
+ end.
93
+ map { |c| c .prepend CheckTrustedProxies }
94
+
95
+ ActionDispatch::RemoteIp.prepend RemoteIpProxies
96
+ end
96
97
  end
97
98
  end
98
99
  end
@@ -1,5 +1,5 @@
1
1
  module Cloudflare
2
2
  module Rails
3
- VERSION = "0.6.0".freeze
3
+ VERSION = "1.0.0.beta1".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudflare-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jonathan schatz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-11 00:00:00.000000000 Z
11
+ date: 2020-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: 2.1.2
20
20
  type: :development
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: '1.10'
26
+ version: 2.1.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 12.3.1
33
+ version: 13.0.1
34
34
  type: :development
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: 12.3.1
40
+ version: 13.0.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec_junit_formatter
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,70 +58,70 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 3.8.2
61
+ version: 4.0.0
62
62
  type: :development
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: 3.8.2
68
+ version: 4.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.8.0
75
+ version: 3.9.0
76
76
  type: :development
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: 3.8.0
82
+ version: 3.9.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop-airbnb
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 2.0.0
89
+ version: 3.0.2
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: 2.0.0
96
+ version: 3.0.2
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 3.6.0
103
+ version: 3.9.1
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: 3.6.0
110
+ version: 3.9.1
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rack-attack
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 6.1.0
117
+ version: 6.3.0
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: 6.1.0
124
+ version: 6.3.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: pry-byebug
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +192,7 @@ extensions: []
192
192
  extra_rdoc_files: []
193
193
  files:
194
194
  - ".circleci/config.yml"
195
+ - ".github/dependabot.yml"
195
196
  - ".gitignore"
196
197
  - ".rspec"
197
198
  - ".rubocop.yml"
@@ -218,7 +219,7 @@ homepage: https://github.com/modosc/cloudflare-rails
218
219
  licenses:
219
220
  - MIT
220
221
  metadata: {}
221
- post_install_message:
222
+ post_install_message:
222
223
  rdoc_options: []
223
224
  require_paths:
224
225
  - lib
@@ -229,12 +230,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
229
230
  version: '2.0'
230
231
  required_rubygems_version: !ruby/object:Gem::Requirement
231
232
  requirements:
232
- - - ">="
233
+ - - ">"
233
234
  - !ruby/object:Gem::Version
234
- version: '0'
235
+ version: 1.3.1
235
236
  requirements: []
236
- rubygems_version: 3.0.4
237
- signing_key:
237
+ rubygems_version: 3.1.2
238
+ signing_key:
238
239
  specification_version: 4
239
240
  summary: This gem configures Rails for CloudFlare so that request.ip and request.remote_ip
240
241
  and work correctly.