otto 2.3.0 → 2.4.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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +1 -1
  3. data/.github/workflows/ci.yml +7 -1
  4. data/.github/workflows/claude-code-review.yml +33 -10
  5. data/.github/workflows/claude.yml +9 -2
  6. data/.github/workflows/code-smells.yml +2 -2
  7. data/.github/workflows/release-gem.yml +12 -2
  8. data/.github/workflows/ruby-lint.yml +66 -0
  9. data/.github/workflows/yardoc.yml +117 -0
  10. data/.yardopts +15 -0
  11. data/CHANGELOG.rst +84 -0
  12. data/Gemfile +4 -1
  13. data/Gemfile.lock +23 -15
  14. data/README.md +96 -0
  15. data/Rakefile +21 -0
  16. data/docs/.gitignore +1 -0
  17. data/docs/migrating/v2.3.0.md +50 -3
  18. data/docs/reverse-proxy-network-services.md +358 -0
  19. data/examples/caddy_tls_demo/README.md +100 -0
  20. data/examples/caddy_tls_demo/app.rb +41 -0
  21. data/examples/caddy_tls_demo/config.ru +31 -0
  22. data/examples/caddy_tls_demo/routes +9 -0
  23. data/examples/caddy_tls_demo/standalone.ru +38 -0
  24. data/lib/otto/caddy_tls/core.rb +74 -0
  25. data/lib/otto/caddy_tls/localhost_guard.rb +158 -0
  26. data/lib/otto/caddy_tls/server.rb +149 -0
  27. data/lib/otto/caddy_tls.rb +7 -0
  28. data/lib/otto/core/configuration.rb +9 -1
  29. data/lib/otto/core/middleware_management.rb +7 -7
  30. data/lib/otto/core/middleware_stack.rb +39 -5
  31. data/lib/otto/core/router.rb +4 -8
  32. data/lib/otto/security/config.rb +293 -2
  33. data/lib/otto/security/configurator.rb +53 -0
  34. data/lib/otto/security/core.rb +62 -0
  35. data/lib/otto/security/csp/parser.rb +120 -0
  36. data/lib/otto/security/csp/report.rb +147 -0
  37. data/lib/otto/security/csp/report_middleware.rb +120 -0
  38. data/lib/otto/security/csp.rb +19 -0
  39. data/lib/otto/security/middleware/ip_privacy_middleware.rb +72 -7
  40. data/lib/otto/security.rb +1 -0
  41. data/lib/otto/utils.rb +133 -18
  42. data/lib/otto/version.rb +1 -1
  43. data/lib/otto.rb +26 -3
  44. metadata +24 -3
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: otto
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-07-01 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: concurrent-ruby
@@ -123,18 +124,22 @@ files:
123
124
  - ".github/workflows/claude.yml"
124
125
  - ".github/workflows/code-smells.yml"
125
126
  - ".github/workflows/release-gem.yml"
127
+ - ".github/workflows/ruby-lint.yml"
128
+ - ".github/workflows/yardoc.yml"
126
129
  - ".gitignore"
127
130
  - ".pre-commit-config.yaml"
128
131
  - ".pre-push-config.yaml"
129
132
  - ".reek.yml"
130
133
  - ".rspec"
131
134
  - ".rubocop.yml"
135
+ - ".yardopts"
132
136
  - AGENTS.md
133
137
  - CHANGELOG.rst
134
138
  - Gemfile
135
139
  - Gemfile.lock
136
140
  - LICENSE.txt
137
141
  - README.md
142
+ - Rakefile
138
143
  - bin/rspec
139
144
  - changelog.d/README.md
140
145
  - changelog.d/scriv.ini
@@ -145,6 +150,7 @@ files:
145
150
  - docs/migrating/v2.3.0.md
146
151
  - docs/modern-authentication-authorization-landscape.md
147
152
  - docs/multi-strategy-authentication-design.md
153
+ - docs/reverse-proxy-network-services.md
148
154
  - examples/.gitignore
149
155
  - examples/advanced_routes/README.md
150
156
  - examples/advanced_routes/app.rb
@@ -191,6 +197,11 @@ files:
191
197
  - examples/basic/app.rb
192
198
  - examples/basic/config.ru
193
199
  - examples/basic/routes
200
+ - examples/caddy_tls_demo/README.md
201
+ - examples/caddy_tls_demo/app.rb
202
+ - examples/caddy_tls_demo/config.ru
203
+ - examples/caddy_tls_demo/routes
204
+ - examples/caddy_tls_demo/standalone.ru
194
205
  - examples/error_handler_registration.rb
195
206
  - examples/logging_improvements.rb
196
207
  - examples/mcp_demo/README.md
@@ -203,6 +214,10 @@ files:
203
214
  - examples/security_features/routes
204
215
  - examples/simple_geo_resolver.rb
205
216
  - lib/otto.rb
217
+ - lib/otto/caddy_tls.rb
218
+ - lib/otto/caddy_tls/core.rb
219
+ - lib/otto/caddy_tls/localhost_guard.rb
220
+ - lib/otto/caddy_tls/server.rb
206
221
  - lib/otto/core.rb
207
222
  - lib/otto/core/configuration.rb
208
223
  - lib/otto/core/error_handler.rb
@@ -278,6 +293,10 @@ files:
278
293
  - lib/otto/security/configurator.rb
279
294
  - lib/otto/security/constant_resolver.rb
280
295
  - lib/otto/security/core.rb
296
+ - lib/otto/security/csp.rb
297
+ - lib/otto/security/csp/parser.rb
298
+ - lib/otto/security/csp/report.rb
299
+ - lib/otto/security/csp/report_middleware.rb
281
300
  - lib/otto/security/csrf.rb
282
301
  - lib/otto/security/middleware/csrf_middleware.rb
283
302
  - lib/otto/security/middleware/ip_privacy_middleware.rb
@@ -297,6 +316,7 @@ licenses:
297
316
  - MIT
298
317
  metadata:
299
318
  rubygems_mfa_required: 'true'
319
+ post_install_message:
300
320
  rdoc_options: []
301
321
  require_paths:
302
322
  - lib
@@ -314,7 +334,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
314
334
  - !ruby/object:Gem::Version
315
335
  version: '0'
316
336
  requirements: []
317
- rubygems_version: 3.6.9
337
+ rubygems_version: 3.5.22
338
+ signing_key:
318
339
  specification_version: 4
319
340
  summary: Define your rack-apps in plaintext.
320
341
  test_files: []