waitress-core 0.4.2 → 0.5.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 +4 -4
- data/lib/waitress.rb +1 -0
- data/lib/waitress/configure.rb +8 -0
- data/lib/waitress/handlers/handler500.rb +28 -0
- data/lib/waitress/server.rb +9 -2
- data/lib/waitress/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 904a18272ce3e1f837cb26e024248caaf9da1b3e
|
4
|
+
data.tar.gz: dbdbdcafbf43cee59d9a84aa0d0aeab759d6b731
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f403802ef5b0baff1a4c5cd3d54d9dc90c435d77e765fd770d7e44e774c0c86dcacd517a85022097c3cb1354e7b52523fc2fadc313958a670a2a4e7cb05ebe8b
|
7
|
+
data.tar.gz: ef03ff5d5d1fe612e44cceda6db4df092784c140ea2ba1b968c19351bc3a7e76fb264ed32159d5a170e2b7dd8c680e38f5a263be10f9adcd3b809d89e5c7115e
|
data/lib/waitress.rb
CHANGED
@@ -14,6 +14,7 @@ require 'waitress/handlers/handler'
|
|
14
14
|
require 'waitress/handlers/dirhandler'
|
15
15
|
require 'waitress/handlers/handler404'
|
16
16
|
require 'waitress/handlers/libhandler'
|
17
|
+
require 'waitress/handlers/handler500'
|
17
18
|
require 'waitress/chef'
|
18
19
|
require 'waitress/evalbind'
|
19
20
|
require 'waitress/restful/restbuilder'
|
data/lib/waitress/configure.rb
CHANGED
@@ -29,6 +29,7 @@ module Waitress
|
|
29
29
|
conf.hosts.each { |h| s << h }
|
30
30
|
s.set_processes conf.processes
|
31
31
|
s.ports *conf.ports
|
32
|
+
s.internal_error conf.internal_error
|
32
33
|
s
|
33
34
|
end
|
34
35
|
puts "Waitress Configuration Complete"
|
@@ -84,11 +85,13 @@ module Waitress
|
|
84
85
|
attr_accessor :hosts
|
85
86
|
attr_accessor :ports
|
86
87
|
attr_accessor :processes
|
88
|
+
attr_accessor :internal_error
|
87
89
|
|
88
90
|
def initialize configure, *ports
|
89
91
|
@ports = *ports
|
90
92
|
@hosts = []
|
91
93
|
@configure = configure
|
94
|
+
@internal_error = false
|
92
95
|
|
93
96
|
@processes = 5
|
94
97
|
@processes = ENV["WAITRESS_PROCESSES"].to_i if ENV.include? "WAITRESS_PROCESSES"
|
@@ -116,6 +119,11 @@ module Waitress
|
|
116
119
|
def less_watch time
|
117
120
|
Waitress::LESSWatcher.set_time time
|
118
121
|
end
|
122
|
+
|
123
|
+
# Set to true to enable 500 error backtraces in the browser
|
124
|
+
def detailed_500 enabled
|
125
|
+
@internal_error = enabled
|
126
|
+
end
|
119
127
|
|
120
128
|
def to_s
|
121
129
|
m = lambda { |a,x| x.nil? ? "" : "\r\n#{a}=#{x.inspect}" }
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Waitress
|
2
|
+
|
3
|
+
# The 500 Handler is a simple handler which is triggered when the server encounters an error
|
4
|
+
# in the serving of a request. If possible, the handler will alert the client of an internal
|
5
|
+
# server error, and if applicable, will display a stacktrace. Stacktraces may be disabled
|
6
|
+
# in the server configuration.
|
7
|
+
class Handler500
|
8
|
+
def self.trigger client, server, error, backtrace
|
9
|
+
begin
|
10
|
+
client.write "HTTP/1.1 500 Internal Server Error\r\n"
|
11
|
+
client.write "Content-Type: text/html\r\n"
|
12
|
+
client.write "\r\n"
|
13
|
+
client.write "<center> <h1> 500 </h1> <h2> Internal Server Error </h2>"
|
14
|
+
|
15
|
+
if backtrace
|
16
|
+
client.write "<h3> Error Backtrace: </h3>"
|
17
|
+
client.write "<div style='text-align: left; width: 50%'>"
|
18
|
+
client.write "<p> #{error.backtrace.join '<br>'} </p> </div>"
|
19
|
+
end
|
20
|
+
|
21
|
+
client.write "<hr /> <h5> Waitress HTTP Server Version #{Waitress::VERSION} </h5> </center>"
|
22
|
+
client.close
|
23
|
+
rescue => e
|
24
|
+
# Do nothing, it's a lost cause
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/waitress/server.rb
CHANGED
@@ -21,6 +21,7 @@ module Waitress
|
|
21
21
|
@ports = ports
|
22
22
|
@processes = 5
|
23
23
|
@processes = ENV["WAITRESS_PROCESSES"].to_i if ENV.include? "WAITRESS_PROCESSES"
|
24
|
+
@backtrace_500 = false
|
24
25
|
@running_processes = []
|
25
26
|
end
|
26
27
|
|
@@ -68,6 +69,11 @@ module Waitress
|
|
68
69
|
def read_io io
|
69
70
|
handle_client io
|
70
71
|
end
|
72
|
+
|
73
|
+
# Set to true to enable clients to view the 500 error backtrace
|
74
|
+
def internal_error enabled
|
75
|
+
@backtrace_500 = enabled
|
76
|
+
end
|
71
77
|
|
72
78
|
:private
|
73
79
|
def launch_port port
|
@@ -123,8 +129,9 @@ module Waitress
|
|
123
129
|
rescue EOFError, Errno::ECONNRESET, Errno::EPIPE, Errno::EINVAL, Errno::EBADF
|
124
130
|
client_socket.close rescue nil
|
125
131
|
rescue => e
|
126
|
-
puts "Client Error: #{e}"
|
127
|
-
puts e.backtrace
|
132
|
+
# puts "Client Error: #{e}"
|
133
|
+
# puts e.backtrace
|
134
|
+
Handler500.trigger client_socket, self, e, @backtrace_500
|
128
135
|
end
|
129
136
|
client_socket.close rescue nil
|
130
137
|
end
|
data/lib/waitress/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waitress-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaci Brunning
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -194,6 +194,7 @@ files:
|
|
194
194
|
- lib/waitress/handlers/dirhandler.rb
|
195
195
|
- lib/waitress/handlers/handler.rb
|
196
196
|
- lib/waitress/handlers/handler404.rb
|
197
|
+
- lib/waitress/handlers/handler500.rb
|
197
198
|
- lib/waitress/handlers/libhandler.rb
|
198
199
|
- lib/waitress/kernel.rb
|
199
200
|
- lib/waitress/parse/query.rb
|