1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
Commit graph

22 commits

Author SHA1 Message Date
usa
694697e3f2 merge revision(s) 62960-62965:
webrick: use IO.copy_stream for multipart response

	Use the new Proc response body feature to generate a multipart
	range response dynamically.  We use a flat array to minimize
	object overhead as much as possible; as many ranges may fit
	into an HTTP request header.

	* lib/webrick/httpservlet/filehandler.rb (multipart_body): new method
	  (make_partial_content): use multipart_body
	------------------------------------------------------------------------
	r62960 | normal | 2018-03-28 17:06:23 +0900 (水, 28 3 2018) | 13 lines

	webrick/httprequest: limit request headers size

	We use the same 112 KB limit started (AFAIK) by Mongrel, Thin,
	and Puma to prevent malicious users from using up all the memory
	with a single request.  This also limits the damage done by
	excessive ranges in multipart Range: requests.

	Due to the way we rely on IO#gets and the desire to keep
	the code simple, the actual maximum header may be 4093 bytes
	larger than 112 KB, but we're splitting hairs at that point.

	* lib/webrick/httprequest.rb: define MAX_HEADER_LENGTH
	  (read_header): raise when headers exceed max length
	------------------------------------------------------------------------
	r62961 | normal | 2018-03-28 17:06:28 +0900 (水, 28 3 2018) | 9 lines

	webrick/httpservlet/cgihandler: reduce memory use

	WEBrick::HTTPRequest#body can be passed a block to process the
	body in chunks.  Use this feature to avoid building a giant
	string in memory.

	* lib/webrick/httpservlet/cgihandler.rb (do_GET):
	  avoid reading entire request body into memory
	  (do_POST is aliased to do_GET, so it handles bodies)
	------------------------------------------------------------------------
	r62962 | normal | 2018-03-28 17:06:34 +0900 (水, 28 3 2018) | 7 lines

	webrick/httprequest: raise correct exception

	"BadRequest" alone does not resolve correctly, it is in the
	HTTPStatus namespace.

	* lib/webrick/httprequest.rb (read_chunked): use correct exception
	* test/webrick/test_httpserver.rb (test_eof_in_chunk): new test
	------------------------------------------------------------------------
	r62963 | normal | 2018-03-28 17:06:39 +0900 (水, 28 3 2018) | 9 lines

	webrick/httprequest: use InputBufferSize for chunked requests

	While WEBrick::HTTPRequest#body provides a Proc interface
	for streaming large request bodies, clients must not force
	the server to use an excessively large chunk size.

	* lib/webrick/httprequest.rb (read_chunk_size): limit each
	  read and block.call to :InputBufferSize in config.
	* test/webrick/test_httpserver.rb (test_big_chunks): new test
	------------------------------------------------------------------------
	r62964 | normal | 2018-03-28 17:06:44 +0900 (水, 28 3 2018) | 9 lines

	webrick: add test for Digest auth-int

	No changes to the actual code, this is a new test for
	a feature for which no tests existed.  I don't understand
	the Digest authentication code well at all, but this is
	necessary for the subsequent change.

	* test/webrick/test_httpauth.rb (test_digest_auth_int): new test
	  (credentials_for_request): support bodies with POST
	------------------------------------------------------------------------
	r62965 | normal | 2018-03-28 17:06:49 +0900 (水, 28 3 2018) | 18 lines

	webrick/httpauth/digestauth: stream req.body

	WARNING! WARNING! WARNING!  LIKELY BROKEN CHANGE

	Pass a proc to WEBrick::HTTPRequest#body to avoid reading a
	potentially large request body into memory during
	authentication.

	WARNING! this will break apps completely which want to do
	something with the body besides calculating the MD5 digest
	of it.

	Also, keep in mind that probably nobody uses "auth-int".
	Servers such as Apache, lighttpd, nginx don't seem to
	support it; nor does curl when using POST/PUT bodies;
	and we didn't have tests for it until now...

	* lib/webrick/httpauth/digestauth.rb (_authenticate): stream req.body

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@62970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 09:13:59 +00:00
naruse
3e92b635fb Add frozen_string_literal: false for all files
When you change this to true, you may need to add more tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:07:31 +00:00
hsbt
ab23398461 * lib/webrick/httpauth/basicauth.rb: fix a typo.
[ci skip][fix GH-1099] Patch by @jwworth
* lib/webrick/httpauth/digestauth.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-16 03:11:20 +00:00
a_matsuda
0c85ffd8a7 * lib/webrick/httpauth/digestauth.rb: Fix typo in an error message.
* test/ruby/test_parse.rb: Fix typo in a test name.

s/allowd/allowed/

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-29 14:03:26 +00:00
akr
5fb8bb16e6 * lib/webrick/httpauth/htpasswd.rb: Use Tempfile.create to avoid
unintentional unlink() by the finalizer.
  lib/webrick/httpauth/htdigest.rb: Ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-20 15:10:29 +00:00
drbrain
28afe277a8 * lib/webrick/accesslog.rb: Improved WEBrick documentation.
* lib/webrick/cgi.rb:  ditto.
* lib/webrick/config.rb:  ditto.
* lib/webrick/cookie.rb:  ditto.
* lib/webrick/httpauth/authenticator.rb:  ditto.
* lib/webrick/httpauth/basicauth.rb:  ditto.
* lib/webrick/httpauth/digestauth.rb:  ditto.
* lib/webrick/httpproxy.rb:  ditto.
* lib/webrick/httprequest.rb:  ditto.
* lib/webrick/httpresponse.rb:  ditto.
* lib/webrick/https.rb:  ditto.
* lib/webrick/httpserver.rb:  ditto.
* lib/webrick/httpservlet/cgihandler.rb:  ditto.
* lib/webrick/httpservlet/filehandler.rb:  ditto.
* lib/webrick/httpservlet/prochandler.rb:  ditto.
* lib/webrick/httputils.rb:  ditto.
* lib/webrick/httpversion.rb:  ditto.
* lib/webrick/log.rb:  ditto.
* lib/webrick/server.rb:  ditto.
* lib/webrick/ssl.rb:  ditto.
* lib/webrick/utils.rb:  ditto.
* lib/webrick/version.rb:  ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-26 01:12:54 +00:00
naruse
8fb2058d82 * lib/webrick/httpauth/digestauth.rb (_authenticate):
Literal texts in HTTP ABNF is case-insensitive (RFC2616 2.1),
  and a ample implementation in RFC2617 also ignores the case
  of algorithms. So now this ignores those cases.
  [ruby-dev:43965] [Feature #4936]

* lib/webrick/httpauth/digestauth.rb (initialize):
  Because of above, opera_hack is useless and removed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-05 05:06:05 +00:00
nagachika
1111afbe5a * lib/csv.rb: fix a typo.
* lib/logger.rb: ditto
  * lib/rss.rb: ditto
  * lib/webrick/httpauth/authenticator.rb: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-11 10:22:16 +00:00
drbrain
8c2a52937f * lib/webrick: Add documentation for WEBrick::HTTPAuth
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-10 23:37:43 +00:00
drbrain
38b4876bb0 * lib/webrick/log.rb: Hide copyright info from ri
* lib/webrick/httpstatus.rb: ditto
	* lib/webrick/htmlutils.rb: ditto
	* lib/webrick/httpversion.rb: ditto
	* lib/webrick/version.rb: ditto
	* lib/webrick/httpauth/userdb.rb: ditto
	* lib/webrick/httpauth/authenticator.rb: ditto
	* lib/webrick/accesslog.rb: ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-09 19:22:41 +00:00
naruse
f3fb1954eb * lib/webrick/httpauth/digestauth.rb
(WEBrick::HTTPAuth::ProxyDigestAuth#check_uri): privated.
  [ruby-dev:42344]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-21 06:56:17 +00:00
drbrain
073e6ccc7b Add documentation for WEBrick's DigestAuth
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29224 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-11 06:21:51 +00:00
nahi
9cf0cf92f2 * lib/webrick/httpauth/digestauth.rb: typo in exception message fixed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25415 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-20 15:17:37 +00:00
nobu
287a34ae0d * {ext,lib,test}/**/*.rb: removed trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-06 03:56:38 +00:00
matz
877ac7236a * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#do_CONNECT):
use #bytesize instead of #size.  a patch submitted from
  raspberry lemon in  [ruby-core:18571].

* lib/webrick/httpauth/digestauth.rb, lib/webrick/httpproxy.rb,
  lib/webrick/httprequest.rb, lib/webrick/httpservlet/cgi_runner.rb,
  lib/webrick/httpservlet/abstract.rb, lib/webrick/httpresponse.rb,
  lib/webrick/httpservlet/cgihandler.rb, lib/webrick/utils.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20152 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-08 09:41:24 +00:00
mame
b5a0eb6754 * lib/webrick/httpauth/digestauth.rb
(WEBrick::HTTPAuth::DigestAuth#initialize): fix typo.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-31 12:31:22 +00:00
nahi
151d11b5b1 * lib/webrick/httpauth/authenticator.rb
(WEBrick::HTTPAuth::Authenticator#check_scheme): auth-scheme must be
          treated as a case-insensitive token according to RFC 2617 section 1.2.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-04 14:51:22 +00:00
nahi
2fdd278c86 cosmetic.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8711 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-07-03 14:54:20 +00:00
gotoyuzo
97102f6596 * lib/webrick/httpauth/htpasswd.rb (WEBrick::Htpasswd#reload):
raise NotImplementedError if password is encrypted by digest
  algorithms. This patch is contributed by sheepman. [ruby-list:40467]

* lib/webrick/httpauth/digestauth.rb
  (WEBrick::HTTPAuth::DigestAuth#_authenticate): fix digest calculation.
  This patch is contributed by sheepman. [ruby-list:40482]

* lib/webrick/{httpauth.rb,httpauth/basicauth.rb,httpproxy.rb}: use
  pack/unpack-template char "m" instead of lib/base64.rb to do base64
  encoding/decoding. fixed: [ruby-dev:25336]

* test/webrick/test_httpauth.rb: new file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-01-02 22:31:13 +00:00
nahi
93ed2c7b1e * lib/webrick/httpauth.rb,
lib/webrick/httpauth/{basicauth.rb,digestauth.rb}: use
          pack/unpack-template char "m" instead of lib/base64.rb to do base64
          encoding/decoding.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-18 06:17:33 +00:00
gotoyuzo
77d3f40c90 * lib/webrick/httpauth/digestauth.rb: use Base64.encode64 to
avoid warnings. [webrickja:128]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-11-03 13:29:42 +00:00
gotoyuzo
01eba908ad * lib/webrick: imported.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-07-23 16:51:36 +00:00