webrick 1.3.1 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
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