rails-reverse-proxy 0.7.0 → 0.10.0

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
  SHA1:
3
- metadata.gz: 3b360ee4c361f26e4c2182bdd20e4348af835ca7
4
- data.tar.gz: 73c8d8972c066241ae4834a34148ab6ecebfe33f
3
+ metadata.gz: 5b31e671543f6b426dd09ac1a0c13537e3c8f576
4
+ data.tar.gz: 4282caecc98894c5d186e996b4a58c194442857e
5
5
  SHA512:
6
- metadata.gz: afc6bc62f37962e1f6f9022590d2dc6e7f599dd763f76673cc1f4bb6794c7d126ad595294ae3cdb773d56c22070faff0c6282049a264528fc3c77b95b2e872a5
7
- data.tar.gz: 3a0e28009255950571604c0cc6976b25b37064d077ee908d977c1e0b45f07fc92d5996e8378b2e13d025e7c8ca380529faffe3ad4c37b748673747d566da39f5
6
+ metadata.gz: 227805c87472a4adfd188b0106897e96c7f1cf1ffd3fafe9718478b22671ff9b70be5cdcfdf72556bbcfd64b95cbf995a4eb9af5660720e601d50056b698da37
7
+ data.tar.gz: 2c955e82140e67bc9ce94fa4c383d1a0326f47238c21d984d6c2188fc41d3b49c70d31b364633260758b9fbe52bd253e8a7c1333f1da72fccc5367adf6dd15aa
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.4.2
data/Gemfile CHANGED
@@ -1,8 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'rails'
4
- gem 'rack'
5
- gem 'rack-proxy'
3
+ gem 'actionpack'
6
4
  gem 'addressable'
7
5
 
8
6
  # Add dependencies to develop your gem here.
@@ -11,6 +9,6 @@ group :development do
11
9
  gem "shoulda", ">= 0"
12
10
  gem "rdoc", "~> 3.12"
13
11
  gem "bundler", "~> 1.0"
14
- gem "jeweler", "~> 2.0.1"
12
+ gem "jeweler", "~> 2.1.2"
15
13
  gem "simplecov", ">= 0"
16
14
  end
data/Gemfile.lock CHANGED
@@ -1,12 +1,6 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (4.2.1)
5
- actionpack (= 4.2.1)
6
- actionview (= 4.2.1)
7
- activejob (= 4.2.1)
8
- mail (~> 2.5, >= 2.5.4)
9
- rails-dom-testing (~> 1.0, >= 1.0.5)
10
4
  actionpack (4.2.1)
11
5
  actionview (= 4.2.1)
12
6
  activesupport (= 4.2.1)
@@ -20,90 +14,64 @@ GEM
20
14
  erubis (~> 2.7.0)
21
15
  rails-dom-testing (~> 1.0, >= 1.0.5)
22
16
  rails-html-sanitizer (~> 1.0, >= 1.0.1)
23
- activejob (4.2.1)
24
- activesupport (= 4.2.1)
25
- globalid (>= 0.3.0)
26
- activemodel (4.2.1)
27
- activesupport (= 4.2.1)
28
- builder (~> 3.1)
29
- activerecord (4.2.1)
30
- activemodel (= 4.2.1)
31
- activesupport (= 4.2.1)
32
- arel (~> 6.0)
33
17
  activesupport (4.2.1)
34
18
  i18n (~> 0.7)
35
19
  json (~> 1.7, >= 1.7.7)
36
20
  minitest (~> 5.1)
37
21
  thread_safe (~> 0.3, >= 0.3.4)
38
22
  tzinfo (~> 1.1)
39
- addressable (2.3.8)
40
- arel (6.0.0)
41
- builder (3.2.2)
23
+ addressable (2.5.0)
24
+ public_suffix (~> 2.0, >= 2.0.2)
25
+ builder (3.2.3)
42
26
  descendants_tracker (0.0.4)
43
27
  thread_safe (~> 0.3, >= 0.3.1)
44
28
  docile (1.1.5)
45
29
  erubis (2.7.0)
46
- faraday (0.9.1)
30
+ faraday (0.9.2)
47
31
  multipart-post (>= 1.2, < 3)
48
- git (1.2.9.1)
49
- github_api (0.12.3)
32
+ git (1.3.0)
33
+ github_api (0.11.3)
50
34
  addressable (~> 2.3)
51
- descendants_tracker (~> 0.0.4)
35
+ descendants_tracker (~> 0.0.1)
52
36
  faraday (~> 0.8, < 0.10)
53
- hashie (>= 3.3)
37
+ hashie (>= 1.2)
54
38
  multi_json (>= 1.7.5, < 2.0)
55
- nokogiri (~> 1.6.3)
39
+ nokogiri (~> 1.6.0)
56
40
  oauth2
57
- globalid (0.3.5)
58
- activesupport (>= 4.1.0)
59
- hashie (3.4.2)
60
- highline (1.7.2)
41
+ hashie (3.5.5)
42
+ highline (1.7.8)
61
43
  i18n (0.7.0)
62
- jeweler (2.0.1)
44
+ jeweler (2.1.2)
63
45
  builder
64
46
  bundler (>= 1.0)
65
47
  git (>= 1.2.5)
66
- github_api
48
+ github_api (~> 0.11.0)
67
49
  highline (>= 1.6.15)
68
50
  nokogiri (>= 1.5.10)
69
51
  rake
70
52
  rdoc
71
- json (1.8.3)
72
- jwt (1.5.0)
53
+ semver
54
+ json (1.8.6)
55
+ jwt (1.5.6)
73
56
  loofah (2.0.2)
74
57
  nokogiri (>= 1.5.9)
75
- mail (2.6.3)
76
- mime-types (>= 1.16, < 3)
77
- mime-types (2.6.1)
78
- mini_portile (0.6.2)
58
+ mini_portile2 (2.1.0)
79
59
  minitest (5.7.0)
80
- multi_json (1.11.0)
81
- multi_xml (0.5.5)
60
+ multi_json (1.12.1)
61
+ multi_xml (0.6.0)
82
62
  multipart-post (2.0.0)
83
- nokogiri (1.6.6.2)
84
- mini_portile (~> 0.6.0)
85
- oauth2 (1.0.0)
86
- faraday (>= 0.8, < 0.10)
63
+ nokogiri (1.6.8.1)
64
+ mini_portile2 (~> 2.1.0)
65
+ oauth2 (1.3.1)
66
+ faraday (>= 0.8, < 0.12)
87
67
  jwt (~> 1.0)
88
68
  multi_json (~> 1.3)
89
69
  multi_xml (~> 0.5)
90
- rack (~> 1.2)
91
- rack (1.6.1)
92
- rack-proxy (0.5.17)
93
- rack
70
+ rack (>= 1.2, < 3)
71
+ public_suffix (2.0.5)
72
+ rack (1.6.5)
94
73
  rack-test (0.6.3)
95
74
  rack (>= 1.0)
96
- rails (4.2.1)
97
- actionmailer (= 4.2.1)
98
- actionpack (= 4.2.1)
99
- actionview (= 4.2.1)
100
- activejob (= 4.2.1)
101
- activemodel (= 4.2.1)
102
- activerecord (= 4.2.1)
103
- activesupport (= 4.2.1)
104
- bundler (>= 1.3.0, < 2.0)
105
- railties (= 4.2.1)
106
- sprockets-rails
107
75
  rails-deprecated_sanitizer (1.0.3)
108
76
  activesupport (>= 4.2.0.alpha)
109
77
  rails-dom-testing (1.0.6)
@@ -112,14 +80,10 @@ GEM
112
80
  rails-deprecated_sanitizer (>= 1.0.1)
113
81
  rails-html-sanitizer (1.0.2)
114
82
  loofah (~> 2.0)
115
- railties (4.2.1)
116
- actionpack (= 4.2.1)
117
- activesupport (= 4.2.1)
118
- rake (>= 0.8.7)
119
- thor (>= 0.18.1, < 2.0)
120
- rake (10.4.2)
83
+ rake (12.0.0)
121
84
  rdoc (3.12.2)
122
85
  json (~> 1.4)
86
+ semver (1.0.1)
123
87
  shoulda (3.5.0)
124
88
  shoulda-context (~> 1.0, >= 1.0.1)
125
89
  shoulda-matchers (>= 1.4.1, < 3.0)
@@ -131,14 +95,7 @@ GEM
131
95
  json (~> 1.8)
132
96
  simplecov-html (~> 0.10.0)
133
97
  simplecov-html (0.10.0)
134
- sprockets (3.2.0)
135
- rack (~> 1.0)
136
- sprockets-rails (2.3.1)
137
- actionpack (>= 3.0)
138
- activesupport (>= 3.0)
139
- sprockets (>= 2.8, < 4.0)
140
- thor (0.19.1)
141
- thread_safe (0.3.5)
98
+ thread_safe (0.3.6)
142
99
  tzinfo (1.2.2)
143
100
  thread_safe (~> 0.1)
144
101
 
@@ -146,15 +103,13 @@ PLATFORMS
146
103
  ruby
147
104
 
148
105
  DEPENDENCIES
106
+ actionpack
149
107
  addressable
150
108
  bundler (~> 1.0)
151
- jeweler (~> 2.0.1)
152
- rack
153
- rack-proxy
154
- rails
109
+ jeweler (~> 2.1.2)
155
110
  rdoc (~> 3.12)
156
111
  shoulda
157
112
  simplecov
158
113
 
159
114
  BUNDLED WITH
160
- 1.10.6
115
+ 1.14.5
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # rails-reverse-proxy
2
2
 
3
- Gives you the ability to reverse proxy within Rails.
3
+ A reverse proxy for Ruby on Rails.
4
+
5
+ *A reverse proxy accepts a request from a client, forwards it to a server that can fulfill it, and returns the server's response to the client*
4
6
 
5
7
  ## Installation
6
8
 
7
- You know the drill. In your Gemfile, have the line
9
+ You know the drill. In your Gemfile
8
10
 
9
11
  ```ruby
10
12
  gem 'rails-reverse-proxy'
@@ -18,7 +20,9 @@ $ bundle
18
20
 
19
21
  ## Usage
20
22
 
21
- An example usage of this gem is hosting a WordPress site on a path within your Rails application, such as `/blog`. To do this, you'll need something like
23
+ A use case for this gem is serving WordPress on a path within your Rails application, such as `/blog`.
24
+
25
+ To do this, your controller might look like this
22
26
 
23
27
  ```ruby
24
28
  class WordpressController < ApplicationController
@@ -34,6 +38,7 @@ class WordpressController < ApplicationController
34
38
 
35
39
  # There's also other callbacks:
36
40
  # - on_set_cookies
41
+ # - on_connect
37
42
  # - on_response
38
43
  # - on_set_cookies
39
44
  # - on_success
@@ -64,7 +69,13 @@ If you'd like to bypass SSL verification
64
69
  reverse_proxy "http://localhost:8000", verify_ssl: false
65
70
  ```
66
71
 
67
- Use this method to determine what version you're running
72
+ If you'd like to customize options passed into the underlying [`Net:HTTP`](https://ruby-doc.org/stdlib-2.4.0/libdoc/net/http/rdoc/Net/HTTP.html#start-method) object
73
+
74
+ ```ruby
75
+ reverse_proxy "http://localhost:8000", http: { read_timeout: 20, open_timeout: 100 }
76
+ ```
77
+
78
+ Determine what version you're using
68
79
 
69
80
  ```ruby
70
81
  ReverseProxy.version
@@ -76,15 +87,14 @@ Feel free to open an issue!
76
87
 
77
88
  All pull requests will become first class citizens.
78
89
 
79
- ## Thanks
90
+ ## Contributors
80
91
 
81
- Special thanks to our contributors!
92
+ Special thanks to our contributors!
82
93
 
94
+ - [mediafinger](https://github.com/mediafinger)
83
95
  - [miyukki](https://github.com/miyukki)
84
96
  - [bapirex](https://github.com/bapirex)
85
-
86
- ## Copyright
87
-
88
- Copyright (c) 2016 James Hu. See [LICENSE](LICENSE) for
89
- further details.
90
-
97
+ - [marcosbeirigo](https://github.com/marcosbeirigo)
98
+ - [avinashkoulavkar](https://github.com/avinashkoulavkar)
99
+ - [jcs](https://github.com/jcs)
100
+ - [aardvarkk](https://github.com/aardvarkk)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.0
1
+ 0.10.0
@@ -1,5 +1,4 @@
1
1
  require 'rack'
2
- require 'rack-proxy'
3
2
  require 'addressable/uri'
4
3
 
5
4
  module ReverseProxy
@@ -7,6 +6,7 @@ module ReverseProxy
7
6
  @@callback_methods = [
8
7
  :on_response,
9
8
  :on_set_cookies,
9
+ :on_connect,
10
10
  :on_success,
11
11
  :on_redirect,
12
12
  :on_missing,
@@ -38,6 +38,7 @@ module ReverseProxy
38
38
  def request(env, options = {}, &block)
39
39
  options.reverse_merge!(
40
40
  headers: {},
41
+ http: {},
41
42
  path: nil,
42
43
  username: nil,
43
44
  password: nil,
@@ -81,10 +82,12 @@ module ReverseProxy
81
82
 
82
83
  http_options = {}
83
84
  http_options[:use_ssl] = (uri.scheme == "https")
84
- http_options[:verify_mode] = OpenSSL::SSL::VERIFY_NONE if options[:verify_ssl]
85
+ http_options[:verify_mode] = OpenSSL::SSL::VERIFY_NONE unless options[:verify_ssl]
86
+ http_options.merge!(options[:http]) if options[:http]
85
87
 
86
88
  # Make the request
87
89
  Net::HTTP.start(uri.hostname, uri.port, http_options) do |http|
90
+ callbacks[:on_connect].call(http)
88
91
  target_response = http.request(target_request)
89
92
  end
90
93
 
@@ -127,7 +130,7 @@ module ReverseProxy
127
130
 
128
131
  def extract_http_request_headers(env)
129
132
  headers = env.reject do |k, v|
130
- !(/^HTTP_[A-Z_]+$/ === k) || v.nil?
133
+ !(/^HTTP_[A-Z_]+$/ === k) || k == "HTTP_VERSION" || v.nil?
131
134
  end.map do |k, v|
132
135
  [reconstruct_header_name(k), v]
133
136
  end.inject(Rack::Utils::HeaderHash.new) do |hash, k_v|
@@ -49,14 +49,14 @@ module ReverseProxy
49
49
  if content_type and content_type.match /image/
50
50
  send_data body, content_type: content_type, disposition: "inline", status: code
51
51
  else
52
- render text: body, content_type: content_type, status: code
52
+ render body: body, content_type: content_type, status: code
53
53
  end
54
54
  end
55
55
 
56
56
  yield(config) if block_given?
57
57
  end
58
58
 
59
- client.request(env, options)
59
+ client.request(request.env, options)
60
60
  end
61
61
  end
62
- end
62
+ end
@@ -2,24 +2,25 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: rails-reverse-proxy 0.7.0 ruby lib
5
+ # stub: rails-reverse-proxy 0.10.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "rails-reverse-proxy"
9
- s.version = "0.7.0"
8
+ s.name = "rails-reverse-proxy".freeze
9
+ s.version = "0.10.0"
10
10
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
- s.authors = ["James Hu"]
14
- s.date = "2016-10-12"
15
- s.description = "Reverse proxy for Ruby on Rails"
16
- s.email = "hello@james.hu"
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["James Hu".freeze]
14
+ s.date = "2021-03-24"
15
+ s.description = "Reverse proxy for Ruby on Rails".freeze
16
+ s.email = "hello@james.hu".freeze
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
19
  "README.md"
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
+ ".ruby-version",
23
24
  "Gemfile",
24
25
  "Gemfile.lock",
25
26
  "LICENSE",
@@ -33,45 +34,39 @@ Gem::Specification.new do |s|
33
34
  "lib/reverse_proxy/controller.rb",
34
35
  "rails-reverse-proxy.gemspec"
35
36
  ]
36
- s.homepage = "http://github.com/axsuul/rails-reverse-proxy"
37
- s.licenses = ["MIT"]
38
- s.rubygems_version = "2.4.5"
39
- s.summary = "Reverse proxy for Ruby on Rails"
37
+ s.homepage = "http://github.com/axsuul/rails-reverse-proxy".freeze
38
+ s.licenses = ["MIT".freeze]
39
+ s.rubygems_version = "2.6.13".freeze
40
+ s.summary = "Reverse proxy for Ruby on Rails".freeze
40
41
 
41
42
  if s.respond_to? :specification_version then
42
43
  s.specification_version = 4
43
44
 
44
45
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
- s.add_runtime_dependency(%q<rails>, [">= 0"])
46
- s.add_runtime_dependency(%q<rack>, [">= 0"])
47
- s.add_runtime_dependency(%q<rack-proxy>, [">= 0"])
48
- s.add_runtime_dependency(%q<addressable>, [">= 0"])
49
- s.add_development_dependency(%q<shoulda>, [">= 0"])
50
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
51
- s.add_development_dependency(%q<bundler>, ["~> 1.0"])
52
- s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
53
- s.add_development_dependency(%q<simplecov>, [">= 0"])
46
+ s.add_runtime_dependency(%q<actionpack>.freeze, [">= 0"])
47
+ s.add_runtime_dependency(%q<addressable>.freeze, [">= 0"])
48
+ s.add_development_dependency(%q<shoulda>.freeze, [">= 0"])
49
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
50
+ s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
51
+ s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.1.2"])
52
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
54
53
  else
55
- s.add_dependency(%q<rails>, [">= 0"])
56
- s.add_dependency(%q<rack>, [">= 0"])
57
- s.add_dependency(%q<rack-proxy>, [">= 0"])
58
- s.add_dependency(%q<addressable>, [">= 0"])
59
- s.add_dependency(%q<shoulda>, [">= 0"])
60
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
61
- s.add_dependency(%q<bundler>, ["~> 1.0"])
62
- s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
63
- s.add_dependency(%q<simplecov>, [">= 0"])
54
+ s.add_dependency(%q<actionpack>.freeze, [">= 0"])
55
+ s.add_dependency(%q<addressable>.freeze, [">= 0"])
56
+ s.add_dependency(%q<shoulda>.freeze, [">= 0"])
57
+ s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
58
+ s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
59
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.1.2"])
60
+ s.add_dependency(%q<simplecov>.freeze, [">= 0"])
64
61
  end
65
62
  else
66
- s.add_dependency(%q<rails>, [">= 0"])
67
- s.add_dependency(%q<rack>, [">= 0"])
68
- s.add_dependency(%q<rack-proxy>, [">= 0"])
69
- s.add_dependency(%q<addressable>, [">= 0"])
70
- s.add_dependency(%q<shoulda>, [">= 0"])
71
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
72
- s.add_dependency(%q<bundler>, ["~> 1.0"])
73
- s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
74
- s.add_dependency(%q<simplecov>, [">= 0"])
63
+ s.add_dependency(%q<actionpack>.freeze, [">= 0"])
64
+ s.add_dependency(%q<addressable>.freeze, [">= 0"])
65
+ s.add_dependency(%q<shoulda>.freeze, [">= 0"])
66
+ s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
67
+ s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
68
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.1.2"])
69
+ s.add_dependency(%q<simplecov>.freeze, [">= 0"])
75
70
  end
76
71
  end
77
72
 
metadata CHANGED
@@ -1,45 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-reverse-proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Hu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-12 00:00:00.000000000 Z
11
+ date: 2021-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rack
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rack-proxy
14
+ name: actionpack
43
15
  requirement: !ruby/object:Gem::Requirement
44
16
  requirements:
45
17
  - - ">="
@@ -114,14 +86,14 @@ dependencies:
114
86
  requirements:
115
87
  - - "~>"
116
88
  - !ruby/object:Gem::Version
117
- version: 2.0.1
89
+ version: 2.1.2
118
90
  type: :development
119
91
  prerelease: false
120
92
  version_requirements: !ruby/object:Gem::Requirement
121
93
  requirements:
122
94
  - - "~>"
123
95
  - !ruby/object:Gem::Version
124
- version: 2.0.1
96
+ version: 2.1.2
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: simplecov
127
99
  requirement: !ruby/object:Gem::Requirement
@@ -145,6 +117,7 @@ extra_rdoc_files:
145
117
  - README.md
146
118
  files:
147
119
  - ".document"
120
+ - ".ruby-version"
148
121
  - Gemfile
149
122
  - Gemfile.lock
150
123
  - LICENSE
@@ -177,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
150
  version: '0'
178
151
  requirements: []
179
152
  rubyforge_project:
180
- rubygems_version: 2.4.5
153
+ rubygems_version: 2.6.13
181
154
  signing_key:
182
155
  specification_version: 4
183
156
  summary: Reverse proxy for Ruby on Rails