rack-cloudflare_middleware 2.0.0 → 3.0.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
  SHA256:
3
- metadata.gz: 22757d992eeecdb17309877680ce87ff3f276c3feee9204f74e268b8f7a191c1
4
- data.tar.gz: f6ed538c9de7682d91113ea40204a29e2c933f4d4da5d88716ca4c69121e1541
3
+ metadata.gz: 2caa6f46bb75a1436d76b66b04a3c74a3fe6be8132d8be1a5cf3f8eb46920ed6
4
+ data.tar.gz: bb6bae39cca23f835be26697c23fb3fefcb3f7e7bce7657b1aedbae0d1ab8744
5
5
  SHA512:
6
- metadata.gz: 6f5723f47e69a46e6712ca9e77ceb55d95a31c2a8a3e18daffcd46f751a30f8e044d590f282c749d67917a4dff2b9e055f5f6e089e0736a58f0a3cf40e7aaba8
7
- data.tar.gz: 7398eb50105915fbf26825ebc3169b0603aae9ad3a56bbc2449b63bb8d8ca55bac54daea46339fba05fcb900d60f8ba496d72cbde1f1706fcb7693b4a91f3cb0
6
+ metadata.gz: 36a8c2416e03f0bd46bb13ca3263acd31292584c2fa9880f177b44bae83ecf8b664fc7e0aea20bbd953c103cbcef427c444ab208288d79610ce1e0fa44c236da
7
+ data.tar.gz: 4f6947ff84694af20469dc060dce6747d558a35ee7e66d470e42c2304b1bcbb3a58550363c42d8432fe5f6872e00a504855ebb0850f1bcc121769f76119f69b1
@@ -16,10 +16,10 @@ jobs:
16
16
  strategy:
17
17
  fail-fast: true
18
18
  matrix:
19
- ruby: ["3.2", "3.3", "3.4"]
19
+ ruby: ["3.4", "4.0"]
20
20
  steps:
21
21
  - name: Checkout code
22
- uses: actions/checkout@v6
22
+ uses: actions/checkout@v7
23
23
  - name: Install Ruby and gems
24
24
  uses: ruby/setup-ruby@v1
25
25
  with:
@@ -35,16 +35,16 @@ jobs:
35
35
  contents: read
36
36
  steps:
37
37
  - name: Checkout code
38
- uses: actions/checkout@v6
38
+ uses: actions/checkout@v7
39
39
  - name: Install Ruby and gems
40
40
  uses: ruby/setup-ruby@v1
41
41
  with:
42
42
  bundler-cache: true
43
- ruby-version: "3.4"
43
+ ruby-version: "4.0"
44
44
  - name: Bundle Audit Check
45
45
  run: bundle exec bundle-audit update && bundle exec bundle-audit check
46
46
  - name: Setup Python
47
- uses: actions/setup-python@v6
47
+ uses: actions/setup-python@v7
48
48
  with:
49
49
  python-version: "3.12"
50
50
  - name: Run pre-commit
@@ -9,12 +9,12 @@ jobs:
9
9
  contents: read
10
10
  steps:
11
11
  - name: Checkout code
12
- uses: actions/checkout@v6
12
+ uses: actions/checkout@v7
13
13
  - name: Install Ruby and gems
14
14
  uses: ruby/setup-ruby@v1
15
15
  with:
16
16
  bundler-cache: true
17
- ruby-version: "3.3"
17
+ ruby-version: "4.0"
18
18
  - name: Publish gem
19
19
  run: |
20
20
  umask 077
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  /.bundle
2
2
  *.gem
3
+ .DS_Store
@@ -1,6 +1,6 @@
1
1
  repos:
2
2
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v3.2.0
3
+ rev: v6.0.0
4
4
  hooks:
5
5
  - id: trailing-whitespace
6
6
  - id: end-of-file-fixer
@@ -8,10 +8,10 @@ repos:
8
8
  - id: check-yaml
9
9
  exclude: '.rubocop.yml'
10
10
  - id: check-added-large-files
11
- - id: check-byte-order-marker
11
+ - id: fix-byte-order-marker
12
12
  exclude: '^spec/data/'
13
13
  - id: check-merge-conflict
14
14
  - repo: https://github.com/instrumentl/pre-commit-standardrb.git
15
- rev: 'v1.44.0'
15
+ rev: 'v1.45.0'
16
16
  hooks:
17
17
  - id: standardrb
data/.rubocop.yml CHANGED
@@ -2,7 +2,9 @@ require: standard
2
2
  inherit_gem:
3
3
  standard: config/base.yml
4
4
  AllCops:
5
- TargetRubyVersion: 3.4
5
+ AllCops:
6
+ TargetRubyVersion: 4.0
7
+ NewCops: enable
6
8
  Exclude:
7
9
  - "vendor/bundle/**/*"
8
10
  - "tmp/**/*"
data/.standard.yml ADDED
@@ -0,0 +1 @@
1
+ ruby_version: 4.0
data/CHANGELOG.md CHANGED
@@ -1,41 +1,49 @@
1
+ # changelog
2
+
3
+ ## v3.0.0 - 2026-08-20
4
+
5
+ - **BREAKING CHANGE**: Dropped support for Ruby 3.2 and 3.3 (EOL as of March 31, 2026)
6
+ - Updated minimum Ruby version requirement from >= 3.2 to >= 3.4
7
+ - Added support for Ruby 4.0; CI now tests against Ruby 3.4, and 4.0
8
+ - Dependencies updates
9
+
10
+ ## v2.0.0 - 2026-02-19
1
11
 
2
- v2.0.0 - 2026-02-19
3
- -------------------
4
12
  - **BREAKING CHANGE**: Dropped support for Ruby 3.1 (EOL as of March 31, 2025)
5
13
  - Updated minimum Ruby version requirement from >= 3.1 to >= 3.2
6
14
  - This change resolves Dependabot dependency resolution issues with bundler-audit
7
15
  - CI now tests against Ruby 3.2, 3.3, and 3.4
8
16
  - First major version bump following semantic versioning for breaking changes
9
17
 
10
- v1.2.4 - 2026-02-10
11
- -------------------
18
+ ## v1.2.4 - 2026-02-10
19
+
12
20
  - Updated Faraday dependency to >= 2.14.1 to address CVE-2026-25765 (SSRF vulnerability)
13
21
 
14
- v1.2.3 - 2025-07-25
15
- -------------------
22
+ ## v1.2.3 - 2025-07-25
23
+
16
24
  - Libraries updates
17
25
 
18
- v1.2.2 - 2024-05-22
19
- -------------------
26
+ ## v1.2.2 - 2024-05-22
27
+
20
28
  - Added support for ruby 3.4
21
29
 
22
- v1.2.1 - 2024-02-23
23
- -------------------
30
+ ## v1.2.1 - 2024-02-23
31
+
24
32
  - Update cloudflare trusted IP URL to include new required trailing slash
25
33
  - Many dependabot bumps
26
34
 
27
- v1.2.0 - 2023-06-05
28
- -------------------
35
+ ## v1.2.0 - 2023-06-05
36
+
29
37
  - Set `required_ruby_version` in the gemspec
30
38
  - Add `trusted_request_proc` kwarg to DenyOthers middleware
31
39
 
32
- v1.1.0 - 2023-03-31
33
- -------------------
40
+ ## v1.1.0 - 2023-03-31
41
+
34
42
  - Expand requirements to allow using Rack 3.x
35
43
  - Add `trust_xff_if_private` kwarg to both middlewares
36
44
  - Add `on_fail_proc` to DenyOthers middleware
37
45
  - Bump various build-time dependencies
38
46
 
39
- v1.0.0 - 2023-03-31
40
- -------------------
47
+ ## v1.0.0 - 2023-03-31
48
+
41
49
  - Initial release
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ source "https://rubygems.org"
5
5
  gemspec
6
6
 
7
7
  gem "faraday", "~> 2.14"
8
- gem "rake", "~> 13.3"
8
+ gem "rake", "~> 13.4"
9
9
 
10
10
  group :development, :test do
11
11
  gem "rspec", "~> 3.13"
data/Gemfile.lock CHANGED
@@ -1,17 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-cloudflare_middleware (2.0.0)
4
+ rack-cloudflare_middleware (3.0.0)
5
5
  faraday (>= 1.0, < 3)
6
6
  rack (>= 2, < 4)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.8.7)
12
- public_suffix (>= 2.0.2, < 7.0)
11
+ addressable (2.9.0)
12
+ public_suffix (>= 2.0.2, < 8.0)
13
13
  ast (2.4.3)
14
- bigdecimal (3.3.1)
14
+ bigdecimal (4.1.1)
15
15
  bundler-audit (0.9.3)
16
16
  bundler (>= 1.2.0)
17
17
  thor (~> 1.0)
@@ -20,38 +20,38 @@ GEM
20
20
  bigdecimal
21
21
  rexml
22
22
  diff-lcs (1.6.2)
23
- faraday (2.14.1)
23
+ faraday (2.14.3)
24
24
  faraday-net_http (>= 2.0, < 3.5)
25
25
  json
26
26
  logger
27
- faraday-net_http (3.4.2)
27
+ faraday-net_http (3.4.4)
28
28
  net-http (~> 0.5)
29
29
  hashdiff (1.2.1)
30
30
  io-console (0.8.2)
31
- json (2.18.1)
32
- language_server-protocol (3.17.0.5)
31
+ json (2.21.2)
32
+ language_server-protocol (3.17.0.6)
33
33
  lint_roller (1.1.0)
34
34
  logger (1.7.0)
35
35
  method_source (1.1.0)
36
36
  net-http (0.9.1)
37
37
  uri (>= 0.11.1)
38
- parallel (1.27.0)
39
- parser (3.3.10.0)
38
+ parallel (2.1.0)
39
+ parser (3.3.12.0)
40
40
  ast (~> 2.4.1)
41
41
  racc
42
- prism (1.6.0)
42
+ prism (1.9.0)
43
43
  pry (0.16.0)
44
44
  coderay (~> 1.1)
45
45
  method_source (~> 1.0)
46
46
  reline (>= 0.6.0)
47
- public_suffix (6.0.2)
47
+ public_suffix (7.0.5)
48
48
  racc (1.8.1)
49
- rack (3.2.4)
49
+ rack (3.2.7)
50
50
  rack-test (2.2.0)
51
51
  rack (>= 1.3)
52
52
  rainbow (3.1.1)
53
- rake (13.3.1)
54
- regexp_parser (2.11.3)
53
+ rake (13.4.2)
54
+ regexp_parser (2.12.0)
55
55
  reline (0.6.3)
56
56
  io-console (~> 0.5)
57
57
  rexml (3.4.4)
@@ -71,43 +71,43 @@ GEM
71
71
  diff-lcs (>= 1.2.0, < 2.0)
72
72
  rspec-support (~> 3.13.0)
73
73
  rspec-support (3.13.6)
74
- rubocop (1.81.7)
74
+ rubocop (1.88.2)
75
75
  json (~> 2.3)
76
76
  language_server-protocol (~> 3.17.0.2)
77
77
  lint_roller (~> 1.1.0)
78
- parallel (~> 1.10)
78
+ parallel (>= 1.10)
79
79
  parser (>= 3.3.0.2)
80
80
  rainbow (>= 2.2.2, < 4.0)
81
81
  regexp_parser (>= 2.9.3, < 3.0)
82
- rubocop-ast (>= 1.47.1, < 2.0)
82
+ rubocop-ast (>= 1.49.0, < 2.0)
83
83
  ruby-progressbar (~> 1.7)
84
84
  unicode-display_width (>= 2.4.0, < 4.0)
85
- rubocop-ast (1.48.0)
85
+ rubocop-ast (1.50.0)
86
86
  parser (>= 3.3.7.2)
87
- prism (~> 1.4)
88
- rubocop-performance (1.25.0)
87
+ prism (~> 1.7)
88
+ rubocop-performance (1.26.1)
89
89
  lint_roller (~> 1.1)
90
90
  rubocop (>= 1.75.0, < 2.0)
91
- rubocop-ast (>= 1.38.0, < 2.0)
91
+ rubocop-ast (>= 1.47.1, < 2.0)
92
92
  ruby-progressbar (1.13.0)
93
- standard (1.52.0)
93
+ standard (1.56.0)
94
94
  language_server-protocol (~> 3.17.0.2)
95
95
  lint_roller (~> 1.0)
96
- rubocop (~> 1.81.7)
96
+ rubocop (~> 1.88.0)
97
97
  standard-custom (~> 1.0.0)
98
98
  standard-performance (~> 1.8)
99
99
  standard-custom (1.0.2)
100
100
  lint_roller (~> 1.0)
101
101
  rubocop (~> 1.50)
102
- standard-performance (1.8.0)
102
+ standard-performance (1.9.0)
103
103
  lint_roller (~> 1.1)
104
- rubocop-performance (~> 1.25.0)
104
+ rubocop-performance (~> 1.26.0)
105
105
  thor (1.4.0)
106
106
  unicode-display_width (3.2.0)
107
107
  unicode-emoji (~> 4.1)
108
- unicode-emoji (4.1.0)
108
+ unicode-emoji (4.2.0)
109
109
  uri (1.1.1)
110
- webmock (3.26.1)
110
+ webmock (3.26.2)
111
111
  addressable (>= 2.8.0)
112
112
  crack (>= 0.3.2)
113
113
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -116,6 +116,7 @@ PLATFORMS
116
116
  arm64-darwin-22
117
117
  arm64-darwin-23
118
118
  arm64-darwin-24
119
+ arm64-darwin-25
119
120
  x86_64-linux
120
121
 
121
122
  DEPENDENCIES
@@ -125,11 +126,11 @@ DEPENDENCIES
125
126
  pry
126
127
  rack-cloudflare_middleware!
127
128
  rack-test (~> 2)
128
- rake (~> 13.3)
129
+ rake (~> 13.4)
129
130
  rspec (~> 3.13)
130
131
  rspec-its (~> 2.0)
131
132
  standard (~> 1)
132
133
  webmock (~> 3.26)
133
134
 
134
135
  BUNDLED WITH
135
- 2.5.23
136
+ 2.7.2
data/README.md CHANGED
@@ -5,8 +5,8 @@ This is a small Rack middleware for use with the [Cloudflare](https://www.cloudf
5
5
 
6
6
  We include two middlewares:
7
7
 
8
- * `Rack::CloudflareMiddleware::RewriteRemoteAddr` swaps in `CF-Connecting-IP` for `REMOTE_ADDR` if and only if the "real" remote address is a trusted Cloudflare source IP address.
9
- * `Rack::CloudflareMiddleware::DenyOthers` returns a 401 for all requests where `REMOTE_ADDR` is not Cloudflare
8
+ - `Rack::CloudflareMiddleware::RewriteRemoteAddr` swaps in `CF-Connecting-IP` for `REMOTE_ADDR` if and only if the "real" remote address is a trusted Cloudflare source IP address.
9
+ - `Rack::CloudflareMiddleware::DenyOthers` returns a 401 for all requests where `REMOTE_ADDR` is not Cloudflare
10
10
 
11
11
  If you're using Rails, you may want to use [cloudflare-rails](https://github.com/modosc/cloudflare-rails) instead.
12
12
 
@@ -33,9 +33,9 @@ module Rack
33
33
  ip = IPAddr.new(ip)
34
34
  end
35
35
  if ip.ipv4?
36
- @ranges[4].any? { _1.include? ip }
36
+ @ranges[4].any? { it.include? ip }
37
37
  else
38
- @ranges[6].any? { _1.include? ip }
38
+ @ranges[6].any? { it.include? ip }
39
39
  end
40
40
  end
41
41
 
@@ -45,7 +45,7 @@ module Rack
45
45
  end
46
46
 
47
47
  def check_update
48
- if [4, 6].any? { (Time.now - @mtimes[_1]) > UPDATE_THRESHOLD }
48
+ if [4, 6].any? { (Time.now - @mtimes[it]) > UPDATE_THRESHOLD }
49
49
  update!
50
50
  end
51
51
  end
@@ -58,7 +58,7 @@ module Rack
58
58
  end
59
59
 
60
60
  def process_body(body)
61
- body.lines.map(&:strip).filter { !_1.empty? }.map(&IPAddr.method(:new)).to_set
61
+ body.lines.map(&:strip).filter { !it.empty? }.map(&IPAddr.method(:new)).to_set
62
62
  end
63
63
 
64
64
  def read_file(path, version)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rack
4
4
  module CloudflareMiddleware
5
- VERSION = "2.0.0"
5
+ VERSION = "3.0.0"
6
6
  end
7
7
  end
@@ -21,13 +21,13 @@ Gem::Specification.new do |spec|
21
21
  end
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.required_ruby_version = ">= 3.2"
24
+ spec.required_ruby_version = ">= 3.4"
25
25
 
26
26
  spec.add_dependency "faraday", ">= 1.0", "< 3"
27
27
  spec.add_dependency "rack", ">= 2", "< 4"
28
28
 
29
29
  spec.add_development_dependency "bundler", "~> 2"
30
- spec.add_development_dependency "rake", "~> 13.0"
31
- spec.add_development_dependency "rspec", "~> 3.0"
30
+ spec.add_development_dependency "rake", "~> 13.4"
31
+ spec.add_development_dependency "rspec", "~> 3.13"
32
32
  spec.add_development_dependency "standard", "~> 1"
33
33
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-cloudflare_middleware
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Brown
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-02-20 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: faraday
@@ -70,28 +69,28 @@ dependencies:
70
69
  requirements:
71
70
  - - "~>"
72
71
  - !ruby/object:Gem::Version
73
- version: '13.0'
72
+ version: '13.4'
74
73
  type: :development
75
74
  prerelease: false
76
75
  version_requirements: !ruby/object:Gem::Requirement
77
76
  requirements:
78
77
  - - "~>"
79
78
  - !ruby/object:Gem::Version
80
- version: '13.0'
79
+ version: '13.4'
81
80
  - !ruby/object:Gem::Dependency
82
81
  name: rspec
83
82
  requirement: !ruby/object:Gem::Requirement
84
83
  requirements:
85
84
  - - "~>"
86
85
  - !ruby/object:Gem::Version
87
- version: '3.0'
86
+ version: '3.13'
88
87
  type: :development
89
88
  prerelease: false
90
89
  version_requirements: !ruby/object:Gem::Requirement
91
90
  requirements:
92
91
  - - "~>"
93
92
  - !ruby/object:Gem::Version
94
- version: '3.0'
93
+ version: '3.13'
95
94
  - !ruby/object:Gem::Dependency
96
95
  name: standard
97
96
  requirement: !ruby/object:Gem::Requirement
@@ -106,7 +105,6 @@ dependencies:
106
105
  - - "~>"
107
106
  - !ruby/object:Gem::Version
108
107
  version: '1'
109
- description:
110
108
  email:
111
109
  - james@instrumentl.com
112
110
  executables: []
@@ -119,6 +117,7 @@ files:
119
117
  - ".gitignore"
120
118
  - ".pre-commit-config.yaml"
121
119
  - ".rubocop.yml"
120
+ - ".standard.yml"
122
121
  - CHANGELOG.md
123
122
  - CODEOWNERS
124
123
  - Gemfile
@@ -137,7 +136,6 @@ homepage: https://github.com/instrumentl/rack-cloudflare_middleware
137
136
  licenses:
138
137
  - ISC
139
138
  metadata: {}
140
- post_install_message:
141
139
  rdoc_options: []
142
140
  require_paths:
143
141
  - lib
@@ -145,15 +143,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
143
  requirements:
146
144
  - - ">="
147
145
  - !ruby/object:Gem::Version
148
- version: '3.2'
146
+ version: '3.4'
149
147
  required_rubygems_version: !ruby/object:Gem::Requirement
150
148
  requirements:
151
149
  - - ">="
152
150
  - !ruby/object:Gem::Version
153
151
  version: '0'
154
152
  requirements: []
155
- rubygems_version: 3.5.22
156
- signing_key:
153
+ rubygems_version: 4.0.16
157
154
  specification_version: 4
158
155
  summary: Rack middleware for handling Cloudflare remote IP headers
159
156
  test_files: []