webrick 1.3.1 → 1.6.1

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.

Potentially problematic release.


This version of webrick might be problematic. Click here for more details.

Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +63 -0
  5. data/Rakefile +10 -0
  6. data/bin/console +14 -0
  7. data/bin/setup +8 -0
  8. data/lib/webrick.rb +7 -7
  9. data/lib/webrick/accesslog.rb +12 -6
  10. data/lib/webrick/cgi.rb +58 -5
  11. data/lib/webrick/compat.rb +2 -1
  12. data/lib/webrick/config.rb +47 -10
  13. data/lib/webrick/cookie.rb +69 -7
  14. data/lib/webrick/htmlutils.rb +4 -2
  15. data/lib/webrick/httpauth.rb +6 -5
  16. data/lib/webrick/httpauth/authenticator.rb +13 -8
  17. data/lib/webrick/httpauth/basicauth.rb +16 -8
  18. data/lib/webrick/httpauth/digestauth.rb +35 -32
  19. data/lib/webrick/httpauth/htdigest.rb +12 -8
  20. data/lib/webrick/httpauth/htgroup.rb +10 -6
  21. data/lib/webrick/httpauth/htpasswd.rb +46 -9
  22. data/lib/webrick/httpauth/userdb.rb +1 -0
  23. data/lib/webrick/httpproxy.rb +93 -48
  24. data/lib/webrick/httprequest.rb +201 -31
  25. data/lib/webrick/httpresponse.rb +235 -70
  26. data/lib/webrick/https.rb +90 -2
  27. data/lib/webrick/httpserver.rb +45 -15
  28. data/lib/webrick/httpservlet.rb +6 -5
  29. data/lib/webrick/httpservlet/abstract.rb +5 -6
  30. data/lib/webrick/httpservlet/cgi_runner.rb +3 -2
  31. data/lib/webrick/httpservlet/cgihandler.rb +29 -11
  32. data/lib/webrick/httpservlet/erbhandler.rb +4 -3
  33. data/lib/webrick/httpservlet/filehandler.rb +136 -65
  34. data/lib/webrick/httpservlet/prochandler.rb +15 -1
  35. data/lib/webrick/httpstatus.rb +24 -14
  36. data/lib/webrick/httputils.rb +134 -17
  37. data/lib/webrick/httpversion.rb +28 -1
  38. data/lib/webrick/log.rb +25 -5
  39. data/lib/webrick/server.rb +234 -74
  40. data/lib/webrick/ssl.rb +100 -12
  41. data/lib/webrick/utils.rb +98 -69
  42. data/lib/webrick/version.rb +6 -1
  43. data/webrick.gemspec +76 -0
  44. metadata +73 -72
  45. data/README.txt +0 -21
  46. data/sample/webrick/demo-app.rb +0 -66
  47. data/sample/webrick/demo-multipart.cgi +0 -12
  48. data/sample/webrick/demo-servlet.rb +0 -6
  49. data/sample/webrick/demo-urlencoded.cgi +0 -12
  50. data/sample/webrick/hello.cgi +0 -11
  51. data/sample/webrick/hello.rb +0 -8
  52. data/sample/webrick/httpd.rb +0 -23
  53. data/sample/webrick/httpproxy.rb +0 -25
  54. data/sample/webrick/httpsd.rb +0 -33
  55. data/test/openssl/utils.rb +0 -313
  56. data/test/ruby/envutil.rb +0 -208
  57. data/test/webrick/test_cgi.rb +0 -134
  58. data/test/webrick/test_cookie.rb +0 -131
  59. data/test/webrick/test_filehandler.rb +0 -285
  60. data/test/webrick/test_httpauth.rb +0 -167
  61. data/test/webrick/test_httpproxy.rb +0 -282
  62. data/test/webrick/test_httprequest.rb +0 -411
  63. data/test/webrick/test_httpresponse.rb +0 -49
  64. data/test/webrick/test_httpserver.rb +0 -305
  65. data/test/webrick/test_httputils.rb +0 -96
  66. data/test/webrick/test_httpversion.rb +0 -40
  67. data/test/webrick/test_server.rb +0 -67
  68. data/test/webrick/test_utils.rb +0 -64
  69. data/test/webrick/utils.rb +0 -58
  70. data/test/webrick/webrick.cgi +0 -36
  71. data/test/webrick/webrick_long_filename.cgi +0 -36
data/webrick.gemspec ADDED
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+ begin
3
+ require_relative 'lib/webrick/version'
4
+ rescue LoadError
5
+ # for Ruby core repository
6
+ require_relative 'version'
7
+ end
8
+
9
+ Gem::Specification.new do |s|
10
+ s.name = "webrick"
11
+ s.version = WEBrick::VERSION
12
+ s.summary = "HTTP server toolkit"
13
+ s.description = "WEBrick is an HTTP server toolkit that can be configured as an HTTPS server, a proxy server, and a virtual-host server."
14
+
15
+ s.require_path = %w{lib}
16
+ s.files = [
17
+ "Gemfile",
18
+ "LICENSE.txt",
19
+ "README.md",
20
+ "Rakefile",
21
+ "bin/console",
22
+ "bin/setup",
23
+ "lib/webrick.rb",
24
+ "lib/webrick/accesslog.rb",
25
+ "lib/webrick/cgi.rb",
26
+ "lib/webrick/compat.rb",
27
+ "lib/webrick/config.rb",
28
+ "lib/webrick/cookie.rb",
29
+ "lib/webrick/htmlutils.rb",
30
+ "lib/webrick/httpauth.rb",
31
+ "lib/webrick/httpauth/authenticator.rb",
32
+ "lib/webrick/httpauth/basicauth.rb",
33
+ "lib/webrick/httpauth/digestauth.rb",
34
+ "lib/webrick/httpauth/htdigest.rb",
35
+ "lib/webrick/httpauth/htgroup.rb",
36
+ "lib/webrick/httpauth/htpasswd.rb",
37
+ "lib/webrick/httpauth/userdb.rb",
38
+ "lib/webrick/httpproxy.rb",
39
+ "lib/webrick/httprequest.rb",
40
+ "lib/webrick/httpresponse.rb",
41
+ "lib/webrick/https.rb",
42
+ "lib/webrick/httpserver.rb",
43
+ "lib/webrick/httpservlet.rb",
44
+ "lib/webrick/httpservlet/abstract.rb",
45
+ "lib/webrick/httpservlet/cgi_runner.rb",
46
+ "lib/webrick/httpservlet/cgihandler.rb",
47
+ "lib/webrick/httpservlet/erbhandler.rb",
48
+ "lib/webrick/httpservlet/filehandler.rb",
49
+ "lib/webrick/httpservlet/prochandler.rb",
50
+ "lib/webrick/httpstatus.rb",
51
+ "lib/webrick/httputils.rb",
52
+ "lib/webrick/httpversion.rb",
53
+ "lib/webrick/log.rb",
54
+ "lib/webrick/server.rb",
55
+ "lib/webrick/ssl.rb",
56
+ "lib/webrick/utils.rb",
57
+ "lib/webrick/version.rb",
58
+ "webrick.gemspec",
59
+ ]
60
+ s.required_ruby_version = ">= 2.3.0"
61
+
62
+ s.authors = ["TAKAHASHI Masayoshi", "GOTOU YUUZOU", "Eric Wong"]
63
+ s.email = [nil, nil, 'normal@ruby-lang.org']
64
+ s.homepage = "https://www.ruby-lang.org"
65
+ s.license = "BSD-2-Clause"
66
+
67
+ if s.respond_to?(:metadata=)
68
+ s.metadata = {
69
+ "bug_tracker_uri" => "https://bugs.ruby-lang.org/projects/ruby-trunk/issues",
70
+ "homepage_uri" => "https://www.ruby-lang.org",
71
+ "source_code_uri" => "https://git.ruby-lang.org/ruby.git/"
72
+ }
73
+ end
74
+
75
+ s.add_development_dependency "rake"
76
+ end
metadata CHANGED
@@ -1,106 +1,107 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webrick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
5
- prerelease:
4
+ version: 1.6.1
6
5
  platform: ruby
7
6
  authors:
8
- - IPR -- Internet Programming with Ruby -- writers
9
- autorequire:
7
+ - TAKAHASHI Masayoshi
8
+ - GOTOU YUUZOU
9
+ - Eric Wong
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2011-12-28 00:00:00.000000000 Z
13
- dependencies: []
14
- description:
15
- email: nahi@ruby-lang.org
13
+ date: 2020-09-29 00:00:00.000000000 Z
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'
29
+ description: WEBrick is an HTTP server toolkit that can be configured as an HTTPS
30
+ server, a proxy server, and a virtual-host server.
31
+ email:
32
+ -
33
+ -
34
+ - normal@ruby-lang.org
16
35
  executables: []
17
36
  extensions: []
18
37
  extra_rdoc_files: []
19
38
  files:
20
- - lib/webrick/https.rb
21
- - lib/webrick/httpservlet/cgi_runner.rb
22
- - lib/webrick/httpservlet/erbhandler.rb
23
- - lib/webrick/httpservlet/filehandler.rb
24
- - lib/webrick/httpservlet/prochandler.rb
25
- - lib/webrick/httpservlet/abstract.rb
26
- - lib/webrick/httpservlet/cgihandler.rb
27
- - lib/webrick/compat.rb
28
- - lib/webrick/httpresponse.rb
39
+ - Gemfile
40
+ - LICENSE.txt
41
+ - README.md
42
+ - Rakefile
43
+ - bin/console
44
+ - bin/setup
45
+ - lib/webrick.rb
29
46
  - lib/webrick/accesslog.rb
30
- - lib/webrick/httpversion.rb
31
- - lib/webrick/utils.rb
32
- - lib/webrick/version.rb
33
- - lib/webrick/httprequest.rb
34
- - lib/webrick/httpauth.rb
35
- - lib/webrick/server.rb
36
- - lib/webrick/httpproxy.rb
37
- - lib/webrick/ssl.rb
38
47
  - lib/webrick/cgi.rb
39
- - lib/webrick/httpstatus.rb
40
- - lib/webrick/htmlutils.rb
41
- - lib/webrick/httpserver.rb
48
+ - lib/webrick/compat.rb
49
+ - lib/webrick/config.rb
42
50
  - lib/webrick/cookie.rb
43
- - lib/webrick/httputils.rb
51
+ - lib/webrick/htmlutils.rb
52
+ - lib/webrick/httpauth.rb
53
+ - lib/webrick/httpauth/authenticator.rb
44
54
  - lib/webrick/httpauth/basicauth.rb
45
55
  - lib/webrick/httpauth/digestauth.rb
46
- - lib/webrick/httpauth/authenticator.rb
47
56
  - lib/webrick/httpauth/htdigest.rb
48
57
  - lib/webrick/httpauth/htgroup.rb
49
58
  - lib/webrick/httpauth/htpasswd.rb
50
59
  - lib/webrick/httpauth/userdb.rb
51
- - lib/webrick/config.rb
60
+ - lib/webrick/httpproxy.rb
61
+ - lib/webrick/httprequest.rb
62
+ - lib/webrick/httpresponse.rb
63
+ - lib/webrick/https.rb
64
+ - lib/webrick/httpserver.rb
52
65
  - lib/webrick/httpservlet.rb
66
+ - lib/webrick/httpservlet/abstract.rb
67
+ - lib/webrick/httpservlet/cgi_runner.rb
68
+ - lib/webrick/httpservlet/cgihandler.rb
69
+ - lib/webrick/httpservlet/erbhandler.rb
70
+ - lib/webrick/httpservlet/filehandler.rb
71
+ - lib/webrick/httpservlet/prochandler.rb
72
+ - lib/webrick/httpstatus.rb
73
+ - lib/webrick/httputils.rb
74
+ - lib/webrick/httpversion.rb
53
75
  - lib/webrick/log.rb
54
- - lib/webrick.rb
55
- - sample/webrick/demo-urlencoded.cgi
56
- - sample/webrick/demo-multipart.cgi
57
- - sample/webrick/hello.rb
58
- - sample/webrick/hello.cgi
59
- - sample/webrick/httpproxy.rb
60
- - sample/webrick/httpsd.rb
61
- - sample/webrick/httpd.rb
62
- - sample/webrick/demo-app.rb
63
- - sample/webrick/demo-servlet.rb
64
- - test/webrick/webrick_long_filename.cgi
65
- - test/webrick/utils.rb
66
- - test/webrick/test_httpproxy.rb
67
- - test/webrick/test_cookie.rb
68
- - test/webrick/test_server.rb
69
- - test/webrick/test_httpresponse.rb
70
- - test/webrick/test_utils.rb
71
- - test/webrick/test_httpserver.rb
72
- - test/webrick/test_httprequest.rb
73
- - test/webrick/test_httpversion.rb
74
- - test/webrick/webrick.cgi
75
- - test/webrick/test_httpauth.rb
76
- - test/webrick/test_cgi.rb
77
- - test/webrick/test_httputils.rb
78
- - test/webrick/test_filehandler.rb
79
- - test/ruby/envutil.rb
80
- - test/openssl/utils.rb
81
- - README.txt
82
- homepage: http://github.com/nahi/webrick
83
- licenses: []
84
- post_install_message:
76
+ - lib/webrick/server.rb
77
+ - lib/webrick/ssl.rb
78
+ - lib/webrick/utils.rb
79
+ - lib/webrick/version.rb
80
+ - webrick.gemspec
81
+ homepage: https://www.ruby-lang.org
82
+ licenses:
83
+ - BSD-2-Clause
84
+ metadata:
85
+ bug_tracker_uri: https://bugs.ruby-lang.org/projects/ruby-trunk/issues
86
+ homepage_uri: https://www.ruby-lang.org
87
+ source_code_uri: https://git.ruby-lang.org/ruby.git/
88
+ post_install_message:
85
89
  rdoc_options: []
86
90
  require_paths:
87
91
  - lib
88
92
  required_ruby_version: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
- - - ! '>='
94
+ - - ">="
92
95
  - !ruby/object:Gem::Version
93
- version: '0'
96
+ version: 2.3.0
94
97
  required_rubygems_version: !ruby/object:Gem::Requirement
95
- none: false
96
98
  requirements:
97
- - - ! '>='
99
+ - - ">="
98
100
  - !ruby/object:Gem::Version
99
101
  version: '0'
100
102
  requirements: []
101
- rubyforge_project:
102
- rubygems_version: 1.8.11
103
- signing_key:
104
- specification_version: 3
105
- summary: WEBrick is an HTTP server toolkit that can be configured as an HTTPS server,
103
+ rubygems_version: 3.2.0.rc.1
104
+ signing_key:
105
+ specification_version: 4
106
+ summary: HTTP server toolkit
106
107
  test_files: []
data/README.txt DELETED
@@ -1,21 +0,0 @@
1
- = WEB server toolkit.
2
-
3
- WEBrick is an HTTP server toolkit that can be configured as an HTTPS server,
4
- a proxy server, and a virtual-host server. WEBrick features complete
5
- logging of both server operations and HTTP access. WEBrick supports both
6
- basic and digest authentication in addition to algorithms not in RFC 2617.
7
-
8
- A WEBrick servers can be composed of multiple WEBrick servers or servlets to
9
- provide differing behavior on a per-host or per-path basis. WEBrick
10
- includes servlets for handling CGI scripts, ERb pages, ruby blocks and
11
- directory listings.
12
-
13
- WEBrick also includes tools for daemonizing a process and starting a process
14
- at a higher privilege level and dropping permissions.
15
-
16
- == Copyright
17
-
18
- Author: IPR -- Internet Programming with Ruby -- writers
19
-
20
- Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
21
- Copyright (c) 2002 Internet Programming with Ruby writers. All rights reserved.
@@ -1,66 +0,0 @@
1
- require "pp"
2
-
3
- module DemoApplication
4
- def initialize(config, enctype)
5
- super
6
- @enctype = enctype
7
- end
8
-
9
- def do_GET(req, res)
10
- if req.path_info != "/"
11
- res.set_redirect(WEBrick::HTTPStatus::Found, req.script_name + "/")
12
- end
13
- res.body =<<-_end_of_html_
14
- <HTML>
15
- <FORM method="POST" enctype=#{@enctype}>
16
- text: <INPUT type="text" name="text"><BR>
17
- file: <INPUT type="file" name="file"><BR>
18
- check:
19
- <INPUT type="checkbox" name="check" value="a">a,
20
- <INPUT type="checkbox" name="check" value="b">b,
21
- <INPUT type="checkbox" name="check" value="c">c,
22
- <BR>
23
- <INPUT type="submit">
24
- </FORM>
25
- </HTML>
26
- _end_of_html_
27
- res['content-type'] = 'text/html; charset=iso-8859-1'
28
- end
29
-
30
- def do_POST(req, res)
31
- if req["content-length"].to_i > 1024*10
32
- raise WEBrick::HTTPStatus::Forbidden, "file size too large"
33
- end
34
- res.body =<<-_end_of_html_
35
- <HTML>
36
- <H2>Query Parameters</H2>
37
- #{display_query(req.query)}
38
- <A href="#{req.path}">return</A>
39
- <H2>Request</H2>
40
- <PRE>#{WEBrick::HTMLUtils::escape(PP::pp(req, "", 80))}</PRE>
41
- <H2>Response</H2>
42
- <PRE>#{WEBrick::HTMLUtils::escape(PP::pp(res, "", 80))}</PRE>
43
- </HTML>
44
- _end_of_html_
45
- res['content-type'] = 'text/html; charset=iso-8859-1'
46
- end
47
-
48
- private
49
-
50
- def display_query(q)
51
- ret = ""
52
- q.each{|key, val|
53
- ret << "<H3>#{WEBrick::HTMLUtils::escape(key)}</H3>"
54
- ret << "<TABLE border=1>"
55
- ret << make_tr("val", val.inspect)
56
- ret << make_tr("val.to_a", val.to_a.inspect)
57
- ret << make_tr("val.to_ary", val.to_ary.inspect)
58
- ret << "</TABLE>"
59
- }
60
- ret
61
- end
62
-
63
- def make_tr(arg0, arg1)
64
- "<TR><TD>#{arg0}</TD><TD>#{WEBrick::HTMLUtils::escape(arg1)}</TD></TR>"
65
- end
66
- end
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require "webrick/cgi"
3
- require "webrick/https" # should load if it runs on HTTPS server
4
- require "./demo-app"
5
-
6
- class DemoCGI < WEBrick::CGI
7
- include DemoApplication
8
- end
9
-
10
- config = { :NPH => false }
11
- cgi = DemoCGI.new(config, "multipart/form-data")
12
- cgi.start
@@ -1,6 +0,0 @@
1
- require "webrick"
2
- require "./demo-app"
3
-
4
- class DemoServlet < WEBrick::HTTPServlet::AbstractServlet
5
- include DemoApplication
6
- end
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require "webrick/cgi"
3
- require "webrick/https" # should load if it runs on HTTPS server
4
- require "./demo-app"
5
-
6
- class DemoCGI < WEBrick::CGI
7
- include DemoApplication
8
- end
9
-
10
- config = { :NPH => false }
11
- cgi = DemoCGI.new(config, "application/x-www-form-urlencoded")
12
- cgi.start
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require "webrick/cgi"
3
-
4
- class HelloCGI < WEBrick::CGI
5
- def do_GET(req, res)
6
- res["content-type"] = "text/plain"
7
- res.body = "Hello, world.\n"
8
- end
9
- end
10
-
11
- HelloCGI.new.start
@@ -1,8 +0,0 @@
1
- require "webrick"
2
-
3
- class HelloServlet < WEBrick::HTTPServlet::AbstractServlet
4
- def do_GET(req, res)
5
- res["content-type"] = "text/plain"
6
- res.body = "Hello, world.\n"
7
- end
8
- end
@@ -1,23 +0,0 @@
1
- require "webrick"
2
-
3
- httpd = WEBrick::HTTPServer.new(
4
- :DocumentRoot => File::dirname(__FILE__),
5
- :Port => 10080,
6
- :Logger => WEBrick::Log.new($stderr, WEBrick::Log::DEBUG),
7
- :AccessLog => [
8
- [ $stderr, WEBrick::AccessLog::COMMON_LOG_FORMAT ],
9
- [ $stderr, WEBrick::AccessLog::REFERER_LOG_FORMAT ],
10
- [ $stderr, WEBrick::AccessLog::AGENT_LOG_FORMAT ],
11
- ],
12
- :CGIPathEnv => ENV["PATH"] # PATH environment variable for CGI.
13
- )
14
-
15
- require "./hello"
16
- httpd.mount("/hello", HelloServlet)
17
-
18
- require "./demo-servlet"
19
- httpd.mount("/urlencoded", DemoServlet, "application/x-www-form-urlencoded")
20
- httpd.mount("/multipart", DemoServlet, "multipart/form-data")
21
-
22
- trap(:INT){ httpd.shutdown }
23
- httpd.start
@@ -1,25 +0,0 @@
1
- require "webrick"
2
- require "webrick/httpproxy"
3
-
4
- # The :ProxyContentHandler proc will be invoked before sending a response to
5
- # the User-Agent. You can inspect the pair of request and response messages
6
- # (or edit the response message if necessary).
7
-
8
- pch = Proc.new{|req, res|
9
- p [ req.request_line, res.status_line ]
10
- }
11
-
12
- def upstream_proxy
13
- if prx = ENV["http_proxy"]
14
- return URI.parse(prx)
15
- end
16
- return nil
17
- end
18
-
19
- httpd = WEBrick::HTTPProxyServer.new(
20
- :Port => 10080,
21
- :ProxyContentHandler => pch,
22
- :ProxyURI => upstream_proxy
23
- )
24
- Signal.trap(:INT){ httpd.shutdown }
25
- httpd.start