itsi 0.2.25 → 0.2.27.rc1

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.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -3
  3. data/Cargo.lock +940 -988
  4. data/Cargo.toml +0 -1
  5. data/Dockerfile +2 -2
  6. data/Rakefile +24 -7
  7. data/crates/itsi_acme/Cargo.toml +2 -1
  8. data/crates/itsi_acme/src/acceptor.rs +1 -1
  9. data/crates/itsi_acme/src/acme.rs +31 -3
  10. data/crates/itsi_acme/src/http_challenge.rs +81 -0
  11. data/crates/itsi_acme/src/https_helper.rs +3 -1
  12. data/crates/itsi_acme/src/jose.rs +6 -2
  13. data/crates/itsi_acme/src/lib.rs +2 -0
  14. data/crates/itsi_acme/src/resolver.rs +27 -4
  15. data/crates/itsi_acme/src/state.rs +183 -22
  16. data/crates/itsi_scheduler/Cargo.toml +1 -1
  17. data/crates/itsi_scheduler/src/itsi_scheduler.rs +115 -64
  18. data/crates/itsi_scheduler/src/lib.rs +2 -1
  19. data/crates/itsi_server/Cargo.lock +2 -2
  20. data/crates/itsi_server/Cargo.toml +2 -1
  21. data/crates/itsi_server/src/lib.rs +15 -0
  22. data/crates/itsi_server/src/ruby_types/itsi_http_request.rs +9 -0
  23. data/crates/itsi_server/src/ruby_types/itsi_http_response.rs +95 -0
  24. data/crates/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +22 -1
  25. data/crates/itsi_server/src/ruby_types/itsi_server.rs +100 -0
  26. data/crates/itsi_server/src/server/binds/listener.rs +9 -24
  27. data/crates/itsi_server/src/server/binds/tls.rs +372 -67
  28. data/crates/itsi_server/src/services/itsi_http_service.rs +46 -2
  29. data/gems/scheduler/Cargo.lock +940 -988
  30. data/gems/scheduler/Cargo.toml +0 -1
  31. data/gems/scheduler/Gemfile +8 -2
  32. data/gems/scheduler/Gemfile.lock +107 -0
  33. data/gems/scheduler/Rakefile +33 -9
  34. data/gems/scheduler/itsi-scheduler.gemspec +0 -2
  35. data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
  36. data/gems/scheduler/lib/itsi/scheduler.rb +121 -6
  37. data/gems/scheduler/test/helpers/test_helper.rb +2 -0
  38. data/gems/scheduler/test/test_address_resolve.rb +8 -2
  39. data/gems/scheduler/test/test_itsi_scheduler.rb +80 -0
  40. data/gems/scheduler/test/test_timeout_after.rb +102 -0
  41. data/gems/server/Cargo.lock +940 -988
  42. data/gems/server/Cargo.toml +0 -1
  43. data/gems/server/Gemfile +2 -0
  44. data/gems/server/Gemfile.lock +123 -0
  45. data/gems/server/Rakefile +18 -5
  46. data/gems/server/itsi-server.gemspec +0 -2
  47. data/gems/server/lib/itsi/http_request.rb +10 -0
  48. data/gems/server/lib/itsi/server/rack_interface.rb +45 -2
  49. data/gems/server/lib/itsi/server/version.rb +1 -1
  50. data/gems/server/lib/itsi/server.rb +24 -0
  51. data/gems/server/test/acme/local_acme_challenges.rb +190 -0
  52. data/gems/server/test/helpers/local_acme.rb +218 -0
  53. data/gems/server/test/helpers/test_helper.rb +7 -11
  54. data/gems/server/test/middleware/endpoint.rb +9 -6
  55. data/gems/server/test/rack/test_rack_server.rb +79 -0
  56. data/lib/itsi/version.rb +1 -1
  57. metadata +11 -59
  58. data/gems/scheduler/vendor/rb-sys-build/.cargo-ok +0 -1
  59. data/gems/scheduler/vendor/rb-sys-build/.cargo_vcs_info.json +0 -6
  60. data/gems/scheduler/vendor/rb-sys-build/Cargo.lock +0 -294
  61. data/gems/scheduler/vendor/rb-sys-build/Cargo.toml +0 -71
  62. data/gems/scheduler/vendor/rb-sys-build/Cargo.toml.orig +0 -32
  63. data/gems/scheduler/vendor/rb-sys-build/LICENSE-APACHE +0 -190
  64. data/gems/scheduler/vendor/rb-sys-build/LICENSE-MIT +0 -21
  65. data/gems/scheduler/vendor/rb-sys-build/src/bindings/sanitizer.rs +0 -185
  66. data/gems/scheduler/vendor/rb-sys-build/src/bindings/stable_api.rs +0 -247
  67. data/gems/scheduler/vendor/rb-sys-build/src/bindings/wrapper.h +0 -71
  68. data/gems/scheduler/vendor/rb-sys-build/src/bindings.rs +0 -280
  69. data/gems/scheduler/vendor/rb-sys-build/src/cc.rs +0 -421
  70. data/gems/scheduler/vendor/rb-sys-build/src/lib.rs +0 -12
  71. data/gems/scheduler/vendor/rb-sys-build/src/rb_config/flags.rs +0 -101
  72. data/gems/scheduler/vendor/rb-sys-build/src/rb_config/library.rs +0 -132
  73. data/gems/scheduler/vendor/rb-sys-build/src/rb_config/search_path.rs +0 -57
  74. data/gems/scheduler/vendor/rb-sys-build/src/rb_config.rs +0 -906
  75. data/gems/scheduler/vendor/rb-sys-build/src/utils.rs +0 -53
  76. data/gems/server/vendor/rb-sys-build/.cargo-ok +0 -1
  77. data/gems/server/vendor/rb-sys-build/.cargo_vcs_info.json +0 -6
  78. data/gems/server/vendor/rb-sys-build/Cargo.lock +0 -294
  79. data/gems/server/vendor/rb-sys-build/Cargo.toml +0 -71
  80. data/gems/server/vendor/rb-sys-build/Cargo.toml.orig +0 -32
  81. data/gems/server/vendor/rb-sys-build/LICENSE-APACHE +0 -190
  82. data/gems/server/vendor/rb-sys-build/LICENSE-MIT +0 -21
  83. data/gems/server/vendor/rb-sys-build/src/bindings/sanitizer.rs +0 -185
  84. data/gems/server/vendor/rb-sys-build/src/bindings/stable_api.rs +0 -247
  85. data/gems/server/vendor/rb-sys-build/src/bindings/wrapper.h +0 -71
  86. data/gems/server/vendor/rb-sys-build/src/bindings.rs +0 -280
  87. data/gems/server/vendor/rb-sys-build/src/cc.rs +0 -421
  88. data/gems/server/vendor/rb-sys-build/src/lib.rs +0 -12
  89. data/gems/server/vendor/rb-sys-build/src/rb_config/flags.rs +0 -101
  90. data/gems/server/vendor/rb-sys-build/src/rb_config/library.rs +0 -132
  91. data/gems/server/vendor/rb-sys-build/src/rb_config/search_path.rs +0 -57
  92. data/gems/server/vendor/rb-sys-build/src/rb_config.rs +0 -906
  93. data/gems/server/vendor/rb-sys-build/src/utils.rs +0 -53
  94. data/vendor/rb-sys-build/.cargo-ok +0 -1
  95. data/vendor/rb-sys-build/.cargo_vcs_info.json +0 -6
  96. data/vendor/rb-sys-build/Cargo.lock +0 -294
  97. data/vendor/rb-sys-build/Cargo.toml +0 -71
  98. data/vendor/rb-sys-build/Cargo.toml.orig +0 -32
  99. data/vendor/rb-sys-build/LICENSE-APACHE +0 -190
  100. data/vendor/rb-sys-build/LICENSE-MIT +0 -21
  101. data/vendor/rb-sys-build/src/bindings/sanitizer.rs +0 -185
  102. data/vendor/rb-sys-build/src/bindings/stable_api.rs +0 -247
  103. data/vendor/rb-sys-build/src/bindings/wrapper.h +0 -71
  104. data/vendor/rb-sys-build/src/bindings.rs +0 -280
  105. data/vendor/rb-sys-build/src/cc.rs +0 -421
  106. data/vendor/rb-sys-build/src/lib.rs +0 -12
  107. data/vendor/rb-sys-build/src/rb_config/flags.rs +0 -101
  108. data/vendor/rb-sys-build/src/rb_config/library.rs +0 -132
  109. data/vendor/rb-sys-build/src/rb_config/search_path.rs +0 -57
  110. data/vendor/rb-sys-build/src/rb_config.rs +0 -906
  111. data/vendor/rb-sys-build/src/utils.rs +0 -53
@@ -0,0 +1,218 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fileutils"
4
+ require "json"
5
+ require "net/http"
6
+ require "openssl"
7
+ require "rbconfig"
8
+ require "shellwords"
9
+ require "timeout"
10
+ require "tmpdir"
11
+
12
+ class LocalAcmeAuthority
13
+ PEBBLE_VERSION = "v2.10.1"
14
+
15
+ attr_reader :directory_url, :cache_dir, :http_port, :tls_port
16
+
17
+ def self.available?
18
+ system("go version > /dev/null 2>&1")
19
+ end
20
+
21
+ def initialize
22
+ @workspace = Dir.mktmpdir("itsi-local-acme-")
23
+ @bin_dir = File.join(@workspace, "bin")
24
+ @cache_dir = File.join(@workspace, "cache")
25
+ FileUtils.mkdir_p(@bin_dir)
26
+ FileUtils.mkdir_p(@cache_dir)
27
+ @pids = []
28
+ end
29
+
30
+ def start
31
+ install_binaries
32
+ resolve_module_paths
33
+
34
+ @acme_port = free_port
35
+ @management_port = free_port
36
+ @dns_port = free_port
37
+ @dns_management_port = free_port
38
+ @http_port = free_port
39
+ @tls_port = free_port
40
+
41
+ write_pebble_config
42
+ start_challtestsrv
43
+ start_pebble
44
+
45
+ @directory_url = "https://localhost:#{@acme_port}/dir"
46
+ wait_for_https(@directory_url, @pebble_api_ca_path)
47
+ end
48
+
49
+ def stop
50
+ @pids.reverse_each do |pid|
51
+ begin
52
+ Process.kill("TERM", pid)
53
+ rescue Errno::ESRCH
54
+ next
55
+ end
56
+
57
+ begin
58
+ Timeout.timeout(5) { Process.wait(pid) }
59
+ rescue Timeout::Error
60
+ begin
61
+ Process.kill("KILL", pid)
62
+ rescue Errno::ESRCH
63
+ nil
64
+ end
65
+ begin
66
+ Process.wait(pid)
67
+ rescue Errno::ECHILD
68
+ nil
69
+ end
70
+ rescue Errno::ECHILD
71
+ nil
72
+ end
73
+ end
74
+ FileUtils.remove_entry(@workspace) if File.exist?(@workspace)
75
+ end
76
+
77
+ def env
78
+ {
79
+ "ITSI_ACME_DIRECTORY_URL" => @directory_url,
80
+ "ITSI_ACME_CA_PEM_PATH" => @pebble_api_ca_path,
81
+ "ITSI_ACME_CACHE_DIR" => @cache_dir
82
+ }
83
+ end
84
+
85
+ private
86
+
87
+ def install_binaries
88
+ install_go_binary("github.com/letsencrypt/pebble/v2/cmd/pebble", "pebble")
89
+ install_go_binary("github.com/letsencrypt/pebble/v2/cmd/pebble-challtestsrv", "pebble-challtestsrv")
90
+ end
91
+
92
+ def install_go_binary(package_name, binary_name)
93
+ destination = File.join(@bin_dir, binary_name)
94
+ return if File.exist?(destination)
95
+
96
+ system(
97
+ {
98
+ "GOBIN" => @bin_dir
99
+ },
100
+ "go", "install", "#{package_name}@#{PEBBLE_VERSION}",
101
+ exception: true
102
+ )
103
+ end
104
+
105
+ def resolve_module_paths
106
+ module_json = JSON.parse(`go mod download -json github.com/letsencrypt/pebble/v2@#{PEBBLE_VERSION}`)
107
+ @pebble_module_dir = module_json.fetch("Dir")
108
+ @pebble_api_ca_path = File.join(@pebble_module_dir, "test/certs/pebble.minica.pem")
109
+ @pebble_tls_cert_path = File.join(@pebble_module_dir, "test/certs/localhost/cert.pem")
110
+ @pebble_tls_key_path = File.join(@pebble_module_dir, "test/certs/localhost/key.pem")
111
+ end
112
+
113
+ def write_pebble_config
114
+ @pebble_config_path = File.join(@workspace, "pebble-config.json")
115
+ File.write(
116
+ @pebble_config_path,
117
+ JSON.pretty_generate(
118
+ {
119
+ pebble: {
120
+ listenAddress: "0.0.0.0:#{@acme_port}",
121
+ managementListenAddress: "0.0.0.0:#{@management_port}",
122
+ certificate: @pebble_tls_cert_path,
123
+ privateKey: @pebble_tls_key_path,
124
+ httpPort: @http_port,
125
+ tlsPort: @tls_port,
126
+ ocspResponderURL: "",
127
+ externalAccountBindingRequired: false,
128
+ domainBlocklist: [],
129
+ retryAfter: {
130
+ authz: 1,
131
+ order: 1
132
+ },
133
+ keyAlgorithm: "ecdsa"
134
+ }
135
+ }
136
+ )
137
+ )
138
+ end
139
+
140
+ def start_challtestsrv
141
+ spawn_process(
142
+ [
143
+ File.join(@bin_dir, "pebble-challtestsrv"),
144
+ "-dnsserver", "127.0.0.1:#{@dns_port}",
145
+ "-management", "127.0.0.1:#{@dns_management_port}",
146
+ "-http01", "",
147
+ "-https01", "",
148
+ "-tlsalpn01", "",
149
+ "-defaultIPv4", "127.0.0.1",
150
+ "-defaultIPv6", ""
151
+ ],
152
+ "challtestsrv"
153
+ )
154
+ end
155
+
156
+ def start_pebble
157
+ spawn_process(
158
+ [
159
+ File.join(@bin_dir, "pebble"),
160
+ "-config", @pebble_config_path,
161
+ "-dnsserver", "127.0.0.1:#{@dns_port}",
162
+ "-strict=false"
163
+ ],
164
+ "pebble",
165
+ {
166
+ "PEBBLE_VA_NOSLEEP" => "1",
167
+ "PEBBLE_WFE_NONCEREJECT" => "0",
168
+ "PEBBLE_AUTHZREUSE" => "0"
169
+ }
170
+ )
171
+ end
172
+
173
+ def spawn_process(command, name, env = {})
174
+ log_path = File.join(@workspace, "#{name}.log")
175
+ log = File.open(log_path, "w")
176
+ pid = Process.spawn(
177
+ env,
178
+ *command,
179
+ out: log,
180
+ err: log
181
+ )
182
+ @pids << pid
183
+ end
184
+
185
+ def free_port
186
+ server = TCPServer.new("127.0.0.1", 0)
187
+ port = server.addr[1]
188
+ server.close
189
+ port
190
+ end
191
+
192
+ def wait_for_https(url, ca_file)
193
+ uri = URI(url)
194
+ store = OpenSSL::X509::Store.new
195
+ store.add_file(ca_file)
196
+
197
+ Timeout.timeout(20) do
198
+ loop do
199
+ begin
200
+ Net::HTTP.start(
201
+ uri.host,
202
+ uri.port,
203
+ use_ssl: true,
204
+ cert_store: store,
205
+ verify_mode: OpenSSL::SSL::VERIFY_PEER,
206
+ open_timeout: 1,
207
+ read_timeout: 1
208
+ ) do |http|
209
+ response = http.get(uri.request_uri)
210
+ return if response.code.to_i < 500
211
+ end
212
+ rescue StandardError
213
+ sleep 0.1
214
+ end
215
+ end
216
+ end
217
+ end
218
+ end
@@ -2,13 +2,14 @@
2
2
 
3
3
  ENV["ITSI_LOG"] = "off"
4
4
 
5
+ Warning[:experimental] = false if Warning.respond_to?(:[]=)
6
+
5
7
  require "minitest/reporters"
6
8
  require "rackup"
7
9
  require "itsi/server"
8
10
  require "itsi/scheduler"
9
11
  require "socket"
10
12
  require "net/http"
11
- require "openssl"
12
13
  require "minitest/autorun"
13
14
 
14
15
  Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
@@ -27,12 +28,12 @@ def free_bind(protocol = "http", unix_socket: false)
27
28
  end
28
29
 
29
30
  def server(
30
- app: nil, app_with_lint: nil, protocol: "http", bind: free_bind(protocol), itsi_rb: nil, cleanup: true,
31
+ app: nil, app_with_lint: nil, protocol: "http", bind: free_bind(protocol), binds: nil, itsi_rb: nil, cleanup: true,
31
32
  &blk)
32
33
  app ||= Rack::Lint.new(app_with_lint) if app_with_lint
33
34
 
34
35
  cli_params = {}
35
- cli_params[:binds] = [bind] if bind
36
+ cli_params[:binds] = binds || [bind] if binds || bind
36
37
 
37
38
  sync = Queue.new
38
39
  cli_params[:hooks] ||= {}
@@ -41,10 +42,10 @@ def server(
41
42
  end
42
43
 
43
44
  Itsi::Server.start_in_background_thread(cli_params) do
44
- bind bind
45
+ bind bind if bind && binds.nil?
45
46
  workers 1
46
47
  threads 1
47
- log_level :warn
48
+ log_level :error
48
49
  run app if app
49
50
  instance_exec(&itsi_rb) if itsi_rb
50
51
  end
@@ -52,11 +53,6 @@ def server(
52
53
  sync.pop
53
54
  uri = URI(bind)
54
55
  RequestContext.new(uri, self).instance_exec(uri, &blk)
55
- rescue StandardError => e
56
- puts e
57
- # puts e.message
58
- # puts e.backtrace.join("\n")
59
- raise
60
56
  ensure
61
57
  Itsi::Server.stop_background_threads if cleanup
62
58
  end
@@ -158,7 +154,7 @@ class RequestContext
158
154
  @uri.host,
159
155
  @uri.port,
160
156
  use_ssl: @uri.scheme == "https",
161
- verify_mode: OpenSSL::SSL::VERIFY_NONE,
157
+ verify_mode: (@uri.scheme == "https" ? OpenSSL::SSL::VERIFY_NONE : nil),
162
158
  **opts
163
159
  )
164
160
  end
@@ -118,14 +118,17 @@ class TestEndpoint < Minitest::Test
118
118
 
119
119
  # 8. Exceptions inside handler produce 500
120
120
  def test_internal_error_returns_500
121
- server(itsi_rb: lambda do
122
- endpoint "/boom" do |_req|
123
- raise "test crash"
121
+ response = nil
122
+ capture_subprocess_io do
123
+ server(itsi_rb: lambda do
124
+ endpoint "/boom" do |_req|
125
+ raise "test crash"
126
+ end
127
+ end) do
128
+ response = get_resp("/boom")
124
129
  end
125
- end) do
126
- res = get_resp("/boom")
127
- assert_equal "500", res.code
128
130
  end
131
+ assert_equal "500", response.code
129
132
  end
130
133
 
131
134
  # 9. Controller method dispatch via symbol
@@ -66,6 +66,85 @@ class TestRackServer < Minitest::Test
66
66
  end
67
67
  end
68
68
 
69
+ def test_partial_hijack_yields_writable_stream
70
+ stream_class = nil
71
+ stream_closed = nil
72
+ required_methods_ok = nil
73
+
74
+ server(app_with_lint: lambda do |_env|
75
+ [200, { "content-type" => "text/plain", "rack.hijack" => lambda { |stream|
76
+ stream_class = stream.class
77
+ refute stream.closed?
78
+ required_methods_ok = %i[read write << flush close close_read close_write closed?]
79
+ .all? { |method_name| stream.respond_to?(method_name) }
80
+ stream.write("Hello")
81
+ stream.write(", World!")
82
+ stream.close
83
+ stream_closed = stream.closed?
84
+ } }, []]
85
+ end) do
86
+ assert_equal "Hello, World!", get("/")
87
+ end
88
+
89
+ assert_equal Rack::Lint::Wrapper::StreamWrapper, stream_class
90
+ assert_equal true, required_methods_ok
91
+ assert_equal true, stream_closed
92
+ end
93
+
94
+ def test_partial_hijack_upgrade_supports_bidirectional_io
95
+ callback_error = Queue.new
96
+ stream_details = Queue.new
97
+
98
+ server(app: lambda do |_env|
99
+ [101, {
100
+ "connection" => "Upgrade",
101
+ "upgrade" => "test",
102
+ "rack.hijack" => lambda { |stream|
103
+ stream_details << [stream.class, stream.is_a?(IO), stream.method(:read).arity]
104
+ Thread.new do
105
+ begin
106
+ payload = stream.read(2)
107
+ stream.write("echo:#{payload}")
108
+ rescue => e
109
+ callback_error << e
110
+ ensure
111
+ stream.close rescue nil
112
+ end
113
+ end
114
+ }
115
+ }, []]
116
+ end) do |uri|
117
+ socket = TCPSocket.new(uri.host, uri.port)
118
+ socket.write(
119
+ "GET / HTTP/1.1\r\n" \
120
+ "Host: #{uri.host}:#{uri.port}\r\n" \
121
+ "Connection: Upgrade\r\n" \
122
+ "Upgrade: test\r\n" \
123
+ "\r\n"
124
+ )
125
+ socket.flush
126
+
127
+ response = +""
128
+ until response.include?("\r\n\r\n")
129
+ response << socket.readpartial(1024)
130
+ end
131
+
132
+ assert_includes response, "101"
133
+ socket.write("hi")
134
+ socket.flush
135
+ echoed = socket.readpartial(7)
136
+ assert_equal "echo:hi", echoed
137
+ ensure
138
+ socket&.close
139
+ end
140
+
141
+ raise callback_error.pop unless callback_error.empty?
142
+ stream_class, stream_is_io, read_arity = stream_details.pop
143
+ assert_equal UNIXSocket, stream_class
144
+ assert_equal true, stream_is_io
145
+ assert_operator read_arity, :!=, 0
146
+ end
147
+
69
148
  def test_enumerable_body
70
149
  server(app_with_lint: lambda do |env|
71
150
  [200, { "content-type" => "application/json" },
data/lib/itsi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Itsi
2
- VERSION = "0.2.25"
2
+ VERSION = "0.2.27.rc1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.25
4
+ version: 0.2.27.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wouter Coppieters
@@ -15,28 +15,28 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.2.25
18
+ version: 0.2.27.rc1
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: 0.2.25
25
+ version: 0.2.27.rc1
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: itsi-server
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.2.25
32
+ version: 0.2.27.rc1
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: 0.2.25
39
+ version: 0.2.27.rc1
40
40
  description: Wrapper Gem for both the Itsi server and the Itsi Fiber scheduler
41
41
  email:
42
42
  - wc@pico.net.nz
@@ -74,6 +74,7 @@ files:
74
74
  - crates/itsi_acme/src/caches/no.rs
75
75
  - crates/itsi_acme/src/caches/test.rs
76
76
  - crates/itsi_acme/src/config.rs
77
+ - crates/itsi_acme/src/http_challenge.rs
77
78
  - crates/itsi_acme/src/https_helper.rs
78
79
  - crates/itsi_acme/src/incoming.rs
79
80
  - crates/itsi_acme/src/jose.rs
@@ -768,6 +769,7 @@ files:
768
769
  - gems/scheduler/Cargo.lock
769
770
  - gems/scheduler/Cargo.toml
770
771
  - gems/scheduler/Gemfile
772
+ - gems/scheduler/Gemfile.lock
771
773
  - gems/scheduler/Rakefile
772
774
  - gems/scheduler/bin/console
773
775
  - gems/scheduler/bin/setup
@@ -787,29 +789,13 @@ files:
787
789
  - gems/scheduler/test/test_nested_fibers.rb
788
790
  - gems/scheduler/test/test_network_io.rb
789
791
  - gems/scheduler/test/test_process_wait.rb
790
- - gems/scheduler/vendor/rb-sys-build/.cargo-ok
791
- - gems/scheduler/vendor/rb-sys-build/.cargo_vcs_info.json
792
- - gems/scheduler/vendor/rb-sys-build/Cargo.lock
793
- - gems/scheduler/vendor/rb-sys-build/Cargo.toml
794
- - gems/scheduler/vendor/rb-sys-build/Cargo.toml.orig
795
- - gems/scheduler/vendor/rb-sys-build/LICENSE-APACHE
796
- - gems/scheduler/vendor/rb-sys-build/LICENSE-MIT
797
- - gems/scheduler/vendor/rb-sys-build/src/bindings.rs
798
- - gems/scheduler/vendor/rb-sys-build/src/bindings/sanitizer.rs
799
- - gems/scheduler/vendor/rb-sys-build/src/bindings/stable_api.rs
800
- - gems/scheduler/vendor/rb-sys-build/src/bindings/wrapper.h
801
- - gems/scheduler/vendor/rb-sys-build/src/cc.rs
802
- - gems/scheduler/vendor/rb-sys-build/src/lib.rs
803
- - gems/scheduler/vendor/rb-sys-build/src/rb_config.rs
804
- - gems/scheduler/vendor/rb-sys-build/src/rb_config/flags.rs
805
- - gems/scheduler/vendor/rb-sys-build/src/rb_config/library.rs
806
- - gems/scheduler/vendor/rb-sys-build/src/rb_config/search_path.rs
807
- - gems/scheduler/vendor/rb-sys-build/src/utils.rs
792
+ - gems/scheduler/test/test_timeout_after.rb
808
793
  - gems/server/.gitignore
809
794
  - gems/server/.rubocop.yml
810
795
  - gems/server/Cargo.lock
811
796
  - gems/server/Cargo.toml
812
797
  - gems/server/Gemfile
798
+ - gems/server/Gemfile.lock
813
799
  - gems/server/Rakefile
814
800
  - gems/server/bin/console
815
801
  - gems/server/bin/setup
@@ -1102,6 +1088,8 @@ files:
1102
1088
  - gems/server/lib/itsi/standard_headers.rb
1103
1089
  - gems/server/lib/ruby_lsp/itsi/addon.rb
1104
1090
  - gems/server/lib/shell_completions/completions.rb
1091
+ - gems/server/test/acme/local_acme_challenges.rb
1092
+ - gems/server/test/helpers/local_acme.rb
1105
1093
  - gems/server/test/helpers/test_helper.rb
1106
1094
  - gems/server/test/middleware/allow_list.rb
1107
1095
  - gems/server/test/middleware/auth_api_key.rb
@@ -1142,24 +1130,6 @@ files:
1142
1130
  - gems/server/test/options/tls_handshake_timeout.rb
1143
1131
  - gems/server/test/options/unmatched_request.rb
1144
1132
  - gems/server/test/rack/test_rack_server.rb
1145
- - gems/server/vendor/rb-sys-build/.cargo-ok
1146
- - gems/server/vendor/rb-sys-build/.cargo_vcs_info.json
1147
- - gems/server/vendor/rb-sys-build/Cargo.lock
1148
- - gems/server/vendor/rb-sys-build/Cargo.toml
1149
- - gems/server/vendor/rb-sys-build/Cargo.toml.orig
1150
- - gems/server/vendor/rb-sys-build/LICENSE-APACHE
1151
- - gems/server/vendor/rb-sys-build/LICENSE-MIT
1152
- - gems/server/vendor/rb-sys-build/src/bindings.rs
1153
- - gems/server/vendor/rb-sys-build/src/bindings/sanitizer.rs
1154
- - gems/server/vendor/rb-sys-build/src/bindings/stable_api.rs
1155
- - gems/server/vendor/rb-sys-build/src/bindings/wrapper.h
1156
- - gems/server/vendor/rb-sys-build/src/cc.rs
1157
- - gems/server/vendor/rb-sys-build/src/lib.rs
1158
- - gems/server/vendor/rb-sys-build/src/rb_config.rs
1159
- - gems/server/vendor/rb-sys-build/src/rb_config/flags.rs
1160
- - gems/server/vendor/rb-sys-build/src/rb_config/library.rs
1161
- - gems/server/vendor/rb-sys-build/src/rb_config/search_path.rs
1162
- - gems/server/vendor/rb-sys-build/src/utils.rs
1163
1133
  - itsi-scheduler-100.png
1164
1134
  - itsi-server-100.png
1165
1135
  - lib/itsi.rb
@@ -1170,24 +1140,6 @@ files:
1170
1140
  - script/ci/setup_cibuildgem_rake_compiler.sh
1171
1141
  - script/ci/smoke_scheduler.rb
1172
1142
  - script/ci/smoke_server.rb
1173
- - vendor/rb-sys-build/.cargo-ok
1174
- - vendor/rb-sys-build/.cargo_vcs_info.json
1175
- - vendor/rb-sys-build/Cargo.lock
1176
- - vendor/rb-sys-build/Cargo.toml
1177
- - vendor/rb-sys-build/Cargo.toml.orig
1178
- - vendor/rb-sys-build/LICENSE-APACHE
1179
- - vendor/rb-sys-build/LICENSE-MIT
1180
- - vendor/rb-sys-build/src/bindings.rs
1181
- - vendor/rb-sys-build/src/bindings/sanitizer.rs
1182
- - vendor/rb-sys-build/src/bindings/stable_api.rs
1183
- - vendor/rb-sys-build/src/bindings/wrapper.h
1184
- - vendor/rb-sys-build/src/cc.rs
1185
- - vendor/rb-sys-build/src/lib.rs
1186
- - vendor/rb-sys-build/src/rb_config.rs
1187
- - vendor/rb-sys-build/src/rb_config/flags.rs
1188
- - vendor/rb-sys-build/src/rb_config/library.rs
1189
- - vendor/rb-sys-build/src/rb_config/search_path.rs
1190
- - vendor/rb-sys-build/src/utils.rs
1191
1143
  homepage: https://itsi.fyi
1192
1144
  licenses:
1193
1145
  - LGPL-3.0
@@ -1 +0,0 @@
1
- {"v":1}
@@ -1,6 +0,0 @@
1
- {
2
- "git": {
3
- "sha1": "8b8369748af0e3fa80d20e11b38b423cb2009bdf"
4
- },
5
- "path_in_vcs": "crates/rb-sys-build"
6
- }