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
|