rack-proxy 0.5.6 → 0.5.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/Readme +16 -0
- data/lib/rack/http_streaming_response.rb +2 -0
- data/lib/rack/proxy.rb +5 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 053b64c1db8f801c328770098e15672e2b17da53
|
4
|
+
data.tar.gz: 7b114c1eecafdc79dab20c75a0daf073b87496be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd49785b803394666dea8e1bd14d0afedb2da3b2d7f72ea6b57167d2cdc83cbf66e9864ce7c3d9314e7a00157531b11bb70e41cb4dc9341332317c6baf091750
|
7
|
+
data.tar.gz: a30031d0598443126fcf82213dee26fd20443b4cd7f547080950d9a8f88b31dd712a245d0a9ef720e51ad54e885ba928449d08816179531b16ce0af093aae663
|
data/Gemfile.lock
CHANGED
data/Readme
CHANGED
@@ -22,6 +22,22 @@ class Foo < Rack::Proxy
|
|
22
22
|
|
23
23
|
end
|
24
24
|
|
25
|
+
Example: disable SSL session verification when proxying a server with e.g. self-signed SSL certs
|
26
|
+
|
27
|
+
class TrustingProxy < Rack::Proxy
|
28
|
+
|
29
|
+
def rewrite_env(env)
|
30
|
+
env["rack.ssl_verify_none"] = true
|
31
|
+
|
32
|
+
env
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
The same can be achieved for *all* requests going through the `Rack::Proxy` instance by using
|
38
|
+
|
39
|
+
Rack::Proxy.new(ssl_verify_none: true)
|
40
|
+
|
25
41
|
See tests for more examples.
|
26
42
|
|
27
43
|
WARNING: Doesn't work with fakeweb/webmock. Both libraries monkey-patch net/http code.
|
@@ -5,6 +5,7 @@ module Rack
|
|
5
5
|
# Wraps the hacked net/http in a Rack way.
|
6
6
|
class HttpStreamingResponse
|
7
7
|
attr_accessor :use_ssl
|
8
|
+
attr_accessor :verify_mode
|
8
9
|
|
9
10
|
def initialize(request, host, port = nil)
|
10
11
|
@request, @host, @port = request, host, port
|
@@ -61,6 +62,7 @@ module Rack
|
|
61
62
|
@session ||= begin
|
62
63
|
http = Net::HTTP.new @host, @port
|
63
64
|
http.use_ssl = self.use_ssl
|
65
|
+
http.verify_mode = self.verify_mode
|
64
66
|
http.start
|
65
67
|
end
|
66
68
|
end
|
data/lib/rack/proxy.rb
CHANGED
@@ -5,11 +5,12 @@ module Rack
|
|
5
5
|
|
6
6
|
# Subclass and bring your own #rewrite_request and #rewrite_response
|
7
7
|
class Proxy
|
8
|
-
VERSION = "0.5.
|
8
|
+
VERSION = "0.5.8"
|
9
9
|
|
10
10
|
# @option opts [String, URI::HTTP] :backend Backend host to proxy requests to
|
11
11
|
def initialize(opts={})
|
12
12
|
@streaming = opts.fetch(:streaming, true)
|
13
|
+
@ssl_verify_none = opts.fetch(:ssl_verify_none, false)
|
13
14
|
@backend = URI(opts[:backend]) if opts[:backend]
|
14
15
|
end
|
15
16
|
|
@@ -57,14 +58,17 @@ module Rack
|
|
57
58
|
|
58
59
|
backend = @backend || source_request
|
59
60
|
use_ssl = backend.scheme == "https"
|
61
|
+
ssl_verify_none = (env.delete('rack.ssl_verify_none') || @ssl_verify_none) == true
|
60
62
|
|
61
63
|
# Create the response
|
62
64
|
if @streaming
|
63
65
|
# streaming response (the actual network communication is deferred, a.k.a. streamed)
|
64
66
|
target_response = HttpStreamingResponse.new(target_request, backend.host, backend.port)
|
65
67
|
target_response.use_ssl = use_ssl
|
68
|
+
target_response.verify_mode = OpenSSL::SSL::VERIFY_NONE if use_ssl && ssl_verify_none
|
66
69
|
else
|
67
70
|
target_response = Net::HTTP.start(backend.host, backend.port, :use_ssl => use_ssl) do |http|
|
71
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if use_ssl && ssl_verify_none
|
68
72
|
http.request(target_request)
|
69
73
|
end
|
70
74
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-proxy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacek Becela
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|