itsi-server 0.2.14 → 0.2.16
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.
- checksums.yaml +4 -4
- data/Cargo.lock +167 -218
- data/ext/itsi_scheduler/Cargo.toml +1 -1
- data/ext/itsi_server/Cargo.lock +1 -1
- data/ext/itsi_server/Cargo.toml +3 -2
- data/ext/itsi_server/extconf.rb +3 -1
- data/ext/itsi_server/src/lib.rs +1 -0
- data/ext/itsi_server/src/ruby_types/itsi_grpc_call.rs +2 -2
- data/ext/itsi_server/src/ruby_types/itsi_http_request.rs +9 -11
- data/ext/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +6 -1
- data/ext/itsi_server/src/server/binds/listener.rs +4 -1
- data/ext/itsi_server/src/server/http_message_types.rs +1 -1
- data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +32 -34
- data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +3 -4
- data/ext/itsi_server/src/server/middleware_stack/middlewares/etag.rs +23 -38
- data/ext/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +65 -14
- data/ext/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +1 -1
- data/ext/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +1 -1
- data/ext/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +21 -8
- data/ext/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +1 -5
- data/ext/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +8 -6
- data/ext/itsi_server/src/server/middleware_stack/middlewares/static_response.rs +12 -3
- data/ext/itsi_server/src/server/process_worker.rs +2 -1
- data/ext/itsi_server/src/server/serve_strategy/acceptor.rs +96 -0
- data/ext/itsi_server/src/server/serve_strategy/mod.rs +1 -0
- data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +80 -136
- data/ext/itsi_server/src/server/thread_worker.rs +10 -3
- data/ext/itsi_server/src/services/itsi_http_service.rs +26 -21
- data/ext/itsi_server/src/services/mime_types.rs +2893 -1413
- data/ext/itsi_server/src/services/rate_limiter.rs +16 -34
- data/ext/itsi_server/src/services/static_file_server.rs +147 -121
- data/ext/itsi_tracing/Cargo.toml +1 -1
- data/lib/itsi/server/config/config_helpers.rb +1 -2
- data/lib/itsi/server/config/middleware/etag.md +3 -7
- data/lib/itsi/server/config/middleware/etag.rb +2 -4
- data/lib/itsi/server/config/options/listen_backlog.rb +1 -1
- data/lib/itsi/server/config/options/send_buffer_size.md +15 -0
- data/lib/itsi/server/config/options/send_buffer_size.rb +19 -0
- data/lib/itsi/server/config.rb +24 -25
- data/lib/itsi/server/route_tester.rb +1 -1
- data/lib/itsi/server/version.rb +1 -1
- metadata +21 -18
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Itsi
|
|
2
|
+
class Server
|
|
3
|
+
module Config
|
|
4
|
+
class SendBufferSize < Option
|
|
5
|
+
|
|
6
|
+
insert_text <<~SNIPPET
|
|
7
|
+
send_buffer_size ${1|262_144,1_048_576|}
|
|
8
|
+
SNIPPET
|
|
9
|
+
|
|
10
|
+
detail "Specifies the size of the send buffer for the socket. Larger buffer sizes can improve performance for high-throughput applications but may increase memory usage. The default value is 262,144 bytes."
|
|
11
|
+
|
|
12
|
+
schema do
|
|
13
|
+
(Type(Integer) & Range(1..Float::INFINITY) & Required()).default(262_144)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/itsi/server/config.rb
CHANGED
|
@@ -41,29 +41,28 @@ module Itsi
|
|
|
41
41
|
DSL.evaluate(&builder_proc)
|
|
42
42
|
elsif args[:static]
|
|
43
43
|
DSL.evaluate do
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
end
|
|
44
|
+
rate_limit key: "address", store_config: "in_memory", requests: 5, seconds: 10
|
|
45
|
+
etag type: "strong", algorithm: "md5", min_body_size: 1024 * 1024
|
|
46
|
+
compress min_size: 1024 * 1024, level: "fastest", algorithms: %w[zstd gzip br deflate],
|
|
47
|
+
mime_types: %w[all], compress_streams: true
|
|
48
|
+
log_requests before: { level: "DEBUG", format: "[{request_id}] {method} {path_and_query} - {addr} " },
|
|
49
|
+
after: { level: "DEBUG",
|
|
50
|
+
format: "[{request_id}] └─ {status} in {response_time}" }
|
|
51
|
+
nodelay false
|
|
52
|
+
static_assets \
|
|
53
|
+
relative_path: true,
|
|
54
|
+
allowed_extensions: [],
|
|
55
|
+
root_dir: ".",
|
|
56
|
+
not_found_behavior: { error: "not_found" },
|
|
57
|
+
auto_index: true,
|
|
58
|
+
try_html_extension: true,
|
|
59
|
+
max_file_size_in_memory: 1024 * 1024, # 1MB
|
|
60
|
+
max_files_in_memory: 1000,
|
|
61
|
+
file_check_interval: 1,
|
|
62
|
+
serve_hidden_files: false,
|
|
63
|
+
headers: {
|
|
64
|
+
"X-Content-Type-Options" => "nosniff"
|
|
65
|
+
}
|
|
67
66
|
end
|
|
68
67
|
elsif File.exist?(config_file_path.to_s)
|
|
69
68
|
DSL.evaluate(config_file_path)
|
|
@@ -106,7 +105,6 @@ module Itsi
|
|
|
106
105
|
Server.write_pid
|
|
107
106
|
end
|
|
108
107
|
|
|
109
|
-
|
|
110
108
|
srv_config = {
|
|
111
109
|
workers: args.fetch(:workers) { itsifile_config.fetch(:workers, 1) },
|
|
112
110
|
worker_memory_limit: args.fetch(:worker_memory_limit) { itsifile_config.fetch(:worker_memory_limit, nil) },
|
|
@@ -148,7 +146,8 @@ module Itsi
|
|
|
148
146
|
reuse_port: itsifile_config.fetch(:reuse_port, true),
|
|
149
147
|
listen_backlog: itsifile_config.fetch(:listen_backlog, 1024),
|
|
150
148
|
nodelay: itsifile_config.fetch(:nodelay, true),
|
|
151
|
-
recv_buffer_size: itsifile_config.fetch(:recv_buffer_size, 262_144)
|
|
149
|
+
recv_buffer_size: itsifile_config.fetch(:recv_buffer_size, 262_144),
|
|
150
|
+
send_buffer_size: itsifile_config.fetch(:send_buffer_size, 262_144)
|
|
152
151
|
}.transform_keys(&:to_s)
|
|
153
152
|
|
|
154
153
|
[srv_config, errors_to_error_lines(errors)]
|
|
@@ -23,7 +23,7 @@ module Itsi
|
|
|
23
23
|
when "cors"
|
|
24
24
|
"\e[33mcors\e[0m(#{mw_args["allow_origins"].join(" ")}, #{mw_args["allow_methods"].join(" ")})"
|
|
25
25
|
when "etag"
|
|
26
|
-
"\e[33metag\e[0m(#{mw_args["type"]}/#{mw_args["algorithm"]}
|
|
26
|
+
"\e[33metag\e[0m(#{mw_args["type"]}/#{mw_args["algorithm"]})"
|
|
27
27
|
when "cache_control"
|
|
28
28
|
"\e[33mcache_control\e[0m(max_age: #{mw_args["max_age"]}, #{mw_args.select do |_, v|
|
|
29
29
|
v == true
|
data/lib/itsi/server/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: itsi-server
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Wouter Coppieters
|
|
@@ -10,61 +10,61 @@ cert_chain: []
|
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
|
-
name:
|
|
13
|
+
name: json
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
|
-
- - "
|
|
16
|
+
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '
|
|
18
|
+
version: '2'
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
|
-
- - "
|
|
23
|
+
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '
|
|
25
|
+
version: '2'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
|
-
name:
|
|
27
|
+
name: prism
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '1.4'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
39
|
+
version: '1.4'
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
|
-
name:
|
|
41
|
+
name: rack
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
|
-
- - "
|
|
44
|
+
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
46
|
+
version: '1.6'
|
|
47
47
|
type: :runtime
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
|
-
- - "
|
|
51
|
+
- - ">="
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version:
|
|
53
|
+
version: '1.6'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
|
-
name:
|
|
55
|
+
name: rb_sys
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version:
|
|
60
|
+
version: 0.9.91
|
|
61
61
|
type: :runtime
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
67
|
+
version: 0.9.91
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
69
|
name: ruby-lsp
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -233,6 +233,7 @@ files:
|
|
|
233
233
|
- ext/itsi_server/src/server/process_worker.rs
|
|
234
234
|
- ext/itsi_server/src/server/redirect_type.rs
|
|
235
235
|
- ext/itsi_server/src/server/request_job.rs
|
|
236
|
+
- ext/itsi_server/src/server/serve_strategy/acceptor.rs
|
|
236
237
|
- ext/itsi_server/src/server/serve_strategy/cluster_mode.rs
|
|
237
238
|
- ext/itsi_server/src/server/serve_strategy/mod.rs
|
|
238
239
|
- ext/itsi_server/src/server/serve_strategy/single_mode.rs
|
|
@@ -501,6 +502,8 @@ files:
|
|
|
501
502
|
- lib/itsi/server/config/options/ruby_thread_request_backlog_size.rb
|
|
502
503
|
- lib/itsi/server/config/options/scheduler_threads.md
|
|
503
504
|
- lib/itsi/server/config/options/scheduler_threads.rb
|
|
505
|
+
- lib/itsi/server/config/options/send_buffer_size.md
|
|
506
|
+
- lib/itsi/server/config/options/send_buffer_size.rb
|
|
504
507
|
- lib/itsi/server/config/options/shutdown_timeout.md
|
|
505
508
|
- lib/itsi/server/config/options/shutdown_timeout.rb
|
|
506
509
|
- lib/itsi/server/config/options/stream_body.md
|
|
@@ -536,7 +539,7 @@ files:
|
|
|
536
539
|
- lib/shell_completions/completions.rb
|
|
537
540
|
homepage: https://itsi.fyi
|
|
538
541
|
licenses:
|
|
539
|
-
-
|
|
542
|
+
- LGPL-3.0
|
|
540
543
|
metadata:
|
|
541
544
|
homepage_uri: https://itsi.fyi
|
|
542
545
|
source_code_uri: https://github.com/wouterken/itsi
|