webrick 1.7.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of webrick might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/README.md +1 -1
- data/Rakefile +10 -3
- data/lib/webrick/accesslog.rb +1 -1
- data/lib/webrick/cgi.rb +1 -1
- data/lib/webrick/compat.rb +1 -1
- data/lib/webrick/config.rb +1 -1
- data/lib/webrick/cookie.rb +2 -2
- data/lib/webrick/htmlutils.rb +1 -1
- data/lib/webrick/httpauth/authenticator.rb +1 -1
- data/lib/webrick/httpauth/basicauth.rb +1 -1
- data/lib/webrick/httpauth/digestauth.rb +1 -1
- data/lib/webrick/httpauth/htdigest.rb +1 -1
- data/lib/webrick/httpauth/htgroup.rb +1 -1
- data/lib/webrick/httpauth/htpasswd.rb +1 -1
- data/lib/webrick/httpauth/userdb.rb +1 -1
- data/lib/webrick/httpauth.rb +1 -1
- data/lib/webrick/httpproxy.rb +1 -1
- data/lib/webrick/httprequest.rb +9 -5
- data/lib/webrick/httpresponse.rb +36 -12
- data/lib/webrick/https.rb +1 -1
- data/lib/webrick/httpserver.rb +2 -2
- data/lib/webrick/httpservlet/abstract.rb +1 -1
- data/lib/webrick/httpservlet/cgi_runner.rb +2 -2
- data/lib/webrick/httpservlet/cgihandler.rb +1 -1
- data/lib/webrick/httpservlet/erbhandler.rb +1 -1
- data/lib/webrick/httpservlet/filehandler.rb +5 -5
- data/lib/webrick/httpservlet/prochandler.rb +2 -1
- data/lib/webrick/httpservlet.rb +1 -1
- data/lib/webrick/httpstatus.rb +1 -1
- data/lib/webrick/httputils.rb +15 -4
- data/lib/webrick/httpversion.rb +1 -1
- data/lib/webrick/log.rb +7 -7
- data/lib/webrick/server.rb +2 -2
- data/lib/webrick/ssl.rb +17 -13
- data/lib/webrick/utils.rb +2 -2
- data/lib/webrick/version.rb +2 -2
- data/webrick.gemspec +1 -5
- metadata +5 -21
- data/bin/console +0 -14
- data/bin/setup +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32a11a2138bc27a617a7f69e300868cc4957cd208e5358d17aa5d3135c645c1c
|
4
|
+
data.tar.gz: 3be4ec01ad7ae153f32db3ab01133c7f7e308e7f6bf984aed5eb08a0646622bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2eef98cfcc5a16f9da6b99e057ddbe5bb3bb00db407c259fc424092cdcefa94e3cec9dd82f71ab06fe9c423658ec0a4eb33a051f6bf9e3c034da19dc272449f
|
7
|
+
data.tar.gz: a0c44a9d8ca6e34666dd783941b908e7c7e496593f93b3f867cec75005b6727c3c7b276ee155e8eb2a886d2b90e47dbdf2ba42f97a1287addd34a76024502896
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -54,7 +54,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
54
54
|
|
55
55
|
## Contributing
|
56
56
|
|
57
|
-
Bug reports and
|
57
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ruby/webrick.
|
58
58
|
|
59
59
|
## License
|
60
60
|
|
data/Rakefile
CHANGED
@@ -2,9 +2,16 @@ require "bundler/gem_tasks"
|
|
2
2
|
require "rake/testtask"
|
3
3
|
|
4
4
|
Rake::TestTask.new(:test) do |t|
|
5
|
-
t.libs << "test
|
6
|
-
t.
|
7
|
-
t.test_files = FileList[
|
5
|
+
t.libs << "test/lib"
|
6
|
+
t.ruby_opts << "-rhelper"
|
7
|
+
t.test_files = FileList["test/**/test_*.rb"]
|
8
|
+
end
|
9
|
+
|
10
|
+
task :sync_tool do
|
11
|
+
require 'fileutils'
|
12
|
+
FileUtils.cp "../ruby/tool/lib/core_assertions.rb", "./test/lib"
|
13
|
+
FileUtils.cp "../ruby/tool/lib/envutil.rb", "./test/lib"
|
14
|
+
FileUtils.cp "../ruby/tool/lib/find_executable.rb", "./test/lib"
|
8
15
|
end
|
9
16
|
|
10
17
|
task :default => :test
|
data/lib/webrick/accesslog.rb
CHANGED
data/lib/webrick/cgi.rb
CHANGED
data/lib/webrick/compat.rb
CHANGED
data/lib/webrick/config.rb
CHANGED
data/lib/webrick/cookie.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# cookie.rb -- Cookie class
|
4
4
|
#
|
@@ -92,7 +92,7 @@ module WEBrick
|
|
92
92
|
# The cookie string suitable for use in an HTTP header
|
93
93
|
|
94
94
|
def to_s
|
95
|
-
ret = ""
|
95
|
+
ret = +""
|
96
96
|
ret << @name << "=" << @value
|
97
97
|
ret << "; " << "Version=" << @version.to_s if @version > 0
|
98
98
|
ret << "; " << "Domain=" << @domain if @domain
|
data/lib/webrick/htmlutils.rb
CHANGED
data/lib/webrick/httpauth.rb
CHANGED
data/lib/webrick/httpproxy.rb
CHANGED
data/lib/webrick/httprequest.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# httprequest.rb -- HTTPRequest Class
|
4
4
|
#
|
@@ -171,7 +171,7 @@ module WEBrick
|
|
171
171
|
@accept_charset = []
|
172
172
|
@accept_encoding = []
|
173
173
|
@accept_language = []
|
174
|
-
@body = ""
|
174
|
+
@body = +""
|
175
175
|
|
176
176
|
@addr = @peeraddr = nil
|
177
177
|
@attributes = {}
|
@@ -491,8 +491,7 @@ module WEBrick
|
|
491
491
|
if @forwarded_host
|
492
492
|
host, port = @forwarded_host, @forwarded_port
|
493
493
|
elsif self["host"]
|
494
|
-
|
495
|
-
host, port = *self['host'].scan(pattern)[0]
|
494
|
+
host, port = parse_host_request_line(self["host"])
|
496
495
|
elsif @addr.size > 0
|
497
496
|
host, port = @addr[2], @addr[1]
|
498
497
|
else
|
@@ -504,6 +503,11 @@ module WEBrick
|
|
504
503
|
return URI::parse(uri.to_s)
|
505
504
|
end
|
506
505
|
|
506
|
+
def parse_host_request_line(host)
|
507
|
+
pattern = /\A(#{URI::REGEXP::PATTERN::HOST})(?::(\d+))?\z/no
|
508
|
+
host.scan(pattern)[0]
|
509
|
+
end
|
510
|
+
|
507
511
|
def read_body(socket, block)
|
508
512
|
return unless socket
|
509
513
|
if tc = self['transfer-encoding']
|
@@ -522,7 +526,7 @@ module WEBrick
|
|
522
526
|
if @remaining_size > 0 && @socket.eof?
|
523
527
|
raise HTTPStatus::BadRequest, "invalid body size."
|
524
528
|
end
|
525
|
-
elsif BODY_CONTAINABLE_METHODS.member?(@request_method)
|
529
|
+
elsif BODY_CONTAINABLE_METHODS.member?(@request_method)
|
526
530
|
raise HTTPStatus::LengthRequired
|
527
531
|
end
|
528
532
|
return @body
|
data/lib/webrick/httpresponse.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# httpresponse.rb -- HTTPResponse Class
|
4
4
|
#
|
@@ -105,6 +105,11 @@ module WEBrick
|
|
105
105
|
|
106
106
|
attr_reader :sent_size
|
107
107
|
|
108
|
+
##
|
109
|
+
# Set the response body proc as an streaming/upgrade response.
|
110
|
+
|
111
|
+
attr_accessor :upgrade
|
112
|
+
|
108
113
|
##
|
109
114
|
# Creates a new HTTP response object. WEBrick::Config::HTTP is the
|
110
115
|
# default configuration.
|
@@ -217,6 +222,16 @@ module WEBrick
|
|
217
222
|
@keep_alive
|
218
223
|
end
|
219
224
|
|
225
|
+
##
|
226
|
+
# Sets the response to be a streaming/upgrade response.
|
227
|
+
# This will disable keep-alive and chunked transfer encoding.
|
228
|
+
|
229
|
+
def upgrade!(protocol)
|
230
|
+
@upgrade = protocol
|
231
|
+
@keep_alive = false
|
232
|
+
@chunked = false
|
233
|
+
end
|
234
|
+
|
220
235
|
##
|
221
236
|
# Sends the response on +socket+
|
222
237
|
|
@@ -242,6 +257,14 @@ module WEBrick
|
|
242
257
|
@header['server'] ||= @config[:ServerSoftware]
|
243
258
|
@header['date'] ||= Time.now.httpdate
|
244
259
|
|
260
|
+
if @upgrade
|
261
|
+
@header['connection'] = 'upgrade'
|
262
|
+
@header['upgrade'] = @upgrade
|
263
|
+
@keep_alive = false
|
264
|
+
|
265
|
+
return
|
266
|
+
end
|
267
|
+
|
245
268
|
# HTTP/0.9 features
|
246
269
|
if @request_http_version < "1.0"
|
247
270
|
@http_version = HTTPVersion.new("0.9")
|
@@ -268,11 +291,10 @@ module WEBrick
|
|
268
291
|
elsif %r{^multipart/byteranges} =~ @header['content-type']
|
269
292
|
@header.delete('content-length')
|
270
293
|
elsif @header['content-length'].nil?
|
271
|
-
if @body.respond_to?
|
272
|
-
|
273
|
-
make_body_tempfile
|
294
|
+
if @body.respond_to?(:bytesize)
|
295
|
+
@header['content-length'] = @body.bytesize.to_s
|
274
296
|
else
|
275
|
-
@header['
|
297
|
+
@header['connection'] = 'close'
|
276
298
|
end
|
277
299
|
end
|
278
300
|
|
@@ -332,7 +354,7 @@ module WEBrick
|
|
332
354
|
|
333
355
|
def send_header(socket) # :nodoc:
|
334
356
|
if @http_version.major > 0
|
335
|
-
data = status_line()
|
357
|
+
data = status_line().dup
|
336
358
|
@header.each{|key, value|
|
337
359
|
tmp = key.gsub(/\bwww|^te$|\b\w/){ $&.upcase }
|
338
360
|
data << "#{tmp}: #{check_header(value)}" << CRLF
|
@@ -419,7 +441,7 @@ module WEBrick
|
|
419
441
|
# :stopdoc:
|
420
442
|
|
421
443
|
def error_body(backtrace, ex, host, port)
|
422
|
-
@body = ''
|
444
|
+
@body = +''
|
423
445
|
@body << <<-_end_of_html_
|
424
446
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
425
447
|
<HTML>
|
@@ -453,11 +475,11 @@ module WEBrick
|
|
453
475
|
if @request_method == "HEAD"
|
454
476
|
# do nothing
|
455
477
|
elsif chunked?
|
456
|
-
buf
|
478
|
+
buf = +''
|
457
479
|
begin
|
458
480
|
@body.readpartial(@buffer_size, buf)
|
459
481
|
size = buf.bytesize
|
460
|
-
data = "#{size.to_s(16)}#{CRLF}#{buf}#{CRLF}"
|
482
|
+
data = +"#{size.to_s(16)}#{CRLF}#{buf}#{CRLF}"
|
461
483
|
socket.write(data)
|
462
484
|
data.clear
|
463
485
|
@sent_size += size
|
@@ -517,14 +539,16 @@ module WEBrick
|
|
517
539
|
@body.call(ChunkedWrapper.new(socket, self))
|
518
540
|
socket.write("0#{CRLF}#{CRLF}")
|
519
541
|
else
|
520
|
-
size = @header['content-length'].to_i
|
521
542
|
if @bodytempfile
|
522
543
|
@bodytempfile.rewind
|
523
544
|
IO.copy_stream(@bodytempfile, socket)
|
524
545
|
else
|
525
546
|
@body.call(socket)
|
526
547
|
end
|
527
|
-
|
548
|
+
|
549
|
+
if content_length = @header['content-length']
|
550
|
+
@sent_size = content_length.to_i
|
551
|
+
end
|
528
552
|
end
|
529
553
|
end
|
530
554
|
|
@@ -539,7 +563,7 @@ module WEBrick
|
|
539
563
|
socket = @socket
|
540
564
|
@resp.instance_eval {
|
541
565
|
size = buf.bytesize
|
542
|
-
data = "#{size.to_s(16)}#{CRLF}#{buf}#{CRLF}"
|
566
|
+
data = +"#{size.to_s(16)}#{CRLF}#{buf}#{CRLF}"
|
543
567
|
socket.write(data)
|
544
568
|
data.clear
|
545
569
|
@sent_size += size
|
data/lib/webrick/https.rb
CHANGED
data/lib/webrick/httpserver.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# httpserver.rb -- HTTPServer Class
|
4
4
|
#
|
@@ -285,7 +285,7 @@ module WEBrick
|
|
285
285
|
end
|
286
286
|
|
287
287
|
def normalize(dir)
|
288
|
-
ret = dir ? dir.dup : ""
|
288
|
+
ret = dir ? dir.dup : +""
|
289
289
|
ret.sub!(%r|/+\z|, "")
|
290
290
|
ret
|
291
291
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# cgi_runner.rb -- CGI launcher.
|
4
4
|
#
|
@@ -10,7 +10,7 @@
|
|
10
10
|
# $IPR: cgi_runner.rb,v 1.9 2002/09/25 11:33:15 gotoyuzo Exp $
|
11
11
|
|
12
12
|
def sysread(io, size)
|
13
|
-
buf = ""
|
13
|
+
buf = +""
|
14
14
|
while size > 0
|
15
15
|
tmp = io.sysread(size)
|
16
16
|
buf << tmp
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# filehandler.rb -- FileHandler Module
|
4
4
|
#
|
@@ -481,9 +481,9 @@ module WEBrick
|
|
481
481
|
elsif !namewidth or (namewidth = namewidth.to_i) < 2
|
482
482
|
namewidth = 25
|
483
483
|
end
|
484
|
-
query = query.inject('') {|s, (k, v)| s << '&' << HTMLUtils::escape("#{k}=#{v}")}
|
484
|
+
query = query.inject('') {|s, (k, v)| s << '&' << HTMLUtils::escape("#{k}=#{v}")}.dup
|
485
485
|
|
486
|
-
type = "text/html"
|
486
|
+
type = +"text/html"
|
487
487
|
case enc = Encoding.find('filesystem')
|
488
488
|
when Encoding::US_ASCII, Encoding::ASCII_8BIT
|
489
489
|
else
|
@@ -492,7 +492,7 @@ module WEBrick
|
|
492
492
|
res['content-type'] = type
|
493
493
|
|
494
494
|
title = "Index of #{HTMLUtils::escape(req.path)}"
|
495
|
-
res.body =
|
495
|
+
res.body = +<<-_end_of_html_
|
496
496
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
497
497
|
<HTML>
|
498
498
|
<HEAD>
|
@@ -528,7 +528,7 @@ module WEBrick
|
|
528
528
|
else
|
529
529
|
dname = name
|
530
530
|
end
|
531
|
-
s = "<TR><TD class=\"name\"><A HREF=\"#{HTTPUtils::escape(name)}#{query if name.end_with?('/')}\">#{HTMLUtils::escape(dname)}</A></TD>"
|
531
|
+
s = +"<TR><TD class=\"name\"><A HREF=\"#{HTTPUtils::escape(name)}#{query if name.end_with?('/')}\">#{HTMLUtils::escape(dname)}</A></TD>"
|
532
532
|
s << "<TD class=\"mtime\">" << (time ? time.strftime("%Y/%m/%d %H:%M") : "") << "</TD>"
|
533
533
|
s << "<TD class=\"size\">" << (size >= 0 ? size.to_s : "-") << "</TD></TR>\n"
|
534
534
|
res.body << s
|
data/lib/webrick/httpservlet.rb
CHANGED
data/lib/webrick/httpstatus.rb
CHANGED
data/lib/webrick/httputils.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# httputils.rb -- HTTPUtils Module
|
4
4
|
#
|
@@ -48,6 +48,7 @@ module WEBrick
|
|
48
48
|
"ai" => "application/postscript",
|
49
49
|
"asc" => "text/plain",
|
50
50
|
"avi" => "video/x-msvideo",
|
51
|
+
"avif" => "image/avif",
|
51
52
|
"bin" => "application/octet-stream",
|
52
53
|
"bmp" => "image/bmp",
|
53
54
|
"class" => "application/octet-stream",
|
@@ -65,6 +66,7 @@ module WEBrick
|
|
65
66
|
"gif" => "image/gif",
|
66
67
|
"htm" => "text/html",
|
67
68
|
"html" => "text/html",
|
69
|
+
"ico" => "image/x-icon",
|
68
70
|
"jpe" => "image/jpeg",
|
69
71
|
"jpeg" => "image/jpeg",
|
70
72
|
"jpg" => "image/jpeg",
|
@@ -74,9 +76,11 @@ module WEBrick
|
|
74
76
|
"lzh" => "application/octet-stream",
|
75
77
|
"mjs" => "application/javascript",
|
76
78
|
"mov" => "video/quicktime",
|
79
|
+
"mp4" => "video/mp4",
|
77
80
|
"mpe" => "video/mpeg",
|
78
81
|
"mpeg" => "video/mpeg",
|
79
82
|
"mpg" => "video/mpeg",
|
83
|
+
"otf" => "font/otf",
|
80
84
|
"pbm" => "image/x-portable-bitmap",
|
81
85
|
"pdf" => "application/pdf",
|
82
86
|
"pgm" => "image/x-portable-graymap",
|
@@ -95,8 +99,15 @@ module WEBrick
|
|
95
99
|
"svg" => "image/svg+xml",
|
96
100
|
"tif" => "image/tiff",
|
97
101
|
"tiff" => "image/tiff",
|
102
|
+
"ttc" => "font/collection",
|
103
|
+
"ttf" => "font/ttf",
|
98
104
|
"txt" => "text/plain",
|
99
105
|
"wasm" => "application/wasm",
|
106
|
+
"webm" => "video/webm",
|
107
|
+
"webmanifest" => "application/manifest+json",
|
108
|
+
"webp" => "image/webp",
|
109
|
+
"woff" => "font/woff",
|
110
|
+
"woff2" => "font/woff2",
|
100
111
|
"xbm" => "image/x-xbitmap",
|
101
112
|
"xhtml" => "text/html",
|
102
113
|
"xls" => "application/vnd.ms-excel",
|
@@ -112,7 +123,7 @@ module WEBrick
|
|
112
123
|
def load_mime_types(file)
|
113
124
|
# note: +file+ may be a "| command" for now; some people may
|
114
125
|
# rely on this, but currently we do not use this method by default.
|
115
|
-
open(file){ |io|
|
126
|
+
File.open(file){ |io|
|
116
127
|
hash = Hash.new
|
117
128
|
io.each{ |line|
|
118
129
|
next if /^#/ =~ line
|
@@ -231,7 +242,7 @@ module WEBrick
|
|
231
242
|
# Quotes and escapes quotes in +str+
|
232
243
|
|
233
244
|
def quote(str)
|
234
|
-
'"' << str.gsub(/[\\\"]/o, "\\\1") << '"'
|
245
|
+
+'"' << str.gsub(/[\\\"]/o, "\\\1") << '"'
|
235
246
|
end
|
236
247
|
module_function :quote
|
237
248
|
|
@@ -495,7 +506,7 @@ module WEBrick
|
|
495
506
|
# Escapes path +str+
|
496
507
|
|
497
508
|
def escape_path(str)
|
498
|
-
result = ""
|
509
|
+
result = +""
|
499
510
|
str.scan(%r{/([^/]*)}).each{|i|
|
500
511
|
result << "/" << _escape(i[0], UNESCAPED_PCHAR)
|
501
512
|
}
|
data/lib/webrick/httpversion.rb
CHANGED
data/lib/webrick/log.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#--
|
3
3
|
# log.rb -- Log Class
|
4
4
|
#
|
@@ -86,15 +86,15 @@ module WEBrick
|
|
86
86
|
end
|
87
87
|
|
88
88
|
# Shortcut for logging a FATAL message
|
89
|
-
def fatal(msg) log(FATAL, "FATAL "
|
89
|
+
def fatal(msg) log(FATAL, "FATAL " + format(msg)); end
|
90
90
|
# Shortcut for logging an ERROR message
|
91
|
-
def error(msg) log(ERROR, "ERROR "
|
91
|
+
def error(msg) log(ERROR, "ERROR " + format(msg)); end
|
92
92
|
# Shortcut for logging a WARN message
|
93
|
-
def warn(msg) log(WARN, "WARN "
|
93
|
+
def warn(msg) log(WARN, "WARN " + format(msg)); end
|
94
94
|
# Shortcut for logging an INFO message
|
95
|
-
def info(msg) log(INFO, "INFO "
|
95
|
+
def info(msg) log(INFO, "INFO " + format(msg)); end
|
96
96
|
# Shortcut for logging a DEBUG message
|
97
|
-
def debug(msg) log(DEBUG, "DEBUG "
|
97
|
+
def debug(msg) log(DEBUG, "DEBUG " + format(msg)); end
|
98
98
|
|
99
99
|
# Will the logger output FATAL messages?
|
100
100
|
def fatal?; @level >= FATAL; end
|
@@ -118,7 +118,7 @@ module WEBrick
|
|
118
118
|
# * Otherwise it will return +arg+.inspect.
|
119
119
|
def format(arg)
|
120
120
|
if arg.is_a?(Exception)
|
121
|
-
"#{arg.class}: #{AccessLog.escape(arg.message)}\n\t" <<
|
121
|
+
+"#{arg.class}: #{AccessLog.escape(arg.message)}\n\t" <<
|
122
122
|
arg.backtrace.join("\n\t") << "\n"
|
123
123
|
elsif arg.respond_to?(:to_str)
|
124
124
|
AccessLog.escape(arg.to_str)
|
data/lib/webrick/server.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# server.rb -- GenericServer Class
|
4
4
|
#
|
@@ -102,7 +102,7 @@ module WEBrick
|
|
102
102
|
@listeners = []
|
103
103
|
@shutdown_pipe = nil
|
104
104
|
unless @config[:DoNotListen]
|
105
|
-
raise ArgumentError, "Port must an integer" unless @config[:Port].to_s == @config[:Port].to_i.to_s
|
105
|
+
raise ArgumentError, "Port must be an integer" unless @config[:Port].to_s == @config[:Port].to_i.to_s
|
106
106
|
|
107
107
|
@config[:Port] = @config[:Port].to_i
|
108
108
|
if @config[:Listen]
|
data/lib/webrick/ssl.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# ssl.rb -- SSL/TLS enhancement for GenericServer
|
4
4
|
#
|
@@ -95,18 +95,22 @@ module WEBrick
|
|
95
95
|
# the issuer +cn+ and a +comment+ to be stored in the certificate.
|
96
96
|
|
97
97
|
def create_self_signed_cert(bits, cn, comment)
|
98
|
-
rsa =
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
98
|
+
rsa = if $VERBOSE
|
99
|
+
OpenSSL::PKey::RSA.new(bits){|p, n|
|
100
|
+
case p
|
101
|
+
when 0; $stderr.putc "." # BN_generate_prime
|
102
|
+
when 1; $stderr.putc "+" # BN_generate_prime
|
103
|
+
when 2; $stderr.putc "*" # searching good prime,
|
104
|
+
# n = #of try,
|
105
|
+
# but also data from BN_generate_prime
|
106
|
+
when 3; $stderr.putc "\n" # found good prime, n==0 - p, n==1 - q,
|
107
|
+
# but also data from BN_generate_prime
|
108
|
+
else; $stderr.putc "*" # BN_generate_prime
|
109
|
+
end
|
110
|
+
}
|
111
|
+
else
|
112
|
+
OpenSSL::PKey::RSA.new(bits)
|
113
|
+
end
|
110
114
|
cert = OpenSSL::X509::Certificate.new
|
111
115
|
cert.version = 2
|
112
116
|
cert.serial = 1
|
data/lib/webrick/utils.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# utils.rb -- Miscellaneous utilities
|
4
4
|
#
|
@@ -78,7 +78,7 @@ module WEBrick
|
|
78
78
|
# Generates a random string of length +len+
|
79
79
|
def random_string(len)
|
80
80
|
rand_max = RAND_CHARS.bytesize
|
81
|
-
ret = ""
|
81
|
+
ret = +""
|
82
82
|
len.times{ ret << RAND_CHARS[rand(rand_max)] }
|
83
83
|
ret
|
84
84
|
end
|
data/lib/webrick/version.rb
CHANGED
data/webrick.gemspec
CHANGED
@@ -18,8 +18,6 @@ Gem::Specification.new do |s|
|
|
18
18
|
"LICENSE.txt",
|
19
19
|
"README.md",
|
20
20
|
"Rakefile",
|
21
|
-
"bin/console",
|
22
|
-
"bin/setup",
|
23
21
|
"lib/webrick.rb",
|
24
22
|
"lib/webrick/accesslog.rb",
|
25
23
|
"lib/webrick/cgi.rb",
|
@@ -57,7 +55,7 @@ Gem::Specification.new do |s|
|
|
57
55
|
"lib/webrick/version.rb",
|
58
56
|
"webrick.gemspec",
|
59
57
|
]
|
60
|
-
s.required_ruby_version = ">= 2.
|
58
|
+
s.required_ruby_version = ">= 2.4.0"
|
61
59
|
|
62
60
|
s.authors = ["TAKAHASHI Masayoshi", "GOTOU YUUZOU", "Eric Wong"]
|
63
61
|
s.email = [nil, nil, 'normal@ruby-lang.org']
|
@@ -69,6 +67,4 @@ Gem::Specification.new do |s|
|
|
69
67
|
"bug_tracker_uri" => "https://github.com/ruby/webrick/issues",
|
70
68
|
}
|
71
69
|
end
|
72
|
-
|
73
|
-
s.add_development_dependency "rake"
|
74
70
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webrick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TAKAHASHI Masayoshi
|
@@ -10,22 +10,8 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
14
|
-
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: rake
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - ">="
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :development
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
version: '0'
|
13
|
+
date: 2023-01-27 00:00:00.000000000 Z
|
14
|
+
dependencies: []
|
29
15
|
description: WEBrick is an HTTP server toolkit that can be configured as an HTTPS
|
30
16
|
server, a proxy server, and a virtual-host server.
|
31
17
|
email:
|
@@ -40,8 +26,6 @@ files:
|
|
40
26
|
- LICENSE.txt
|
41
27
|
- README.md
|
42
28
|
- Rakefile
|
43
|
-
- bin/console
|
44
|
-
- bin/setup
|
45
29
|
- lib/webrick.rb
|
46
30
|
- lib/webrick/accesslog.rb
|
47
31
|
- lib/webrick/cgi.rb
|
@@ -92,14 +76,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
76
|
requirements:
|
93
77
|
- - ">="
|
94
78
|
- !ruby/object:Gem::Version
|
95
|
-
version: 2.
|
79
|
+
version: 2.4.0
|
96
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
81
|
requirements:
|
98
82
|
- - ">="
|
99
83
|
- !ruby/object:Gem::Version
|
100
84
|
version: '0'
|
101
85
|
requirements: []
|
102
|
-
rubygems_version: 3.
|
86
|
+
rubygems_version: 3.5.0.dev
|
103
87
|
signing_key:
|
104
88
|
specification_version: 4
|
105
89
|
summary: HTTP server toolkit
|
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "webrick"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|