webrick 1.8.2 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 963bdfcf1a0e919027a92007be283a146cd054be3a60e539e9f3cbce5c0a908f
4
- data.tar.gz: 2ed0bd918c3c5dbb908a59350c9e3691afe88c63a4a5c0a2b5085de7c30aeab5
3
+ metadata.gz: 706b97607998e5b9d2a966fd09af6f7fa6a5b40f2df22977b111e5afa2bbc0f6
4
+ data.tar.gz: e4376566540a86f896f31b61ed924d69f0fb415fe491273b0365169c16663ef7
5
5
  SHA512:
6
- metadata.gz: 2433fb9da7e7e7f10495059ac90de49238758fc0581fb8d0dfed28f08d47c9b21329fc4a03a7ade064cea71097f86e29a74003ca6369d3d9e58c401979871a0e
7
- data.tar.gz: b0bd6929f6d49967215825cce3c7ad5c7e6b1b45fcda8fd97c898f377df2453934d62ff0cc0a941b2d4a374487b901a207674f76229d45a899938d40516c9271
6
+ metadata.gz: d4321cb073b84fc0e32211b4fa1510520ec396a62b3165761638e84471a1e56915f751d46aceae6ac8d13aafd09b9066a05928a5b76abf3c82bc8501e74a9029
7
+ data.tar.gz: 9f66a53d89839da69abb3afd75a48f746e4023f888db3afd404a903bebde1f878318f08dff470e3006e1fa0637185f9f5bdc9e59c627f162e3664a482b149d06
data/Gemfile CHANGED
@@ -5,3 +5,6 @@ gemspec
5
5
  gem "rake"
6
6
  gem "test-unit"
7
7
  gem "test-unit-ruby-core"
8
+
9
+ # rbs requires ruby 3.0+
10
+ gem "rbs", require: false if !RUBY_VERSION.start_with?('2.')
data/README.md CHANGED
@@ -10,6 +10,8 @@ A WEBrick server can be composed of multiple WEBrick servers or servlets to prov
10
10
 
11
11
  WEBrick also includes tools for daemonizing a process and starting a process at a higher privilege level and dropping permissions.
12
12
 
13
+ WEBrick is suitable for use in testing and for development. However, while the developers of WEBrick will attempt to fix security issues, they do not encourage the use of WEBrick to serve production web applications that may be subject to hostile input.
14
+
13
15
  ## Installation
14
16
 
15
17
  Add this line to your application's Gemfile:
@@ -14,5 +14,5 @@ module WEBrick
14
14
  ##
15
15
  # The WEBrick version
16
16
 
17
- VERSION = "1.8.2"
17
+ VERSION = "1.9.0"
18
18
  end
data/sig/accesslog.rbs ADDED
@@ -0,0 +1,24 @@
1
+ module WEBrick
2
+ module AccessLog
3
+ class AccessLogError < StandardError
4
+ end
5
+
6
+ CLF_TIME_FORMAT: String
7
+
8
+ COMMON_LOG_FORMAT: String
9
+
10
+ CLF: String
11
+
12
+ REFERER_LOG_FORMAT: String
13
+
14
+ AGENT_LOG_FORMAT: String
15
+
16
+ COMBINED_LOG_FORMAT: String
17
+
18
+ def self?.setup_params: (Hash[Symbol, untyped] config, HTTPRequest req, HTTPResponse res) -> Hash[String, untyped]
19
+
20
+ def self?.format: (String format_string, Hash[String, untyped] params) -> String
21
+
22
+ def self?.escape: (String data) -> String
23
+ end
24
+ end
data/sig/cgi.rbs ADDED
@@ -0,0 +1,92 @@
1
+ module WEBrick
2
+ class CGI
3
+ @options: Array[untyped]
4
+
5
+ class CGIError < StandardError
6
+ end
7
+
8
+ attr_reader config: Hash[Symbol, untyped]
9
+
10
+ attr_reader logger: BasicLog
11
+
12
+ def initialize: (*untyped args) -> void
13
+
14
+ def []: (Symbol key) -> untyped
15
+
16
+ interface _Env
17
+ def []: (String) -> String?
18
+ end
19
+
20
+ def start: (?_Env env, ?IO stdin, ?IO stdout) -> void
21
+
22
+ def self.setup_header: () -> untyped
23
+
24
+ def self.status_line: () -> ""
25
+
26
+ def service: (HTTPRequest req, HTTPResponse res) -> void
27
+
28
+ class Socket
29
+ @config: Hash[Symbol, untyped]
30
+
31
+ @env: _Env
32
+
33
+ @header_part: StringIO
34
+
35
+ @body_part: IO
36
+
37
+ @out_port: IO
38
+
39
+ @server_addr: String
40
+
41
+ @server_name: String?
42
+
43
+ @server_port: String?
44
+
45
+ @remote_addr: String?
46
+
47
+ @remote_host: String?
48
+
49
+ @remote_port: (String | 0)
50
+
51
+ include Enumerable[String]
52
+
53
+ private
54
+
55
+ def initialize: (Hash[Symbol, untyped] config, _Env env, IO stdin, IO stdout) -> void
56
+
57
+ def request_line: () -> String
58
+
59
+ def setup_header: () -> void
60
+
61
+ def add_header: (String hdrname, String value) -> void
62
+
63
+ def input: () -> (IO | StringIO)
64
+
65
+ public
66
+
67
+ def peeraddr: () -> [nil, (String | 0), String?, String?]
68
+
69
+ def addr: () -> [nil, String?, String?, String]
70
+
71
+ def gets: (?String eol, ?Integer? size) -> String?
72
+
73
+ def read: (?Integer? size) -> String?
74
+
75
+ def each: () { (String) -> void } -> void
76
+
77
+ def eof?: () -> bool
78
+
79
+ def <<: (_ToS data) -> IO
80
+
81
+ def write: (_ToS data) -> Integer
82
+
83
+ def cert: () -> OpenSSL::X509::Certificate?
84
+
85
+ def peer_cert: () -> OpenSSL::X509::Certificate?
86
+
87
+ def peer_cert_chain: () -> Array[OpenSSL::X509::Certificate]?
88
+
89
+ def cipher: () -> [String?, String?, String?, String?]?
90
+ end
91
+ end
92
+ end
data/sig/compat.rbs ADDED
@@ -0,0 +1,18 @@
1
+ #
2
+ # System call error module used by webrick for cross platform compatibility.
3
+ #
4
+ # EPROTO:: protocol error
5
+ # ECONNRESET:: remote host reset the connection request
6
+ # ECONNABORTED:: Client sent TCP reset (RST) before server has accepted the
7
+ # connection requested by client.
8
+ #
9
+ module Errno
10
+ class EPROTO < SystemCallError
11
+ end
12
+
13
+ class ECONNRESET < SystemCallError
14
+ end
15
+
16
+ class ECONNABORTED < SystemCallError
17
+ end
18
+ end
data/sig/config.rbs ADDED
@@ -0,0 +1,17 @@
1
+ module WEBrick
2
+ module Config
3
+ LIBDIR: String
4
+
5
+ # for GenericServer
6
+ General: Hash[Symbol, untyped]
7
+
8
+ # for HTTPServer, HTTPRequest, HTTPResponse ...
9
+ HTTP: Hash[Symbol, untyped]
10
+
11
+ FileHandler: Hash[Symbol, untyped]
12
+
13
+ BasicAuth: Hash[Symbol, untyped]
14
+
15
+ DigestAuth: Hash[Symbol, untyped]
16
+ end
17
+ end
data/sig/cookie.rbs ADDED
@@ -0,0 +1,37 @@
1
+ module WEBrick
2
+ class Cookie
3
+ @expires: String?
4
+
5
+ attr_reader name: String?
6
+
7
+ attr_accessor value: String?
8
+
9
+ attr_accessor version: Integer
10
+
11
+ #
12
+ # The cookie domain
13
+ attr_accessor domain: String?
14
+
15
+ attr_accessor path: String?
16
+
17
+ attr_accessor secure: true?
18
+
19
+ attr_accessor comment: String?
20
+
21
+ attr_accessor max_age: Integer?
22
+
23
+ def initialize: (untyped name, untyped value) -> void
24
+
25
+ def expires=: ((Time | _ToS)? t) -> untyped
26
+
27
+ def expires: () -> Time?
28
+
29
+ def to_s: () -> String
30
+
31
+ def self.parse: (String? str) -> Array[instance]?
32
+
33
+ def self.parse_set_cookie: (String str) -> instance
34
+
35
+ def self.parse_set_cookies: (String str) -> Array[instance]
36
+ end
37
+ end
data/sig/htmlutils.rbs ADDED
@@ -0,0 +1,5 @@
1
+ module WEBrick
2
+ module HTMLUtils
3
+ def self?.escape: (String? string) -> String
4
+ end
5
+ end
@@ -0,0 +1,55 @@
1
+ module WEBrick
2
+ module HTTPAuth
3
+ module Authenticator
4
+ @reload_db: bool?
5
+
6
+ @request_field: String
7
+
8
+ @response_field: String
9
+
10
+ @resp_info_field: String
11
+
12
+ @auth_exception: singleton(HTTPStatus::ClientError)
13
+
14
+ @auth_scheme: String
15
+
16
+ RequestField: String
17
+
18
+ ResponseField: String
19
+
20
+ ResponseInfoField: String
21
+
22
+ AuthException: singleton(HTTPStatus::ClientError)
23
+
24
+ AuthScheme: String?
25
+
26
+ attr_reader realm: String?
27
+
28
+ attr_reader userdb: UserDB
29
+
30
+ attr_reader logger: Log
31
+
32
+ private
33
+
34
+ def check_init: (Hash[Symbol, untyped] config) -> void
35
+
36
+ def check_scheme: (HTTPRequest req) -> String?
37
+
38
+ def log: (interned meth, String fmt, *untyped args) -> void
39
+
40
+ def error: (String fmt, *untyped args) -> void
41
+
42
+ def info: (String fmt, *untyped args) -> void
43
+ end
44
+
45
+ module ProxyAuthenticator
46
+ RequestField: String
47
+
48
+ ResponseField: String
49
+
50
+ InfoField: String
51
+
52
+ AuthException: singleton(HTTPStatus::ClientError)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,29 @@
1
+ module WEBrick
2
+ module HTTPAuth
3
+ class BasicAuth
4
+ @config: Hash[Symbol, untyped]
5
+
6
+ include Authenticator
7
+
8
+ AuthScheme: String
9
+
10
+ def self.make_passwd: (String? realm, String? user, String? pass) -> String
11
+
12
+ attr_reader realm: String?
13
+
14
+ attr_reader userdb: UserDB
15
+
16
+ attr_reader logger: Log
17
+
18
+ def initialize: (Hash[Symbol, untyped] config, ?Hash[Symbol, untyped] default) -> void
19
+
20
+ def authenticate: (HTTPRequest req, HTTPResponse res) -> void
21
+
22
+ def challenge: (HTTPRequest req, HTTPResponse res) -> bot
23
+ end
24
+
25
+ class ProxyBasicAuth < BasicAuth
26
+ include ProxyAuthenticator
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,85 @@
1
+ module WEBrick
2
+ module HTTPAuth
3
+ class DigestAuth
4
+ @config: Hash[Symbol, untyped]
5
+
6
+ @domain: Array[String]?
7
+
8
+ @use_opaque: bool
9
+
10
+ @use_next_nonce: bool
11
+
12
+ @check_nc: bool
13
+
14
+ @use_auth_info_header: bool
15
+
16
+ @nonce_expire_period: Integer
17
+
18
+ @nonce_expire_delta: Integer
19
+
20
+ @internet_explorer_hack: bool
21
+
22
+ @h: singleton(Digest::Base)
23
+
24
+ @instance_key: String
25
+
26
+ @opaques: Hash[String, OpaqueInfo]
27
+
28
+ @last_nonce_expire: Time
29
+
30
+ @mutex: Thread::Mutex
31
+
32
+ include Authenticator
33
+
34
+ AuthScheme: String
35
+
36
+ class OpaqueInfo < Struct[untyped]
37
+ attr_accessor time(): Time
38
+ attr_accessor nonce(): String?
39
+ attr_accessor nc(): String
40
+ end
41
+
42
+ attr_reader algorithm: String?
43
+
44
+ attr_reader qop: Array[String]
45
+
46
+ def self.make_passwd: (String realm, String user, String pass) -> untyped
47
+
48
+ def initialize: (Hash[Symbol, untyped] config, ?Hash[Symbol, untyped] default) -> void
49
+
50
+ def authenticate: (HTTPRequest req, HTTPResponse res) -> void
51
+
52
+ def challenge: (HTTPRequest req, HTTPResponse res, ?bool stale) -> bot
53
+
54
+ private
55
+
56
+ MustParams: Array[String]
57
+
58
+ MustParamsAuth: Array[String]
59
+
60
+ def _authenticate: (HTTPRequest req, HTTPResponse res) -> (:nonce_is_stale | bool)
61
+
62
+ def split_param_value: (String string) -> Hash[String, String]
63
+
64
+ def generate_next_nonce: (HTTPRequest req) -> String
65
+
66
+ def check_nonce: (HTTPRequest req, Hash[String, String] auth_req) -> bool
67
+
68
+ def generate_opaque: (HTTPRequest req) -> String
69
+
70
+ def check_opaque: (OpaqueInfo opaque_struct, untyped req, Hash[String, String] auth_req) -> bool
71
+
72
+ def check_uri: (HTTPRequest req, Hash[String, String] auth_req) -> bool
73
+
74
+ def hexdigest: (*_ToS? args) -> String
75
+ end
76
+
77
+ class ProxyDigestAuth < DigestAuth
78
+ include ProxyAuthenticator
79
+
80
+ private
81
+
82
+ def check_uri: (HTTPRequest req, Hash[String, String] auth_req) -> true
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,31 @@
1
+ module WEBrick
2
+ module HTTPAuth
3
+ class Htdigest
4
+ @path: String
5
+
6
+ @mtime: Time
7
+
8
+ @digest: Hash[String, Hash[String, String]]
9
+
10
+ @mutex: Thread::Mutex
11
+
12
+ @auth_type: String
13
+
14
+ include UserDB
15
+
16
+ def initialize: (String path) -> void
17
+
18
+ def reload: () -> void
19
+
20
+ def flush: (?String? output) -> void
21
+
22
+ def get_passwd: (String realm, String user, bool reload_db) -> String?
23
+
24
+ def set_passwd: (String realm, String user, String pass) -> String
25
+
26
+ def delete_passwd: (String realm, String user) -> String?
27
+
28
+ def each: () { (String user, String realm, String password_hash) -> void } -> void
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ module WEBrick
2
+ module HTTPAuth
3
+ class Htgroup
4
+ @path: String
5
+
6
+ @mtime: Time
7
+
8
+ @group: Hash[String, Array[String]]
9
+
10
+ def initialize: (String path) -> void
11
+
12
+ def reload: () -> void
13
+
14
+ def flush: (?String? output) -> void
15
+
16
+ def members: (String group) -> Array[String]
17
+
18
+ def add: (String group, Array[String] members) -> void
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,31 @@
1
+ module WEBrick
2
+ module HTTPAuth
3
+ class Htpasswd
4
+ @path: String
5
+
6
+ @mtime: Time
7
+
8
+ @passwd: Hash[String, String]
9
+
10
+ @auth_type: String
11
+
12
+ @password_hash: (:crypt | :bcrypt)
13
+
14
+ include UserDB
15
+
16
+ def initialize: (String path, ?password_hash: (:crypt | :bcrypt)?) -> void
17
+
18
+ def reload: () -> void
19
+
20
+ def flush: (?String? output) -> void
21
+
22
+ def get_passwd: (String realm, String user, bool reload_db) -> String?
23
+
24
+ def set_passwd: (String realm, String user, String pass) -> void
25
+
26
+ def delete_passwd: (String realm, String user) -> String
27
+
28
+ def each: () { ([String, String]) -> void } -> void
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ module WEBrick
2
+ module HTTPAuth
3
+ module UserDB
4
+ attr_accessor auth_type: String
5
+
6
+ def make_passwd: (String realm, String user, String pass) -> String
7
+
8
+ def set_passwd: (String realm, String user, String pass) -> void
9
+
10
+ def get_passwd: (String realm, String user, ?bool reload_db) -> String
11
+ end
12
+ end
13
+ end
data/sig/httpauth.rbs ADDED
@@ -0,0 +1,13 @@
1
+ module WEBrick
2
+ module HTTPAuth
3
+ interface _Callable
4
+ def call: (String user, String pass) -> bool
5
+ end
6
+
7
+ def self?._basic_auth: (HTTPRequest req, HTTPResponse res, String realm, String req_field, String res_field, HTTPStatus::Error err_type, _Callable block) -> void
8
+
9
+ def self?.basic_auth: (HTTPRequest req, HTTPResponse res, String realm) { (String user, String pass) -> bool } -> void
10
+
11
+ def self?.proxy_basic_auth: (HTTPRequest req, HTTPResponse res, String realm) { (String user, String pass) -> bool } -> void
12
+ end
13
+ end
data/sig/httpproxy.rbs ADDED
@@ -0,0 +1,61 @@
1
+ module WEBrick
2
+ NullReader: untyped
3
+
4
+ def self.read: (*untyped args) -> nil
5
+
6
+ alias self.gets self.read
7
+
8
+ FakeProxyURI: untyped
9
+
10
+ def self.method_missing: (untyped meth, *untyped args) -> (nil | untyped)
11
+
12
+ class HTTPProxyServer < HTTPServer
13
+ @via: untyped
14
+
15
+ def initialize: (?::Hash[untyped, untyped] config, ?untyped default) -> void
16
+
17
+ # :stopdoc:
18
+ def service: (HTTPRequest req, HTTPResponse res) -> untyped
19
+
20
+ def proxy_auth: (HTTPRequest req, HTTPResponse res) -> untyped
21
+
22
+ def proxy_uri: (HTTPRequest req, HTTPResponse res) -> untyped
23
+
24
+ def proxy_service: (HTTPRequest req, HTTPResponse res) -> untyped
25
+
26
+ def do_CONNECT: (HTTPRequest req, HTTPResponse res) -> untyped
27
+
28
+ def do_GET: (HTTPRequest req, HTTPResponse res) -> untyped
29
+
30
+ def do_HEAD: (HTTPRequest req, HTTPResponse res) -> untyped
31
+
32
+ def do_POST: (HTTPRequest req, HTTPResponse res) -> untyped
33
+
34
+ def do_OPTIONS: (HTTPRequest req, HTTPResponse res) -> untyped
35
+
36
+ private
37
+
38
+ # Some header fields should not be transferred.
39
+ HopByHop: ::Array["connection" | "keep-alive" | "proxy-authenticate" | "upgrade" | "proxy-authorization" | "te" | "trailers" | "transfer-encoding"]
40
+
41
+ ShouldNotTransfer: ::Array["set-cookie" | "proxy-connection"]
42
+
43
+ def split_field: (untyped f) -> (untyped | ::Array[untyped])
44
+
45
+ def choose_header: (untyped src, untyped dst) -> untyped
46
+
47
+ # Net::HTTP is stupid about the multiple header fields.
48
+ # Here is workaround:
49
+ def set_cookie: (untyped src, untyped dst) -> (untyped | nil)
50
+
51
+ def set_via: (untyped h) -> (untyped | nil)
52
+
53
+ def setup_proxy_header: (HTTPRequest req, HTTPResponse res) -> untyped
54
+
55
+ def setup_upstream_proxy_authentication: (HTTPRequest req, HTTPResponse res, untyped header) -> untyped
56
+
57
+ def create_net_http: (untyped uri, untyped upstream) -> untyped
58
+
59
+ def perform_proxy_request: (HTTPRequest req, HTTPResponse res, untyped req_class, ?untyped? body_stream) -> untyped
60
+ end
61
+ end