experella-proxy 0.0.13 → 0.0.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -0
- data/lib/experella-proxy/http_status_codes.rb +3 -1
- data/lib/experella-proxy/response.rb +1 -1
- data/lib/experella-proxy/version.rb +3 -1
- data/spec/experella-proxy/response_spec.rb +11 -0
- metadata +30 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7651f0e09e3c9180b861c3bf9cb35576fa2a3aed
|
4
|
+
data.tar.gz: f5f847114f2ac3ad1e78a2d9ffaa130f55fdaf21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 910370bdb8367d1604833ad27c1a810674f730a7177782bae5a698e06487ffbe9e31a539123b95a4d5558f40de1bf618e61a96ab6bd8585b49f75cd1addbceac
|
7
|
+
data.tar.gz: e2656fe2f39cbace1928d9767929a8b2c164d9e4d31894bc4fdbedd0308a82debcfe66168444e790704440259c7299ffa4401b6654cca7c1339e77a7f947eaa5
|
data/README.md
CHANGED
@@ -17,6 +17,7 @@ Supports:
|
|
17
17
|
+ Request header manipulation completely configurable for each server
|
18
18
|
+ Daemonized control using ruby [Daemons](http://daemons.rubyforge.org/)
|
19
19
|
+ TLS support and a default self-signed ssl certification
|
20
|
+
+ Full request and response logging at practically any point in the proxy
|
20
21
|
|
21
22
|
Proxy uses [http_parser](https://github.com/tmm1/http_parser.rb) to parse http data and is thereby subject to the parsers restrictions
|
22
23
|
|
@@ -25,6 +26,11 @@ as it can severely influence proxy performance overhead.
|
|
25
26
|
|
26
27
|
It balances for every single http-request and not per client/connection.
|
27
28
|
|
29
|
+
The proxy is also an excellent man-in-the-middle logger. You can setup log events for http requests and
|
30
|
+
responses (partially, e.g. only specific headers or even full message content) at any point of transmission
|
31
|
+
and thereby see what the client is sending, what the server is receiving and vice versa.
|
32
|
+
Checkout how to setup events for that.
|
33
|
+
|
28
34
|
##Install as Gem
|
29
35
|
|
30
36
|
To use experella-proxy simply install it as a gem.
|
@@ -234,6 +240,21 @@ Additionally you can activate simplecov code coverage analysis for specs by sett
|
|
234
240
|
$> COVERAGE=true rake spec
|
235
241
|
```
|
236
242
|
|
243
|
+
## Troubleshooting
|
244
|
+
|
245
|
+
Reported by [Lucas Mendelowski](https://github.com/lowski):
|
246
|
+
|
247
|
+
If you get error: `'start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)`
|
248
|
+
make sure you aliased 127.0.0.2, 127.0.0.10 and 127.0.0.11 to 127.0.0.1.
|
249
|
+
|
250
|
+
On OS X you can do it by executing following commands:
|
251
|
+
|
252
|
+
```
|
253
|
+
sudo ifconfig lo0 alias 127.0.0.2 up
|
254
|
+
sudo ifconfig lo0 alias 127.0.0.10 up
|
255
|
+
sudo ifconfig lo0 alias 127.0.0.11 up
|
256
|
+
```
|
257
|
+
|
237
258
|
## Additional Information
|
238
259
|
|
239
260
|
+ [em-proxy](https://github.com/igrigorik/em-proxy)
|
@@ -34,11 +34,13 @@ module ExperellaProxy
|
|
34
34
|
413 => 'Request Entity Too Large',
|
35
35
|
414 => 'Request-URI Too Large',
|
36
36
|
415 => 'Unsupported Media Type',
|
37
|
+
422 => 'Unprocessable Entity',
|
37
38
|
500 => 'Internal Server Error',
|
38
39
|
501 => 'Not Implemented',
|
39
40
|
502 => 'Bad Gateway',
|
40
41
|
503 => 'Service Unavailable',
|
41
42
|
504 => 'Gateway Time-out',
|
42
|
-
505 => 'HTTP Version not supported'
|
43
|
+
505 => 'HTTP Version not supported',
|
44
|
+
522 => 'Uknown Error'
|
43
45
|
}
|
44
46
|
end
|
@@ -81,7 +81,7 @@ module ExperellaProxy
|
|
81
81
|
# start line
|
82
82
|
@send_buffer << "HTTP/1.1 "
|
83
83
|
@send_buffer << @status_code.to_s + ' '
|
84
|
-
@send_buffer << HTTP_STATUS_CODES
|
84
|
+
@send_buffer << HTTP_STATUS_CODES.fetch(@status_code, "Status-Code unknown to experella") + "\r\n"
|
85
85
|
# header fields
|
86
86
|
@header.each do |key, value|
|
87
87
|
key_val = key.to_s + ": "
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module ExperellaProxy
|
2
2
|
# ExperellaProxy Gemversion
|
3
|
+
# 0.0.14
|
4
|
+
# * added error handling for unknown http status codes
|
3
5
|
# 0.0.13
|
4
6
|
# * headers are no longer folded if they came unfolded but headers stay as is
|
5
7
|
# 0.0.12.WIP
|
@@ -31,5 +33,5 @@ module ExperellaProxy
|
|
31
33
|
# * added self-signed SSL certificate for TLS/HTTPS
|
32
34
|
# * added config template init functionality
|
33
35
|
#
|
34
|
-
VERSION = "0.0.
|
36
|
+
VERSION = "0.0.14"
|
35
37
|
end
|
@@ -54,6 +54,17 @@ describe ExperellaProxy::Response do
|
|
54
54
|
data.should include("Via-X: George\r\n")
|
55
55
|
data.end_with?("\r\n\r\n").should be_true
|
56
56
|
end
|
57
|
+
|
58
|
+
context "when status code does not exist in HTTP_STATUS_CODES" do
|
59
|
+
it "returns Uknown Error" do
|
60
|
+
response.instance_variable_set(:@status_code, 99)
|
61
|
+
response.update_header("Connection" => "keep-alive",
|
62
|
+
:"Via-X" => %w(Lukas Amy George))
|
63
|
+
response.reconstruct_header
|
64
|
+
data = response.flush
|
65
|
+
data.start_with?("HTTP/1.1 99 Status-Code unknown to experella\r\n").should be_true
|
66
|
+
end
|
67
|
+
end
|
57
68
|
end
|
58
69
|
|
59
70
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: experella-proxy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis-Florian Herr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: daemons
|
@@ -189,38 +189,39 @@ extra_rdoc_files:
|
|
189
189
|
files:
|
190
190
|
- bin/experella-proxy
|
191
191
|
- dev/experella-proxy
|
192
|
-
- lib/experella-proxy/
|
193
|
-
- lib/experella-proxy/
|
194
|
-
- lib/experella-proxy/backend_server.rb
|
192
|
+
- lib/experella-proxy/configuration.rb
|
193
|
+
- lib/experella-proxy/version.rb
|
195
194
|
- lib/experella-proxy/response.rb
|
196
|
-
- lib/experella-proxy/
|
197
|
-
- lib/experella-proxy/connection_manager.rb
|
195
|
+
- lib/experella-proxy/proxy.rb
|
198
196
|
- lib/experella-proxy/connection.rb
|
199
|
-
- lib/experella-proxy/version.rb
|
200
|
-
- lib/experella-proxy/request.rb
|
201
197
|
- lib/experella-proxy/globals.rb
|
202
|
-
- lib/experella-proxy/
|
203
|
-
- lib/experella-proxy/
|
198
|
+
- lib/experella-proxy/backend_server.rb
|
199
|
+
- lib/experella-proxy/connection_manager.rb
|
200
|
+
- lib/experella-proxy/backend.rb
|
201
|
+
- lib/experella-proxy/http_status_codes.rb
|
202
|
+
- lib/experella-proxy/server.rb
|
203
|
+
- lib/experella-proxy/request.rb
|
204
204
|
- lib/experella-proxy.rb
|
205
|
+
- config/default/ssl/certs/experella-proxy.pem
|
206
|
+
- config/default/ssl/private/experella-proxy.key
|
205
207
|
- config/default/404.html
|
206
|
-
- config/default/503.html
|
207
208
|
- config/default/config.rb
|
208
|
-
- config/default/
|
209
|
-
-
|
209
|
+
- config/default/503.html
|
210
|
+
- spec/fixtures/test_config.rb
|
210
211
|
- spec/fixtures/404.html
|
212
|
+
- spec/fixtures/spec.log
|
211
213
|
- spec/fixtures/503.html
|
212
|
-
- spec/
|
213
|
-
- spec/experella-proxy/configuration_spec.rb
|
214
|
-
- spec/experella-proxy/response_spec.rb
|
215
|
-
- spec/experella-proxy/experella-proxy_spec.rb
|
216
|
-
- spec/experella-proxy/request_spec.rb
|
214
|
+
- spec/echo-server/echo_server.rb
|
217
215
|
- spec/experella-proxy/connection_manager_spec.rb
|
216
|
+
- spec/experella-proxy/request_spec.rb
|
218
217
|
- spec/experella-proxy/backend_server_spec.rb
|
219
|
-
- spec/
|
218
|
+
- spec/experella-proxy/response_spec.rb
|
219
|
+
- spec/experella-proxy/configuration_spec.rb
|
220
|
+
- spec/experella-proxy/experella-proxy_spec.rb
|
220
221
|
- spec/spec_helper.rb
|
221
222
|
- test/sinatra/server_one.rb
|
222
|
-
- test/sinatra/hello_world_server.rb
|
223
223
|
- test/sinatra/server_two.rb
|
224
|
+
- test/sinatra/hello_world_server.rb
|
224
225
|
- .gitignore
|
225
226
|
- Gemfile
|
226
227
|
- experella-proxy.gemspec
|
@@ -252,18 +253,19 @@ signing_key:
|
|
252
253
|
specification_version: 4
|
253
254
|
summary: experella-proxy gem
|
254
255
|
test_files:
|
256
|
+
- spec/fixtures/test_config.rb
|
255
257
|
- spec/fixtures/404.html
|
258
|
+
- spec/fixtures/spec.log
|
256
259
|
- spec/fixtures/503.html
|
257
|
-
- spec/
|
258
|
-
- spec/experella-proxy/configuration_spec.rb
|
259
|
-
- spec/experella-proxy/response_spec.rb
|
260
|
-
- spec/experella-proxy/experella-proxy_spec.rb
|
261
|
-
- spec/experella-proxy/request_spec.rb
|
260
|
+
- spec/echo-server/echo_server.rb
|
262
261
|
- spec/experella-proxy/connection_manager_spec.rb
|
262
|
+
- spec/experella-proxy/request_spec.rb
|
263
263
|
- spec/experella-proxy/backend_server_spec.rb
|
264
|
-
- spec/
|
264
|
+
- spec/experella-proxy/response_spec.rb
|
265
|
+
- spec/experella-proxy/configuration_spec.rb
|
266
|
+
- spec/experella-proxy/experella-proxy_spec.rb
|
265
267
|
- spec/spec_helper.rb
|
266
268
|
- test/sinatra/server_one.rb
|
267
|
-
- test/sinatra/hello_world_server.rb
|
268
269
|
- test/sinatra/server_two.rb
|
270
|
+
- test/sinatra/hello_world_server.rb
|
269
271
|
has_rdoc:
|