itsi 0.1.20 → 0.2.2

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 (319) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -8
  3. data/Cargo.lock +2 -2
  4. data/LICENSE.txt +698 -0
  5. data/README.md +15 -4
  6. data/Rakefile +9 -5
  7. data/crates/itsi_acme/.gitignore +4 -0
  8. data/crates/itsi_acme/Cargo.toml +86 -0
  9. data/crates/itsi_acme/LICENSE-APACHE +201 -0
  10. data/crates/itsi_acme/LICENSE-MIT +23 -0
  11. data/crates/itsi_acme/README.md +9 -0
  12. data/crates/itsi_acme/examples/high_level.rs +63 -0
  13. data/crates/itsi_acme/examples/high_level_warp.rs +52 -0
  14. data/crates/itsi_acme/examples/low_level.rs +87 -0
  15. data/crates/itsi_acme/examples/low_level_axum.rs +66 -0
  16. data/crates/itsi_acme/src/acceptor.rs +81 -0
  17. data/crates/itsi_acme/src/acme.rs +354 -0
  18. data/crates/itsi_acme/src/axum.rs +86 -0
  19. data/crates/itsi_acme/src/cache.rs +39 -0
  20. data/crates/itsi_acme/src/caches/boxed.rs +80 -0
  21. data/crates/itsi_acme/src/caches/composite.rs +69 -0
  22. data/crates/itsi_acme/src/caches/dir.rs +106 -0
  23. data/crates/itsi_acme/src/caches/mod.rs +11 -0
  24. data/crates/itsi_acme/src/caches/no.rs +78 -0
  25. data/crates/itsi_acme/src/caches/test.rs +136 -0
  26. data/crates/itsi_acme/src/config.rs +172 -0
  27. data/crates/itsi_acme/src/https_helper.rs +69 -0
  28. data/crates/itsi_acme/src/incoming.rs +142 -0
  29. data/crates/itsi_acme/src/jose.rs +161 -0
  30. data/crates/itsi_acme/src/lib.rs +142 -0
  31. data/crates/itsi_acme/src/resolver.rs +59 -0
  32. data/crates/itsi_acme/src/state.rs +424 -0
  33. data/crates/itsi_rb_helpers/src/lib.rs +4 -3
  34. data/crates/itsi_scheduler/Cargo.toml +1 -1
  35. data/crates/itsi_scheduler/src/itsi_scheduler.rs +8 -2
  36. data/crates/itsi_scheduler/src/lib.rs +1 -0
  37. data/crates/itsi_server/Cargo.toml +1 -1
  38. data/crates/itsi_server/src/lib.rs +2 -1
  39. data/crates/itsi_server/src/ruby_types/itsi_http_request.rs +18 -1
  40. data/crates/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +11 -3
  41. data/crates/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +122 -63
  42. data/crates/itsi_server/src/ruby_types/itsi_server.rs +2 -0
  43. data/crates/itsi_server/src/server/binds/bind.rs +3 -0
  44. data/crates/itsi_server/src/server/binds/listener.rs +12 -5
  45. data/crates/itsi_server/src/server/binds/tls.rs +13 -5
  46. data/crates/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs +12 -5
  47. data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs +8 -1
  48. data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +9 -1
  49. data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +48 -43
  50. data/crates/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs +11 -2
  51. data/crates/itsi_server/src/server/middleware_stack/middlewares/compression.rs +39 -12
  52. data/crates/itsi_server/src/server/middleware_stack/middlewares/cors.rs +36 -27
  53. data/crates/itsi_server/src/server/middleware_stack/middlewares/csp.rs +25 -11
  54. data/crates/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs +12 -3
  55. data/crates/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +74 -72
  56. data/crates/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +15 -1
  57. data/crates/itsi_server/src/server/middleware_stack/middlewares/etag.rs +11 -8
  58. data/crates/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs +19 -11
  59. data/crates/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +5 -5
  60. data/crates/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +2 -2
  61. data/crates/itsi_server/src/server/middleware_stack/middlewares/mod.rs +11 -5
  62. data/crates/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +17 -20
  63. data/crates/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +19 -8
  64. data/crates/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +16 -37
  65. data/crates/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs +22 -12
  66. data/crates/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs +26 -11
  67. data/crates/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +7 -1
  68. data/crates/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +14 -4
  69. data/crates/itsi_server/src/server/middleware_stack/middlewares/token_source.rs +19 -0
  70. data/crates/itsi_server/src/server/middleware_stack/mod.rs +49 -13
  71. data/crates/itsi_server/src/server/mod.rs +1 -0
  72. data/crates/itsi_server/src/server/redirect_type.rs +26 -0
  73. data/crates/itsi_server/src/server/serve_strategy/cluster_mode.rs +22 -16
  74. data/crates/itsi_server/src/server/serve_strategy/single_mode.rs +49 -12
  75. data/crates/itsi_server/src/server/signal.rs +1 -0
  76. data/crates/itsi_server/src/server/size_limited_incoming.rs +6 -0
  77. data/crates/itsi_server/src/server/thread_worker.rs +5 -1
  78. data/crates/itsi_server/src/services/itsi_http_service.rs +20 -2
  79. data/crates/itsi_server/src/services/rate_limiter.rs +15 -4
  80. data/crates/itsi_server/src/services/static_file_server.rs +33 -19
  81. data/crates/itsi_tracing/src/lib.rs +42 -22
  82. data/docs/content/_index.md +1 -2
  83. data/docs/content/acknowledgements/_index.md +5 -2
  84. data/docs/content/configuration/_index.md +8 -5
  85. data/docs/content/contact/_index.md +8 -1
  86. data/docs/content/faqs/_index.md +5 -3
  87. data/docs/content/features/_index.md +56 -50
  88. data/docs/content/getting_started/_index.md +8 -5
  89. data/docs/content/getting_started/local_development.md +68 -8
  90. data/docs/content/getting_started/logging.md +16 -9
  91. data/docs/content/getting_started/running_itsi_in_production.md +5 -3
  92. data/docs/content/getting_started/signals.md +38 -0
  93. data/docs/content/itsi_scheduler/_index.md +8 -7
  94. data/docs/content/utilities/_index.md +13 -0
  95. data/docs/content/utilities/config_file_testing.md +17 -0
  96. data/docs/content/utilities/passfile_generator.md +41 -0
  97. data/docs/content/utilities/route_testing.md +27 -0
  98. data/docs/content/utilities/secrets_management.md +30 -0
  99. data/docs/hugo.yaml +1 -1
  100. data/fairytale.txt +3 -4
  101. data/gems/scheduler/Cargo.lock +1 -1
  102. data/gems/scheduler/README.md +4 -5
  103. data/gems/scheduler/Rakefile +0 -4
  104. data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
  105. data/gems/scheduler/lib/itsi/scheduler.rb +9 -4
  106. data/gems/scheduler/test/test_active_record.rb +12 -7
  107. data/gems/server/Cargo.lock +1 -1
  108. data/gems/server/Rakefile +0 -4
  109. data/gems/server/exe/itsi +13 -2
  110. data/gems/server/lib/itsi/http_request/response_status_shortcodes.rb +2 -0
  111. data/gems/server/lib/itsi/http_request.rb +40 -9
  112. data/gems/server/lib/itsi/http_response.rb +2 -1
  113. data/gems/server/lib/itsi/passfile.rb +0 -1
  114. data/gems/server/lib/itsi/server/config/config_helpers.rb +20 -8
  115. data/gems/server/lib/itsi/server/config/dsl.rb +20 -435
  116. data/gems/server/lib/itsi/server/config/known_paths.rb +4 -1
  117. data/gems/server/lib/itsi/server/config/middleware/_index.md +6 -4
  118. data/gems/server/lib/itsi/server/config/middleware/allow_list.md +46 -0
  119. data/gems/server/lib/itsi/server/config/middleware/allow_list.rb +42 -0
  120. data/gems/server/lib/itsi/server/config/middleware/auth_api_key.md +90 -0
  121. data/gems/server/lib/itsi/server/config/middleware/auth_api_key.rb +51 -0
  122. data/gems/server/lib/itsi/server/config/middleware/auth_basic.md +45 -0
  123. data/gems/server/lib/itsi/server/config/middleware/auth_basic.rb +44 -0
  124. data/gems/server/lib/itsi/server/config/middleware/auth_jwt.md +82 -0
  125. data/gems/server/lib/itsi/server/config/middleware/auth_jwt.rb +38 -0
  126. data/gems/server/lib/itsi/server/config/middleware/cache_control.md +78 -0
  127. data/gems/server/lib/itsi/server/config/middleware/cache_control.rb +45 -0
  128. data/gems/server/lib/itsi/server/config/middleware/cidr_to_regex.rb +50 -0
  129. data/gems/server/lib/itsi/server/config/middleware/compression.md +50 -0
  130. data/gems/server/lib/itsi/server/config/middleware/compression.rb +37 -0
  131. data/gems/server/lib/itsi/server/config/middleware/cors.md +93 -0
  132. data/gems/server/lib/itsi/server/config/middleware/cors.rb +32 -0
  133. data/gems/server/lib/itsi/server/config/middleware/csp.md +37 -0
  134. data/gems/server/lib/itsi/server/config/middleware/csp.rb +44 -0
  135. data/gems/server/lib/itsi/server/config/middleware/deny_list.md +45 -0
  136. data/gems/server/lib/itsi/server/config/middleware/deny_list.rb +42 -0
  137. data/gems/server/lib/itsi/server/config/middleware/endpoint/_index.md +159 -0
  138. data/gems/server/lib/itsi/server/config/middleware/endpoint/controller.md +186 -0
  139. data/gems/server/lib/itsi/server/config/middleware/endpoint/controller.rb +33 -0
  140. data/gems/server/lib/itsi/server/config/middleware/endpoint/delete.md +12 -0
  141. data/gems/server/lib/itsi/server/config/middleware/endpoint/delete.rb +42 -0
  142. data/gems/server/lib/itsi/server/config/middleware/endpoint/endpoint.rb +99 -0
  143. data/gems/server/lib/itsi/server/config/middleware/endpoint/get.md +12 -0
  144. data/gems/server/lib/itsi/server/config/middleware/endpoint/get.rb +42 -0
  145. data/gems/server/lib/itsi/server/config/middleware/endpoint/http_request.md +44 -0
  146. data/gems/server/lib/itsi/server/config/middleware/endpoint/http_response.md +39 -0
  147. data/gems/server/lib/itsi/server/config/middleware/endpoint/patch.md +12 -0
  148. data/gems/server/lib/itsi/server/config/middleware/endpoint/patch.rb +42 -0
  149. data/gems/server/lib/itsi/server/config/middleware/endpoint/post.md +12 -0
  150. data/gems/server/lib/itsi/server/config/middleware/endpoint/post.rb +42 -0
  151. data/gems/server/lib/itsi/server/config/middleware/endpoint/put.md +12 -0
  152. data/gems/server/lib/itsi/server/config/middleware/endpoint/put.rb +42 -0
  153. data/gems/server/lib/itsi/server/config/middleware/endpoint/schemas.md +122 -0
  154. data/gems/server/lib/itsi/server/config/middleware/error_response.md +61 -0
  155. data/gems/server/lib/itsi/server/config/middleware/error_response.rb +36 -0
  156. data/gems/server/lib/itsi/server/config/middleware/etag.md +59 -0
  157. data/gems/server/lib/itsi/server/config/middleware/etag.rb +27 -0
  158. data/gems/server/lib/itsi/server/config/middleware/grpc.md +172 -0
  159. data/gems/server/lib/itsi/server/config/middleware/grpc.rb +54 -0
  160. data/gems/server/lib/itsi/server/config/middleware/intrusion_protection.md +124 -0
  161. data/gems/server/lib/itsi/server/config/middleware/intrusion_protection.rb +61 -0
  162. data/gems/server/lib/itsi/server/config/middleware/location.md +107 -0
  163. data/gems/server/lib/itsi/server/config/middleware/location.rb +99 -0
  164. data/gems/server/lib/itsi/server/config/middleware/log_requests.md +13 -11
  165. data/gems/server/lib/itsi/server/config/middleware/log_requests.rb +1 -3
  166. data/gems/server/lib/itsi/server/config/middleware/max_body.md +18 -0
  167. data/gems/server/lib/itsi/server/config/middleware/max_body.rb +21 -0
  168. data/gems/server/lib/itsi/server/config/middleware/proxy.md +62 -0
  169. data/gems/server/lib/itsi/server/config/middleware/proxy.rb +41 -0
  170. data/gems/server/lib/itsi/server/config/middleware/rackup_file.md +54 -0
  171. data/gems/server/lib/itsi/server/config/middleware/rackup_file.rb +44 -0
  172. data/gems/server/lib/itsi/server/config/middleware/rate_limit.md +126 -0
  173. data/gems/server/lib/itsi/server/config/middleware/rate_limit.rb +34 -0
  174. data/gems/server/lib/itsi/server/config/middleware/rate_limit_store.rb +25 -0
  175. data/gems/server/lib/itsi/server/config/middleware/redirect.md +55 -0
  176. data/gems/server/lib/itsi/server/config/middleware/redirect.rb +25 -0
  177. data/gems/server/lib/itsi/server/config/middleware/request_headers.md +34 -0
  178. data/gems/server/lib/itsi/server/config/middleware/request_headers.rb +24 -0
  179. data/gems/server/lib/itsi/server/config/middleware/response_headers.md +33 -0
  180. data/gems/server/lib/itsi/server/config/middleware/response_headers.rb +25 -0
  181. data/gems/server/lib/itsi/server/config/middleware/run.md +60 -0
  182. data/gems/server/lib/itsi/server/config/middleware/run.rb +43 -0
  183. data/gems/server/lib/itsi/server/config/middleware/static_assets.md +73 -0
  184. data/gems/server/lib/itsi/server/config/middleware/static_assets.rb +87 -0
  185. data/gems/server/lib/itsi/server/config/middleware/static_response.md +44 -0
  186. data/gems/server/lib/itsi/server/config/middleware/static_response.rb +29 -0
  187. data/gems/server/lib/itsi/server/config/middleware/string_rewrite.md +67 -0
  188. data/gems/server/lib/itsi/server/config/middleware/token_source.rb +32 -0
  189. data/gems/server/lib/itsi/server/config/middleware.rb +4 -0
  190. data/gems/server/lib/itsi/server/config/option.rb +5 -0
  191. data/gems/server/lib/itsi/server/config/options/_index.md +3 -2
  192. data/gems/server/lib/itsi/server/config/options/auto_reload_config.md +13 -0
  193. data/gems/server/lib/itsi/server/config/options/auto_reload_config.rb +41 -0
  194. data/gems/server/lib/itsi/server/config/options/bind.md +71 -0
  195. data/gems/server/lib/itsi/server/config/options/bind.rb +26 -0
  196. data/gems/server/lib/itsi/server/config/options/certificates.md +65 -0
  197. data/gems/server/lib/itsi/server/config/options/daemonize.md +14 -0
  198. data/gems/server/lib/itsi/server/config/options/daemonize.rb +19 -0
  199. data/gems/server/lib/itsi/server/config/options/fiber_scheduler.md +1 -2
  200. data/gems/server/lib/itsi/server/config/options/fiber_scheduler.rb +6 -3
  201. data/gems/server/lib/itsi/server/config/options/header_read_timeout.md +17 -0
  202. data/gems/server/lib/itsi/server/config/options/header_read_timeout.rb +19 -0
  203. data/gems/server/lib/itsi/server/config/options/hooks/_index.md +11 -0
  204. data/gems/server/lib/itsi/server/config/options/hooks/after_fork.md +13 -0
  205. data/gems/server/lib/itsi/server/config/options/hooks/after_fork.rb +28 -0
  206. data/gems/server/lib/itsi/server/config/options/hooks/after_memory_limit_reached.md +14 -0
  207. data/gems/server/lib/itsi/server/config/options/hooks/after_memory_limit_reached.rb +28 -0
  208. data/gems/server/lib/itsi/server/config/options/hooks/after_start.md +12 -0
  209. data/gems/server/lib/itsi/server/config/options/hooks/after_start.rb +28 -0
  210. data/gems/server/lib/itsi/server/config/options/hooks/before_fork.md +13 -0
  211. data/gems/server/lib/itsi/server/config/options/hooks/before_fork.rb +28 -0
  212. data/gems/server/lib/itsi/server/config/options/hooks/before_restart.md +12 -0
  213. data/gems/server/lib/itsi/server/config/options/hooks/before_restart.rb +28 -0
  214. data/gems/server/lib/itsi/server/config/options/hooks/before_shutdown.md +12 -0
  215. data/gems/server/lib/itsi/server/config/options/hooks/before_shutdown.rb +28 -0
  216. data/gems/server/lib/itsi/server/config/options/include.md +20 -0
  217. data/gems/server/lib/itsi/server/config/options/include.rb +36 -0
  218. data/gems/server/lib/itsi/server/config/options/listen_backlog.md +11 -0
  219. data/gems/server/lib/itsi/server/config/options/listen_backlog.rb +19 -0
  220. data/gems/server/lib/itsi/server/config/options/log_format.md +18 -0
  221. data/gems/server/lib/itsi/server/config/options/log_format.rb +19 -0
  222. data/gems/server/lib/itsi/server/config/options/log_level.md +34 -0
  223. data/gems/server/lib/itsi/server/config/options/log_level.rb +20 -0
  224. data/gems/server/lib/itsi/server/config/options/log_target.md +38 -0
  225. data/gems/server/lib/itsi/server/config/options/log_target.rb +19 -0
  226. data/gems/server/lib/itsi/server/config/options/log_target_filters.md +17 -0
  227. data/gems/server/lib/itsi/server/config/options/log_target_filters.rb +19 -0
  228. data/gems/server/lib/itsi/server/config/options/multithreaded_reactor.md +27 -0
  229. data/gems/server/lib/itsi/server/config/options/multithreaded_reactor.rb +24 -0
  230. data/gems/server/lib/itsi/server/config/options/nodelay.md +16 -0
  231. data/gems/server/lib/itsi/server/config/options/nodelay.rb +19 -0
  232. data/gems/server/lib/itsi/server/config/options/oob_gc_responses_threshold.md +19 -0
  233. data/gems/server/lib/itsi/server/config/options/oob_gc_responses_threshold.rb +18 -0
  234. data/gems/server/lib/itsi/server/config/options/pin_worker_cores.md +17 -0
  235. data/gems/server/lib/itsi/server/config/options/pin_worker_cores.rb +19 -0
  236. data/gems/server/lib/itsi/server/config/options/preload.md +21 -0
  237. data/gems/server/lib/itsi/server/config/options/preload.rb +18 -0
  238. data/gems/server/lib/itsi/server/config/options/recv_buffer_size.md +15 -0
  239. data/gems/server/lib/itsi/server/config/options/recv_buffer_size.rb +19 -0
  240. data/gems/server/lib/itsi/server/config/options/redirect_http_to_https.md +21 -0
  241. data/gems/server/lib/itsi/server/config/options/redirect_http_to_https.rb +30 -0
  242. data/gems/server/lib/itsi/server/config/options/request_timeout.md +23 -0
  243. data/gems/server/lib/itsi/server/config/options/request_timeout.rb +19 -0
  244. data/gems/server/lib/itsi/server/config/options/reuse_address.md +16 -0
  245. data/gems/server/lib/itsi/server/config/options/reuse_address.rb +19 -0
  246. data/gems/server/lib/itsi/server/config/options/reuse_port.md +16 -0
  247. data/gems/server/lib/itsi/server/config/options/reuse_port.rb +19 -0
  248. data/gems/server/lib/itsi/server/config/options/scheduler_threads.md +34 -0
  249. data/gems/server/lib/itsi/server/config/options/scheduler_threads.rb +17 -0
  250. data/gems/server/lib/itsi/server/config/options/shutdown_timeout.md +17 -0
  251. data/gems/server/lib/itsi/server/config/options/shutdown_timeout.rb +19 -0
  252. data/gems/server/lib/itsi/server/config/options/stream_body.md +32 -0
  253. data/gems/server/lib/itsi/server/config/options/stream_body.rb +18 -0
  254. data/gems/server/lib/itsi/server/config/options/threads.md +7 -2
  255. data/gems/server/lib/itsi/server/config/options/threads.rb +1 -1
  256. data/gems/server/lib/itsi/server/config/options/watch.md +16 -0
  257. data/gems/server/lib/itsi/server/config/options/watch.rb +28 -0
  258. data/gems/server/lib/itsi/server/config/options/worker_memory_limit.md +22 -0
  259. data/gems/server/lib/itsi/server/config/options/worker_memory_limit.rb +18 -0
  260. data/gems/server/lib/itsi/server/config/options/workers.md +1 -2
  261. data/gems/server/lib/itsi/server/config/options/workers.rb +1 -1
  262. data/gems/server/lib/itsi/server/config/typed_struct.rb +59 -20
  263. data/gems/server/lib/itsi/server/config.rb +77 -48
  264. data/gems/server/lib/itsi/server/default_config/Itsi.rb +3 -3
  265. data/gems/server/lib/itsi/server/grpc/grpc_call.rb +1 -1
  266. data/gems/server/lib/itsi/server/grpc/grpc_interface.rb +11 -4
  267. data/gems/server/lib/itsi/server/rack/handler/itsi.rb +3 -3
  268. data/gems/server/lib/itsi/server/route_tester.rb +58 -8
  269. data/gems/server/lib/itsi/server/signal_trap.rb +1 -1
  270. data/gems/server/lib/itsi/server/typed_handlers/param_parser.rb +14 -18
  271. data/gems/server/lib/itsi/server/typed_handlers/source_parser.rb +5 -4
  272. data/gems/server/lib/itsi/server/typed_handlers.rb +12 -4
  273. data/gems/server/lib/itsi/server/version.rb +1 -1
  274. data/gems/server/lib/itsi/server.rb +98 -14
  275. data/gems/server/lib/ruby_lsp/itsi/addon.rb +20 -18
  276. data/gems/server/test/helpers/test_helper.rb +89 -29
  277. data/gems/server/test/middleware/allow_list.rb +128 -0
  278. data/gems/server/test/middleware/auth_api_key.rb +141 -0
  279. data/gems/server/test/middleware/auth_basic.rb +91 -0
  280. data/gems/server/test/middleware/auth_jwt.rb +214 -0
  281. data/gems/server/test/middleware/cache_control.rb +82 -0
  282. data/gems/server/test/middleware/cidr_to_regex.rb +46 -0
  283. data/gems/server/test/middleware/compression.rb +89 -0
  284. data/gems/server/test/middleware/cors.rb +113 -0
  285. data/gems/server/test/middleware/csp.rb +62 -0
  286. data/gems/server/test/middleware/deny_list.rb +131 -0
  287. data/gems/server/test/middleware/endpoint.rb +300 -0
  288. data/gems/server/test/middleware/etag.rb +75 -0
  289. data/gems/server/test/middleware/grpc/grpc.rb +158 -0
  290. data/gems/server/test/middleware/grpc/test_service.proto +32 -0
  291. data/gems/server/test/middleware/grpc/test_service_impl.rb +28 -0
  292. data/gems/server/test/middleware/grpc/test_service_pb.rb +18 -0
  293. data/gems/server/test/middleware/grpc/test_service_services_pb.rb +30 -0
  294. data/gems/server/test/middleware/header_interpolation.rb +35 -0
  295. data/gems/server/test/middleware/intrusion_protection.rb +259 -0
  296. data/gems/server/test/middleware/location.rb +220 -0
  297. data/gems/server/test/middleware/max_body.rb +20 -0
  298. data/gems/server/test/middleware/proxy.rb +415 -0
  299. data/gems/server/test/middleware/rate_limit.rb +211 -0
  300. data/gems/server/test/middleware/redirect.rb +85 -0
  301. data/gems/server/test/middleware/request_headers.rb +50 -0
  302. data/gems/server/test/middleware/response_headers.rb +50 -0
  303. data/gems/server/test/middleware/static_assets.rb +374 -0
  304. data/gems/server/test/middleware/static_response.rb +56 -0
  305. data/gems/server/test/middleware/string_rewrite.rb +112 -0
  306. data/gems/server/test/options/bind.rb +47 -0
  307. data/gems/server/test/options/header_read_timeout.rb +23 -0
  308. data/gems/server/test/options/test_request_timeout.rb +16 -0
  309. data/gems/server/test/options/test_workers.rb +2 -4
  310. data/gems/server/test/{test_itsi_server.rb → rack/test_rack_server.rb} +2 -2
  311. data/grpc_test/Itsi.rb +11 -0
  312. data/grpc_test/echo.proto +14 -0
  313. data/grpc_test/echo_pb.rb +16 -0
  314. data/grpc_test/echo_service_impl.rb +8 -0
  315. data/grpc_test/echo_services_pb.rb +22 -0
  316. data/lib/itsi/version.rb +1 -1
  317. data/tasks.txt +15 -72
  318. metadata +210 -7
  319. data/gems/server/lib/itsi/server/default_config/Itsi-rackup.rb +0 -119
@@ -0,0 +1,23 @@
1
+ require_relative "../helpers/test_helper"
2
+
3
+ class TestHeaderReadTimeout < Minitest::Test
4
+ def test_header_timeout_enforced
5
+ server(
6
+ itsi_rb: lambda do
7
+ header_read_timeout 0.1
8
+ get("/") { |r| r.ok "hi" }
9
+ end
10
+ ) do
11
+ socket = TCPSocket.new("127.0.0.1", @uri.port)
12
+ socket.write("GET / HTTP/1.1\r\nHost: localhost\r\n") # don’t send \r\n\r\n
13
+
14
+ sleep 0.2 # exceed header timeout
15
+ socket.write("\r\n\r\n")
16
+ response = socket.read
17
+ rescue StandardError => e
18
+ assert_equal e.class, Errno::ECONNRESET
19
+ ensure
20
+ socket&.close
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ require_relative "../helpers/test_helper"
2
+
3
+ class TestRequestTimeout < Minitest::Test
4
+ def test_request_timeout_applies
5
+ server(
6
+ itsi_rb: lambda do
7
+ workers 3
8
+ request_timeout 0.1
9
+ get("/") { |r| sleep 0.2; r.ok "late" }
10
+ end
11
+ ) do
12
+ res = get_resp("/")
13
+ assert_equal "504", res.code
14
+ end
15
+ end
16
+ end
@@ -3,16 +3,14 @@ require_relative "../helpers/test_helper"
3
3
  class TestWorkers < Minitest::Test
4
4
 
5
5
  def test_it_can_run_multiple_workers
6
- worker_count = 4
6
+ worker_count = 3
7
7
 
8
8
  server(
9
9
  itsi_rb: lambda do
10
-
11
10
  workers worker_count
12
11
  get("/foo"){|r| r.ok Process.pid}
13
-
14
12
  end) do
15
- assert_equal worker_count, 30.times.map { |i| get("/foo") }.uniq.size
13
+ assert_equal worker_count, 50.times.map { |i| get("/foo") }.uniq.size
16
14
  end
17
15
  end
18
16
  end
@@ -1,6 +1,6 @@
1
- require_relative "helpers/test_helper"
1
+ require_relative "../helpers/test_helper"
2
2
 
3
- class TestItsiServer < Minitest::Test
3
+ class TestRackServer < Minitest::Test
4
4
  def test_that_it_has_a_version_number
5
5
  refute_nil ::Itsi::Server::VERSION
6
6
  end
data/grpc_test/Itsi.rb ADDED
@@ -0,0 +1,11 @@
1
+ require "grpc"
2
+ require_relative 'echo_service_impl'
3
+
4
+ bind "http://localhost:3000"
5
+
6
+ grpc EchoServiceImpl.new,
7
+ nonblocking: false,
8
+ compression: 'gzip' do
9
+ # Nested middleware still works:
10
+ response_headers additions: { 'X-Service' => ['Echo'] }
11
+ end
@@ -0,0 +1,14 @@
1
+ syntax = "proto3";
2
+ package echo;
3
+
4
+ service EchoService {
5
+ rpc Echo(EchoRequest) returns (EchoResponse);
6
+ }
7
+
8
+ message EchoRequest {
9
+ string message = 1;
10
+ }
11
+
12
+ message EchoResponse {
13
+ string message = 1;
14
+ }
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: echo.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+
8
+ descriptor_data = "\n\necho.proto\x12\x04\x65\x63ho\"\x1e\n\x0b\x45\x63hoRequest\x12\x0f\n\x07message\x18\x01 \x01(\t\"\x1f\n\x0c\x45\x63hoResponse\x12\x0f\n\x07message\x18\x01 \x01(\t2<\n\x0b\x45\x63hoService\x12-\n\x04\x45\x63ho\x12\x11.echo.EchoRequest\x1a\x12.echo.EchoResponseb\x06proto3"
9
+
10
+ pool = Google::Protobuf::DescriptorPool.generated_pool
11
+ pool.add_serialized_file(descriptor_data)
12
+
13
+ module Echo
14
+ EchoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("echo.EchoRequest").msgclass
15
+ EchoResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("echo.EchoResponse").msgclass
16
+ end
@@ -0,0 +1,8 @@
1
+ require_relative 'echo_services_pb'
2
+
3
+ class EchoServiceImpl < Echo::EchoService::Service
4
+ # Unary RPC implementation
5
+ def echo(req, _unused_call)
6
+ Echo::EchoResponse.new(message: req.message)
7
+ end
8
+ end
@@ -0,0 +1,22 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: echo.proto for package 'echo'
3
+
4
+ require 'grpc'
5
+ require_relative 'echo_pb'
6
+
7
+ module Echo
8
+ module EchoService
9
+ class Service
10
+
11
+ include ::GRPC::GenericService
12
+
13
+ self.marshal_class_method = :encode
14
+ self.unmarshal_class_method = :decode
15
+ self.service_name = 'echo.EchoService'
16
+
17
+ rpc :Echo, ::Echo::EchoRequest, ::Echo::EchoResponse
18
+ end
19
+
20
+ Stub = Service.rpc_stub_class
21
+ end
22
+ end
data/lib/itsi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Itsi
2
- VERSION = "0.1.20"
2
+ VERSION = "0.2.2"
3
3
  end
data/tasks.txt CHANGED
@@ -1,80 +1,23 @@
1
- Feature complete! Polish and Release (At Lake):
2
- -- Feature breakdown. Per feature make sure we have
3
- --- Clean Code
4
- --- Debug logging
5
- --- Ultra robust config, with sane and safe defaults.
6
- --- Complete Documentation (Readme + Blog)
7
- --- Nice middleware printing
8
- --- Tests.
9
- --- Targetable Debug Logging
10
- --- Good default config value
11
-
12
- - Go on unwrap hunt
13
-
14
-
15
- Fill in Changelog.md date
16
- Retest in live environment
17
- - Add examples
18
- *maybe* leave service running on live server to verify let's encrypt renewals.
19
-
20
- - Feature List:
21
- -- HTTP
22
- -- HTTP2
23
- -- TLS
24
- -- Websockets
25
- -- Headers (Replace is equal to remove plus append)
26
- -- Hijack
27
- -- Callable
28
- -- Streaming Bodies
29
- -- Rate Limiter
30
- -- Auth JWT/Basic/API
31
- -- gRPC Server (Plug in existing Ruby gRPC handlers)
32
- -- File Watcher and auto-reloading
33
- -- Allow/Deny lists
34
- -- Cache control
35
- -- compression
36
- -- CORS
37
- -- CSP Reporting
38
- -- etag
39
- -- Intrusion Protection
40
- -- Proxy
41
- -- Header changes (also support append, replace, remove)
42
- -- Endpoint
43
- -- Rackup
44
- -- Rack inline
45
- -- Static assets
46
- -- Redirect (HTTP to HTTPS!)
47
- -- Logging
48
- -- Cluster
49
- -- Single
50
- -- Graceful and Hot Restart
51
- -- Streaming body
52
- -- Unix Sockets
53
- -- Support for running high-performance mini-apps, written and served directly from the singular Itsi.rb configuration file.
54
- -- Well documented complete with LSP support.
55
- -- Author Final default Itsi-file
56
- -- Add notes on: PGGSSENCMODE="disable" and OBJC_DISABLE_INITIALIZE_FORK_SAFETY=
57
-
58
- Later:
1
+ Tasks:
2
+ - Static ruby build
3
+ - Add way to opt non Itsi.rb files into LSP
59
4
  - OTel
60
5
  - Even faster Hash creation for Rack
61
6
  - Image resizer
62
7
  - First class Rackless Websockets
63
8
  - Print out warning if we can detect that a location block will never be hit.
64
9
  - Built in obs Dashboard + Stats
65
- - Support UDP
66
- - Support unix socket proxy
67
10
  - WASM pluggable middleware
11
+ - Support UDP Proxy
12
+ - Support Unix Socket Proxy
68
13
  - gRPC proxying
69
-
70
- -- Stretch goals:
71
- - HTTP-01 Autocert
72
- - H3
73
- - OpenAPI gen
74
- - Finish Single acceptor mode (Optional)
75
- - Introduce Option
76
- - Finish Unix implementation
77
- - Kill a single worker (impact)
78
- - Clean shutdown and restart while in single acceptor mode
79
- - Fix Hang
80
- - Introduce Socket Options
14
+ - HTTP-01 Autocert
15
+ - H3
16
+ - OpenAPI gen
17
+ - Finish Single acceptor mode (Optional)
18
+ - Introduce Option
19
+ - Finish Unix implementation
20
+ - Very single worker shutdown (impact)
21
+ - Clean shutdown and restart while in single acceptor mode
22
+ - Fix Hang
23
+ - Introduce Socket Options
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.1.20
4
+ version: 0.2.2
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.1.20
18
+ version: 0.2.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: 0.1.20
25
+ version: 0.2.2
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.1.20
32
+ version: 0.2.2
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.1.20
39
+ version: 0.2.2
40
40
  description: Wrapper Gem for both the Itsi server and the Itsi Fiber scheduler
41
41
  email:
42
42
  - wc@pico.net.nz
@@ -47,8 +47,35 @@ files:
47
47
  - CHANGELOG.md
48
48
  - Cargo.lock
49
49
  - Cargo.toml
50
+ - LICENSE.txt
50
51
  - README.md
51
52
  - Rakefile
53
+ - crates/itsi_acme/.gitignore
54
+ - crates/itsi_acme/Cargo.toml
55
+ - crates/itsi_acme/LICENSE-APACHE
56
+ - crates/itsi_acme/LICENSE-MIT
57
+ - crates/itsi_acme/README.md
58
+ - crates/itsi_acme/examples/high_level.rs
59
+ - crates/itsi_acme/examples/high_level_warp.rs
60
+ - crates/itsi_acme/examples/low_level.rs
61
+ - crates/itsi_acme/examples/low_level_axum.rs
62
+ - crates/itsi_acme/src/acceptor.rs
63
+ - crates/itsi_acme/src/acme.rs
64
+ - crates/itsi_acme/src/axum.rs
65
+ - crates/itsi_acme/src/cache.rs
66
+ - crates/itsi_acme/src/caches/boxed.rs
67
+ - crates/itsi_acme/src/caches/composite.rs
68
+ - crates/itsi_acme/src/caches/dir.rs
69
+ - crates/itsi_acme/src/caches/mod.rs
70
+ - crates/itsi_acme/src/caches/no.rs
71
+ - crates/itsi_acme/src/caches/test.rs
72
+ - crates/itsi_acme/src/config.rs
73
+ - crates/itsi_acme/src/https_helper.rs
74
+ - crates/itsi_acme/src/incoming.rs
75
+ - crates/itsi_acme/src/jose.rs
76
+ - crates/itsi_acme/src/lib.rs
77
+ - crates/itsi_acme/src/resolver.rs
78
+ - crates/itsi_acme/src/state.rs
52
79
  - crates/itsi_error/Cargo.lock
53
80
  - crates/itsi_error/Cargo.toml
54
81
  - crates/itsi_error/src/lib.rs
@@ -142,6 +169,7 @@ files:
142
169
  - crates/itsi_server/src/server/middleware_stack/mod.rs
143
170
  - crates/itsi_server/src/server/mod.rs
144
171
  - crates/itsi_server/src/server/process_worker.rs
172
+ - crates/itsi_server/src/server/redirect_type.rs
145
173
  - crates/itsi_server/src/server/request_job.rs
146
174
  - crates/itsi_server/src/server/serve_strategy/cluster_mode.rs
147
175
  - crates/itsi_server/src/server/serve_strategy/mod.rs
@@ -172,11 +200,17 @@ files:
172
200
  - docs/content/getting_started/local_development.md
173
201
  - docs/content/getting_started/logging.md
174
202
  - docs/content/getting_started/running_itsi_in_production.md
203
+ - docs/content/getting_started/signals.md
175
204
  - docs/content/itsi-server-100.png
176
205
  - docs/content/itsi_scheduler/_index.md
177
206
  - docs/content/itsi_scheduler/itsi-scheduler-100.png
178
207
  - docs/content/ruby-lsp.png
179
208
  - docs/content/ruby.svg
209
+ - docs/content/utilities/_index.md
210
+ - docs/content/utilities/config_file_testing.md
211
+ - docs/content/utilities/passfile_generator.md
212
+ - docs/content/utilities/route_testing.md
213
+ - docs/content/utilities/secrets_management.md
180
214
  - docs/data/icons.yaml
181
215
  - docs/go.mod
182
216
  - docs/go.sum
@@ -329,20 +363,152 @@ files:
329
363
  - gems/server/lib/itsi/server/config/known_paths/wellknown-rfc5785.txt
330
364
  - gems/server/lib/itsi/server/config/middleware.rb
331
365
  - gems/server/lib/itsi/server/config/middleware/_index.md
366
+ - gems/server/lib/itsi/server/config/middleware/allow_list.md
367
+ - gems/server/lib/itsi/server/config/middleware/allow_list.rb
368
+ - gems/server/lib/itsi/server/config/middleware/auth_api_key.md
369
+ - gems/server/lib/itsi/server/config/middleware/auth_api_key.rb
370
+ - gems/server/lib/itsi/server/config/middleware/auth_basic.md
371
+ - gems/server/lib/itsi/server/config/middleware/auth_basic.rb
372
+ - gems/server/lib/itsi/server/config/middleware/auth_jwt.md
373
+ - gems/server/lib/itsi/server/config/middleware/auth_jwt.rb
374
+ - gems/server/lib/itsi/server/config/middleware/cache_control.md
375
+ - gems/server/lib/itsi/server/config/middleware/cache_control.rb
376
+ - gems/server/lib/itsi/server/config/middleware/cidr_to_regex.rb
377
+ - gems/server/lib/itsi/server/config/middleware/compression.md
378
+ - gems/server/lib/itsi/server/config/middleware/compression.rb
379
+ - gems/server/lib/itsi/server/config/middleware/cors.md
380
+ - gems/server/lib/itsi/server/config/middleware/cors.rb
381
+ - gems/server/lib/itsi/server/config/middleware/csp.md
382
+ - gems/server/lib/itsi/server/config/middleware/csp.rb
383
+ - gems/server/lib/itsi/server/config/middleware/deny_list.md
384
+ - gems/server/lib/itsi/server/config/middleware/deny_list.rb
385
+ - gems/server/lib/itsi/server/config/middleware/endpoint/_index.md
386
+ - gems/server/lib/itsi/server/config/middleware/endpoint/controller.md
387
+ - gems/server/lib/itsi/server/config/middleware/endpoint/controller.rb
388
+ - gems/server/lib/itsi/server/config/middleware/endpoint/delete.md
389
+ - gems/server/lib/itsi/server/config/middleware/endpoint/delete.rb
390
+ - gems/server/lib/itsi/server/config/middleware/endpoint/endpoint.rb
391
+ - gems/server/lib/itsi/server/config/middleware/endpoint/get.md
392
+ - gems/server/lib/itsi/server/config/middleware/endpoint/get.rb
393
+ - gems/server/lib/itsi/server/config/middleware/endpoint/http_request.md
394
+ - gems/server/lib/itsi/server/config/middleware/endpoint/http_response.md
395
+ - gems/server/lib/itsi/server/config/middleware/endpoint/patch.md
396
+ - gems/server/lib/itsi/server/config/middleware/endpoint/patch.rb
397
+ - gems/server/lib/itsi/server/config/middleware/endpoint/post.md
398
+ - gems/server/lib/itsi/server/config/middleware/endpoint/post.rb
399
+ - gems/server/lib/itsi/server/config/middleware/endpoint/put.md
400
+ - gems/server/lib/itsi/server/config/middleware/endpoint/put.rb
401
+ - gems/server/lib/itsi/server/config/middleware/endpoint/schemas.md
402
+ - gems/server/lib/itsi/server/config/middleware/error_response.md
403
+ - gems/server/lib/itsi/server/config/middleware/error_response.rb
404
+ - gems/server/lib/itsi/server/config/middleware/etag.md
405
+ - gems/server/lib/itsi/server/config/middleware/etag.rb
406
+ - gems/server/lib/itsi/server/config/middleware/grpc.md
407
+ - gems/server/lib/itsi/server/config/middleware/grpc.rb
408
+ - gems/server/lib/itsi/server/config/middleware/intrusion_protection.md
409
+ - gems/server/lib/itsi/server/config/middleware/intrusion_protection.rb
410
+ - gems/server/lib/itsi/server/config/middleware/location.md
411
+ - gems/server/lib/itsi/server/config/middleware/location.rb
332
412
  - gems/server/lib/itsi/server/config/middleware/log_requests.md
333
413
  - gems/server/lib/itsi/server/config/middleware/log_requests.rb
414
+ - gems/server/lib/itsi/server/config/middleware/max_body.md
415
+ - gems/server/lib/itsi/server/config/middleware/max_body.rb
416
+ - gems/server/lib/itsi/server/config/middleware/proxy.md
417
+ - gems/server/lib/itsi/server/config/middleware/proxy.rb
418
+ - gems/server/lib/itsi/server/config/middleware/rackup_file.md
419
+ - gems/server/lib/itsi/server/config/middleware/rackup_file.rb
420
+ - gems/server/lib/itsi/server/config/middleware/rate_limit.md
421
+ - gems/server/lib/itsi/server/config/middleware/rate_limit.rb
422
+ - gems/server/lib/itsi/server/config/middleware/rate_limit_store.rb
423
+ - gems/server/lib/itsi/server/config/middleware/redirect.md
424
+ - gems/server/lib/itsi/server/config/middleware/redirect.rb
425
+ - gems/server/lib/itsi/server/config/middleware/request_headers.md
426
+ - gems/server/lib/itsi/server/config/middleware/request_headers.rb
427
+ - gems/server/lib/itsi/server/config/middleware/response_headers.md
428
+ - gems/server/lib/itsi/server/config/middleware/response_headers.rb
429
+ - gems/server/lib/itsi/server/config/middleware/run.md
430
+ - gems/server/lib/itsi/server/config/middleware/run.rb
431
+ - gems/server/lib/itsi/server/config/middleware/static_assets.md
432
+ - gems/server/lib/itsi/server/config/middleware/static_assets.rb
433
+ - gems/server/lib/itsi/server/config/middleware/static_response.md
434
+ - gems/server/lib/itsi/server/config/middleware/static_response.rb
435
+ - gems/server/lib/itsi/server/config/middleware/string_rewrite.md
436
+ - gems/server/lib/itsi/server/config/middleware/token_source.rb
334
437
  - gems/server/lib/itsi/server/config/option.rb
335
438
  - gems/server/lib/itsi/server/config/options/_index.md
439
+ - gems/server/lib/itsi/server/config/options/auto_reload_config.md
440
+ - gems/server/lib/itsi/server/config/options/auto_reload_config.rb
441
+ - gems/server/lib/itsi/server/config/options/bind.md
442
+ - gems/server/lib/itsi/server/config/options/bind.rb
443
+ - gems/server/lib/itsi/server/config/options/certificates.md
444
+ - gems/server/lib/itsi/server/config/options/daemonize.md
445
+ - gems/server/lib/itsi/server/config/options/daemonize.rb
336
446
  - gems/server/lib/itsi/server/config/options/fiber_scheduler.md
337
447
  - gems/server/lib/itsi/server/config/options/fiber_scheduler.rb
448
+ - gems/server/lib/itsi/server/config/options/header_read_timeout.md
449
+ - gems/server/lib/itsi/server/config/options/header_read_timeout.rb
450
+ - gems/server/lib/itsi/server/config/options/hooks/_index.md
451
+ - gems/server/lib/itsi/server/config/options/hooks/after_fork.md
452
+ - gems/server/lib/itsi/server/config/options/hooks/after_fork.rb
453
+ - gems/server/lib/itsi/server/config/options/hooks/after_memory_limit_reached.md
454
+ - gems/server/lib/itsi/server/config/options/hooks/after_memory_limit_reached.rb
455
+ - gems/server/lib/itsi/server/config/options/hooks/after_start.md
456
+ - gems/server/lib/itsi/server/config/options/hooks/after_start.rb
457
+ - gems/server/lib/itsi/server/config/options/hooks/before_fork.md
458
+ - gems/server/lib/itsi/server/config/options/hooks/before_fork.rb
459
+ - gems/server/lib/itsi/server/config/options/hooks/before_restart.md
460
+ - gems/server/lib/itsi/server/config/options/hooks/before_restart.rb
461
+ - gems/server/lib/itsi/server/config/options/hooks/before_shutdown.md
462
+ - gems/server/lib/itsi/server/config/options/hooks/before_shutdown.rb
463
+ - gems/server/lib/itsi/server/config/options/include.md
464
+ - gems/server/lib/itsi/server/config/options/include.rb
465
+ - gems/server/lib/itsi/server/config/options/listen_backlog.md
466
+ - gems/server/lib/itsi/server/config/options/listen_backlog.rb
467
+ - gems/server/lib/itsi/server/config/options/log_format.md
468
+ - gems/server/lib/itsi/server/config/options/log_format.rb
469
+ - gems/server/lib/itsi/server/config/options/log_level.md
470
+ - gems/server/lib/itsi/server/config/options/log_level.rb
471
+ - gems/server/lib/itsi/server/config/options/log_target.md
472
+ - gems/server/lib/itsi/server/config/options/log_target.rb
473
+ - gems/server/lib/itsi/server/config/options/log_target_filters.md
474
+ - gems/server/lib/itsi/server/config/options/log_target_filters.rb
475
+ - gems/server/lib/itsi/server/config/options/multithreaded_reactor.md
476
+ - gems/server/lib/itsi/server/config/options/multithreaded_reactor.rb
477
+ - gems/server/lib/itsi/server/config/options/nodelay.md
478
+ - gems/server/lib/itsi/server/config/options/nodelay.rb
479
+ - gems/server/lib/itsi/server/config/options/oob_gc_responses_threshold.md
480
+ - gems/server/lib/itsi/server/config/options/oob_gc_responses_threshold.rb
481
+ - gems/server/lib/itsi/server/config/options/pin_worker_cores.md
482
+ - gems/server/lib/itsi/server/config/options/pin_worker_cores.rb
483
+ - gems/server/lib/itsi/server/config/options/preload.md
484
+ - gems/server/lib/itsi/server/config/options/preload.rb
485
+ - gems/server/lib/itsi/server/config/options/recv_buffer_size.md
486
+ - gems/server/lib/itsi/server/config/options/recv_buffer_size.rb
487
+ - gems/server/lib/itsi/server/config/options/redirect_http_to_https.md
488
+ - gems/server/lib/itsi/server/config/options/redirect_http_to_https.rb
489
+ - gems/server/lib/itsi/server/config/options/request_timeout.md
490
+ - gems/server/lib/itsi/server/config/options/request_timeout.rb
491
+ - gems/server/lib/itsi/server/config/options/reuse_address.md
492
+ - gems/server/lib/itsi/server/config/options/reuse_address.rb
493
+ - gems/server/lib/itsi/server/config/options/reuse_port.md
494
+ - gems/server/lib/itsi/server/config/options/reuse_port.rb
495
+ - gems/server/lib/itsi/server/config/options/scheduler_threads.md
496
+ - gems/server/lib/itsi/server/config/options/scheduler_threads.rb
497
+ - gems/server/lib/itsi/server/config/options/shutdown_timeout.md
498
+ - gems/server/lib/itsi/server/config/options/shutdown_timeout.rb
499
+ - gems/server/lib/itsi/server/config/options/stream_body.md
500
+ - gems/server/lib/itsi/server/config/options/stream_body.rb
338
501
  - gems/server/lib/itsi/server/config/options/threads.md
339
502
  - gems/server/lib/itsi/server/config/options/threads.rb
503
+ - gems/server/lib/itsi/server/config/options/watch.md
504
+ - gems/server/lib/itsi/server/config/options/watch.rb
505
+ - gems/server/lib/itsi/server/config/options/worker_memory_limit.md
506
+ - gems/server/lib/itsi/server/config/options/worker_memory_limit.rb
340
507
  - gems/server/lib/itsi/server/config/options/workers.md
341
508
  - gems/server/lib/itsi/server/config/options/workers.rb
342
509
  - gems/server/lib/itsi/server/config/typed_struct.rb
343
510
  - gems/server/lib/itsi/server/default_app/default_app.rb
344
511
  - gems/server/lib/itsi/server/default_app/index.html
345
- - gems/server/lib/itsi/server/default_config/Itsi-rackup.rb
346
512
  - gems/server/lib/itsi/server/default_config/Itsi.rb
347
513
  - gems/server/lib/itsi/server/grpc/grpc_call.rb
348
514
  - gems/server/lib/itsi/server/grpc/grpc_interface.rb
@@ -363,10 +529,47 @@ files:
363
529
  - gems/server/lib/shell_completions/completions.rb
364
530
  - gems/server/sig/itsi_server.rbs
365
531
  - gems/server/test/helpers/test_helper.rb
532
+ - gems/server/test/middleware/allow_list.rb
533
+ - gems/server/test/middleware/auth_api_key.rb
534
+ - gems/server/test/middleware/auth_basic.rb
535
+ - gems/server/test/middleware/auth_jwt.rb
536
+ - gems/server/test/middleware/cache_control.rb
537
+ - gems/server/test/middleware/cidr_to_regex.rb
538
+ - gems/server/test/middleware/compression.rb
539
+ - gems/server/test/middleware/cors.rb
540
+ - gems/server/test/middleware/csp.rb
541
+ - gems/server/test/middleware/deny_list.rb
542
+ - gems/server/test/middleware/endpoint.rb
543
+ - gems/server/test/middleware/etag.rb
544
+ - gems/server/test/middleware/grpc/grpc.rb
545
+ - gems/server/test/middleware/grpc/test_service.proto
546
+ - gems/server/test/middleware/grpc/test_service_impl.rb
547
+ - gems/server/test/middleware/grpc/test_service_pb.rb
548
+ - gems/server/test/middleware/grpc/test_service_services_pb.rb
549
+ - gems/server/test/middleware/header_interpolation.rb
550
+ - gems/server/test/middleware/intrusion_protection.rb
551
+ - gems/server/test/middleware/location.rb
552
+ - gems/server/test/middleware/max_body.rb
553
+ - gems/server/test/middleware/proxy.rb
554
+ - gems/server/test/middleware/rate_limit.rb
555
+ - gems/server/test/middleware/redirect.rb
556
+ - gems/server/test/middleware/request_headers.rb
557
+ - gems/server/test/middleware/response_headers.rb
558
+ - gems/server/test/middleware/static_assets.rb
559
+ - gems/server/test/middleware/static_response.rb
560
+ - gems/server/test/middleware/string_rewrite.rb
366
561
  - gems/server/test/middleware/test_log_requests.rb
562
+ - gems/server/test/options/bind.rb
563
+ - gems/server/test/options/header_read_timeout.rb
564
+ - gems/server/test/options/test_request_timeout.rb
367
565
  - gems/server/test/options/test_threads.rb
368
566
  - gems/server/test/options/test_workers.rb
369
- - gems/server/test/test_itsi_server.rb
567
+ - gems/server/test/rack/test_rack_server.rb
568
+ - grpc_test/Itsi.rb
569
+ - grpc_test/echo.proto
570
+ - grpc_test/echo_pb.rb
571
+ - grpc_test/echo_service_impl.rb
572
+ - grpc_test/echo_services_pb.rb
370
573
  - itsi-scheduler-100.png
371
574
  - itsi-server-100.png
372
575
  - lib/itsi.rb