forward-proxy 0.2.0 → 0.3.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: 628359d25536c4190014c9e082fff41b2adef209f04a62d8a6b217c078f3b58b
4
- data.tar.gz: 7834932b7242fd66c120d270a922e385a6a58ab63c65e8ce2b7957da43ba5a11
3
+ metadata.gz: a2f3ade2ec039aaadb19726b347d6cddb7db0f2590b91ab5d6eb69b8fd5c0aee
4
+ data.tar.gz: 0733602e8b7bab9e95df20cff04bc11981964260db17242460a2c26341a9032b
5
5
  SHA512:
6
- metadata.gz: 8c47ab1d691807a23ba779f1ae8d4feecd32300f8d840044f66a5cc2f40ccd33c095db60ca9e3f99fb3c8fd60c02ae46d5d8d07b6a4de6298bef24731fb57cb4
7
- data.tar.gz: 609a35651496d98e4977f3691c7834efd58fe736615b3b4594e0bc61d11dad0088f11f535f6b287db85f95c1cc8ab55ea2a536447028b690d92ffd0aa3e60669
6
+ metadata.gz: 9c25af1d60872d711a475028eddc06bc54ee7dd609cd3cbd1858ff667a1facb5e1cfb7ca38889ab7a8603d018a6c69e4b56ee11eaba525818f2cd0bf0a7b59c5
7
+ data.tar.gz: d105d9a16183951129e62ed1b905a12e12f251541154e90869bb9a74449c10925ec19e3f3fce8d9300f7af38a00dcf6aa26e0a4f2d37ca9882a1bc64a494cba8
@@ -2,4 +2,4 @@ module ForwardProxy
2
2
  module Errors
3
3
  class HTTPMethodNotImplemented < StandardError; end
4
4
  end
5
- end
5
+ end
@@ -2,4 +2,4 @@ module ForwardProxy
2
2
  module Errors
3
3
  class HTTPParseError < StandardError; end
4
4
  end
5
- end
5
+ end
@@ -35,14 +35,8 @@ module ForwardProxy
35
35
  else
36
36
  raise Errors::HTTPMethodNotImplemented
37
37
  end
38
- rescue => e
39
- client_conn.puts <<~eos.chomp
40
- HTTP/1.1 502
41
- Via: #{HEADER_VIA}
42
- eos
43
-
44
- puts e.message
45
- puts e.backtrace.map { |line| " #{line}" }
38
+ rescue => err
39
+ handle_error(err, client_conn)
46
40
  ensure
47
41
  client_conn.close
48
42
  end
@@ -58,7 +52,7 @@ module ForwardProxy
58
52
  if socket
59
53
  log("Shutting down")
60
54
 
61
- socket.close
55
+ socket.close
62
56
  end
63
57
  end
64
58
 
@@ -119,17 +113,18 @@ module ForwardProxy
119
113
  def handle(client_conn, req)
120
114
  Net::HTTP.start(req.host, req.port) do |http|
121
115
  http.request(map_webrick_to_net_http_req(req)) do |resp|
116
+ headers= resp.to_hash.merge(Via: [HEADER_VIA, resp['Via']].compact.join(', '))
117
+
122
118
  client_conn.puts <<~eos.chomp
123
119
  HTTP/1.1 #{resp.code}
124
- Via: #{[HEADER_VIA, resp['Via']].compact.join(', ')}
125
- #{resp.each.map { |header, value| "#{header}: #{value}" }.join("\n")}\n\n
120
+ #{headers.map { |header, value| "#{header}: #{value}" }.join("\n")}\n\n
126
121
  eos
127
122
 
128
- # The following comments are taken from:
123
+ # The following comments are taken from:
129
124
  # https://docs.ruby-lang.org/en/2.0.0/Net/HTTP.html#class-Net::HTTP-label-Streaming+Response+Bodies
130
-
125
+
131
126
  # By default Net::HTTP reads an entire response into memory. If you are
132
- # handling large files or wish to implement a progress bar you can
127
+ # handling large files or wish to implement a progress bar you can
133
128
  # instead stream the body directly to an IO.
134
129
  resp.read_body do |chunk|
135
130
  client_conn << chunk
@@ -138,6 +133,16 @@ module ForwardProxy
138
133
  end
139
134
  end
140
135
 
136
+ def handle_error(err, client_conn)
137
+ client_conn.puts <<~eos.chomp
138
+ HTTP/1.1 502
139
+ Via: #{HEADER_VIA}
140
+ eos
141
+
142
+ log(err.message, "ERROR")
143
+ puts err.backtrace.map { |line| " #{line}" }
144
+ end
145
+
141
146
  def map_webrick_to_net_http_req(req)
142
147
  req_headers = Hash[req.header.map { |k, v| [k, v.first] }]
143
148
 
@@ -1,3 +1,3 @@
1
1
  module ForwardProxy
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/forward_proxy.rb CHANGED
@@ -1,4 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
1
+ $LOAD_PATH.unshift File.dirname(__FILE__)
2
2
 
3
3
  require 'forward_proxy/version'
4
4
  require 'forward_proxy/server'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forward-proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Moriarty
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-06 00:00:00.000000000 Z
11
+ date: 2021-06-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Forward proxy using just Ruby standard libraries.
14
14
  email: