itsi 0.1.20 → 0.2.3
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/CHANGELOG.md +1 -8
- data/Cargo.lock +29 -30
- data/LICENSE.txt +698 -0
- data/README.md +16 -4
- data/Rakefile +9 -5
- data/crates/itsi_acme/.gitignore +4 -0
- data/crates/itsi_acme/Cargo.toml +86 -0
- data/crates/itsi_acme/LICENSE-APACHE +201 -0
- data/crates/itsi_acme/LICENSE-MIT +23 -0
- data/crates/itsi_acme/README.md +9 -0
- data/crates/itsi_acme/examples/high_level.rs +63 -0
- data/crates/itsi_acme/examples/high_level_warp.rs +52 -0
- data/crates/itsi_acme/examples/low_level.rs +87 -0
- data/crates/itsi_acme/examples/low_level_axum.rs +66 -0
- data/crates/itsi_acme/src/acceptor.rs +81 -0
- data/crates/itsi_acme/src/acme.rs +354 -0
- data/crates/itsi_acme/src/axum.rs +86 -0
- data/crates/itsi_acme/src/cache.rs +39 -0
- data/crates/itsi_acme/src/caches/boxed.rs +80 -0
- data/crates/itsi_acme/src/caches/composite.rs +69 -0
- data/crates/itsi_acme/src/caches/dir.rs +106 -0
- data/crates/itsi_acme/src/caches/mod.rs +11 -0
- data/crates/itsi_acme/src/caches/no.rs +78 -0
- data/crates/itsi_acme/src/caches/test.rs +136 -0
- data/crates/itsi_acme/src/config.rs +172 -0
- data/crates/itsi_acme/src/https_helper.rs +69 -0
- data/crates/itsi_acme/src/incoming.rs +142 -0
- data/crates/itsi_acme/src/jose.rs +161 -0
- data/crates/itsi_acme/src/lib.rs +142 -0
- data/crates/itsi_acme/src/resolver.rs +59 -0
- data/crates/itsi_acme/src/state.rs +424 -0
- data/crates/itsi_rb_helpers/src/lib.rs +4 -3
- data/crates/itsi_scheduler/Cargo.toml +1 -1
- data/crates/itsi_scheduler/src/itsi_scheduler.rs +8 -2
- data/crates/itsi_scheduler/src/lib.rs +1 -0
- data/crates/itsi_server/Cargo.toml +1 -1
- data/crates/itsi_server/src/lib.rs +2 -1
- data/crates/itsi_server/src/ruby_types/itsi_http_request.rs +18 -1
- data/crates/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +11 -3
- data/crates/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +148 -66
- data/crates/itsi_server/src/ruby_types/itsi_server.rs +2 -0
- data/crates/itsi_server/src/server/binds/bind.rs +3 -0
- data/crates/itsi_server/src/server/binds/listener.rs +12 -5
- data/crates/itsi_server/src/server/binds/tls.rs +13 -5
- data/crates/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs +12 -5
- data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs +8 -1
- data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +9 -1
- data/crates/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +48 -43
- data/crates/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs +11 -2
- data/crates/itsi_server/src/server/middleware_stack/middlewares/compression.rs +39 -12
- data/crates/itsi_server/src/server/middleware_stack/middlewares/cors.rs +36 -27
- data/crates/itsi_server/src/server/middleware_stack/middlewares/csp.rs +25 -11
- data/crates/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs +12 -3
- data/crates/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +74 -72
- data/crates/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +15 -1
- data/crates/itsi_server/src/server/middleware_stack/middlewares/etag.rs +11 -8
- data/crates/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs +19 -11
- data/crates/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +5 -5
- data/crates/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +2 -2
- data/crates/itsi_server/src/server/middleware_stack/middlewares/mod.rs +11 -5
- data/crates/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +17 -20
- data/crates/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +19 -8
- data/crates/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +16 -37
- data/crates/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs +22 -12
- data/crates/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs +26 -11
- data/crates/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +7 -1
- data/crates/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +14 -4
- data/crates/itsi_server/src/server/middleware_stack/middlewares/token_source.rs +19 -0
- data/crates/itsi_server/src/server/middleware_stack/mod.rs +49 -13
- data/crates/itsi_server/src/server/mod.rs +1 -0
- data/crates/itsi_server/src/server/redirect_type.rs +26 -0
- data/crates/itsi_server/src/server/serve_strategy/cluster_mode.rs +22 -16
- data/crates/itsi_server/src/server/serve_strategy/single_mode.rs +49 -12
- data/crates/itsi_server/src/server/signal.rs +1 -0
- data/crates/itsi_server/src/server/size_limited_incoming.rs +6 -0
- data/crates/itsi_server/src/server/thread_worker.rs +5 -1
- data/crates/itsi_server/src/services/itsi_http_service.rs +20 -2
- data/crates/itsi_server/src/services/rate_limiter.rs +15 -4
- data/crates/itsi_server/src/services/static_file_server.rs +33 -19
- data/crates/itsi_tracing/src/lib.rs +42 -22
- data/docs/content/_index.md +2 -3
- data/docs/content/acknowledgements/_index.md +5 -2
- data/docs/content/configuration/_index.md +8 -5
- data/docs/content/contact/_index.md +8 -1
- data/docs/content/directory_listing.jpg +0 -0
- data/docs/content/error_page.jpg +0 -0
- data/docs/content/faqs/_index.md +5 -3
- data/docs/content/features/_index.md +56 -50
- data/docs/content/getting_started/_index.md +8 -5
- data/docs/content/getting_started/local_development.md +76 -9
- data/docs/content/getting_started/logging.md +15 -9
- data/docs/content/getting_started/running_itsi_in_production.md +5 -3
- data/docs/content/getting_started/signals.md +37 -0
- data/docs/content/itsi_scheduler/_index.md +8 -7
- data/docs/content/utilities/_index.md +13 -0
- data/docs/content/utilities/config_file_testing.md +17 -0
- data/docs/content/utilities/passfile_generator.md +41 -0
- data/docs/content/utilities/route_testing.md +27 -0
- data/docs/content/utilities/secrets_management.md +30 -0
- data/docs/hugo.yaml +4 -1
- data/fairytale.txt +3 -4
- data/gems/scheduler/Cargo.lock +74 -17
- data/gems/scheduler/README.md +4 -5
- data/gems/scheduler/Rakefile +0 -4
- data/gems/scheduler/itsi-scheduler.gemspec +2 -2
- data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
- data/gems/scheduler/lib/itsi/scheduler.rb +9 -4
- data/gems/scheduler/test/test_active_record.rb +12 -7
- data/gems/server/Cargo.lock +28 -29
- data/gems/server/Rakefile +0 -4
- data/gems/server/exe/itsi +13 -2
- data/gems/server/itsi-server.gemspec +2 -2
- data/gems/server/lib/itsi/http_request/response_status_shortcodes.rb +2 -0
- data/gems/server/lib/itsi/http_request.rb +58 -30
- data/gems/server/lib/itsi/http_response.rb +10 -7
- data/gems/server/lib/itsi/passfile.rb +6 -7
- data/gems/server/lib/itsi/server/config/config_helpers.rb +41 -29
- data/gems/server/lib/itsi/server/config/dsl.rb +22 -442
- data/gems/server/lib/itsi/server/config/known_paths.rb +14 -7
- data/gems/server/lib/itsi/server/config/middleware/_index.md +6 -4
- data/gems/server/lib/itsi/server/config/middleware/allow_list.md +46 -0
- data/gems/server/lib/itsi/server/config/middleware/allow_list.rb +42 -0
- data/gems/server/lib/itsi/server/config/middleware/auth_api_key.md +90 -0
- data/gems/server/lib/itsi/server/config/middleware/auth_api_key.rb +51 -0
- data/gems/server/lib/itsi/server/config/middleware/auth_basic.md +45 -0
- data/gems/server/lib/itsi/server/config/middleware/auth_basic.rb +44 -0
- data/gems/server/lib/itsi/server/config/middleware/auth_jwt.md +82 -0
- data/gems/server/lib/itsi/server/config/middleware/auth_jwt.rb +38 -0
- data/gems/server/lib/itsi/server/config/middleware/cache_control.md +78 -0
- data/gems/server/lib/itsi/server/config/middleware/cache_control.rb +45 -0
- data/gems/server/lib/itsi/server/config/middleware/cidr_to_regex.rb +50 -0
- data/gems/server/lib/itsi/server/config/middleware/compression.md +50 -0
- data/gems/server/lib/itsi/server/config/middleware/compression.rb +37 -0
- data/gems/server/lib/itsi/server/config/middleware/cors.md +93 -0
- data/gems/server/lib/itsi/server/config/middleware/cors.rb +32 -0
- data/gems/server/lib/itsi/server/config/middleware/csp.md +37 -0
- data/gems/server/lib/itsi/server/config/middleware/csp.rb +44 -0
- data/gems/server/lib/itsi/server/config/middleware/deny_list.md +45 -0
- data/gems/server/lib/itsi/server/config/middleware/deny_list.rb +42 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/_index.md +159 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/controller.md +186 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/controller.rb +33 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/delete.md +12 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/delete.rb +42 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/endpoint.rb +99 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/get.md +12 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/get.rb +42 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/http_request.md +44 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/http_response.md +39 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/patch.md +12 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/patch.rb +42 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/post.md +12 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/post.rb +42 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/put.md +12 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/put.rb +42 -0
- data/gems/server/lib/itsi/server/config/middleware/endpoint/schemas.md +122 -0
- data/gems/server/lib/itsi/server/config/middleware/error_response.md +74 -0
- data/gems/server/lib/itsi/server/config/middleware/error_response.rb +36 -0
- data/gems/server/lib/itsi/server/config/middleware/etag.md +59 -0
- data/gems/server/lib/itsi/server/config/middleware/etag.rb +27 -0
- data/gems/server/lib/itsi/server/config/middleware/grpc.md +172 -0
- data/gems/server/lib/itsi/server/config/middleware/grpc.rb +54 -0
- data/gems/server/lib/itsi/server/config/middleware/intrusion_protection.md +124 -0
- data/gems/server/lib/itsi/server/config/middleware/intrusion_protection.rb +61 -0
- data/gems/server/lib/itsi/server/config/middleware/location.md +107 -0
- data/gems/server/lib/itsi/server/config/middleware/location.rb +99 -0
- data/gems/server/lib/itsi/server/config/middleware/log_requests.md +13 -11
- data/gems/server/lib/itsi/server/config/middleware/log_requests.rb +1 -3
- data/gems/server/lib/itsi/server/config/middleware/max_body.md +18 -0
- data/gems/server/lib/itsi/server/config/middleware/max_body.rb +21 -0
- data/gems/server/lib/itsi/server/config/middleware/proxy.md +62 -0
- data/gems/server/lib/itsi/server/config/middleware/proxy.rb +41 -0
- data/gems/server/lib/itsi/server/config/middleware/rackup_file.md +54 -0
- data/gems/server/lib/itsi/server/config/middleware/rackup_file.rb +44 -0
- data/gems/server/lib/itsi/server/config/middleware/rate_limit.md +126 -0
- data/gems/server/lib/itsi/server/config/middleware/rate_limit.rb +34 -0
- data/gems/server/lib/itsi/server/config/middleware/rate_limit_store.rb +25 -0
- data/gems/server/lib/itsi/server/config/middleware/redirect.md +55 -0
- data/gems/server/lib/itsi/server/config/middleware/redirect.rb +25 -0
- data/gems/server/lib/itsi/server/config/middleware/request_headers.md +34 -0
- data/gems/server/lib/itsi/server/config/middleware/request_headers.rb +24 -0
- data/gems/server/lib/itsi/server/config/middleware/response_headers.md +33 -0
- data/gems/server/lib/itsi/server/config/middleware/response_headers.rb +25 -0
- data/gems/server/lib/itsi/server/config/middleware/run.md +60 -0
- data/gems/server/lib/itsi/server/config/middleware/run.rb +43 -0
- data/gems/server/lib/itsi/server/config/middleware/static_assets.md +113 -0
- data/gems/server/lib/itsi/server/config/middleware/static_assets.rb +87 -0
- data/gems/server/lib/itsi/server/config/middleware/static_response.md +44 -0
- data/gems/server/lib/itsi/server/config/middleware/static_response.rb +29 -0
- data/gems/server/lib/itsi/server/config/middleware/string_rewrite.md +67 -0
- data/gems/server/lib/itsi/server/config/middleware/token_source.rb +32 -0
- data/gems/server/lib/itsi/server/config/middleware.rb +4 -0
- data/gems/server/lib/itsi/server/config/option.rb +4 -0
- data/gems/server/lib/itsi/server/config/options/_index.md +3 -2
- data/gems/server/lib/itsi/server/config/options/auto_reload_config.md +13 -0
- data/gems/server/lib/itsi/server/config/options/auto_reload_config.rb +41 -0
- data/gems/server/lib/itsi/server/config/options/bind.md +71 -0
- data/gems/server/lib/itsi/server/config/options/bind.rb +26 -0
- data/gems/server/lib/itsi/server/config/options/certificates.md +65 -0
- data/gems/server/lib/itsi/server/config/options/daemonize.md +14 -0
- data/gems/server/lib/itsi/server/config/options/daemonize.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/fiber_scheduler.md +1 -2
- data/gems/server/lib/itsi/server/config/options/fiber_scheduler.rb +6 -3
- data/gems/server/lib/itsi/server/config/options/header_read_timeout.md +17 -0
- data/gems/server/lib/itsi/server/config/options/header_read_timeout.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/hooks/_index.md +11 -0
- data/gems/server/lib/itsi/server/config/options/hooks/after_fork.md +13 -0
- data/gems/server/lib/itsi/server/config/options/hooks/after_fork.rb +28 -0
- data/gems/server/lib/itsi/server/config/options/hooks/after_memory_limit_reached.md +14 -0
- data/gems/server/lib/itsi/server/config/options/hooks/after_memory_limit_reached.rb +28 -0
- data/gems/server/lib/itsi/server/config/options/hooks/after_start.md +12 -0
- data/gems/server/lib/itsi/server/config/options/hooks/after_start.rb +28 -0
- data/gems/server/lib/itsi/server/config/options/hooks/before_fork.md +13 -0
- data/gems/server/lib/itsi/server/config/options/hooks/before_fork.rb +28 -0
- data/gems/server/lib/itsi/server/config/options/hooks/before_restart.md +12 -0
- data/gems/server/lib/itsi/server/config/options/hooks/before_restart.rb +28 -0
- data/gems/server/lib/itsi/server/config/options/hooks/before_shutdown.md +12 -0
- data/gems/server/lib/itsi/server/config/options/hooks/before_shutdown.rb +28 -0
- data/gems/server/lib/itsi/server/config/options/include.md +20 -0
- data/gems/server/lib/itsi/server/config/options/include.rb +36 -0
- data/gems/server/lib/itsi/server/config/options/listen_backlog.md +11 -0
- data/gems/server/lib/itsi/server/config/options/listen_backlog.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/log_format.md +18 -0
- data/gems/server/lib/itsi/server/config/options/log_format.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/log_level.md +34 -0
- data/gems/server/lib/itsi/server/config/options/log_level.rb +20 -0
- data/gems/server/lib/itsi/server/config/options/log_target.md +38 -0
- data/gems/server/lib/itsi/server/config/options/log_target.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/log_target_filters.md +17 -0
- data/gems/server/lib/itsi/server/config/options/log_target_filters.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/multithreaded_reactor.md +27 -0
- data/gems/server/lib/itsi/server/config/options/multithreaded_reactor.rb +24 -0
- data/gems/server/lib/itsi/server/config/options/nodelay.md +16 -0
- data/gems/server/lib/itsi/server/config/options/nodelay.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/oob_gc_responses_threshold.md +19 -0
- data/gems/server/lib/itsi/server/config/options/oob_gc_responses_threshold.rb +18 -0
- data/gems/server/lib/itsi/server/config/options/pin_worker_cores.md +17 -0
- data/gems/server/lib/itsi/server/config/options/pin_worker_cores.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/preload.md +21 -0
- data/gems/server/lib/itsi/server/config/options/preload.rb +18 -0
- data/gems/server/lib/itsi/server/config/options/recv_buffer_size.md +15 -0
- data/gems/server/lib/itsi/server/config/options/recv_buffer_size.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/redirect_http_to_https.md +21 -0
- data/gems/server/lib/itsi/server/config/options/redirect_http_to_https.rb +30 -0
- data/gems/server/lib/itsi/server/config/options/request_timeout.md +23 -0
- data/gems/server/lib/itsi/server/config/options/request_timeout.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/reuse_address.md +16 -0
- data/gems/server/lib/itsi/server/config/options/reuse_address.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/reuse_port.md +16 -0
- data/gems/server/lib/itsi/server/config/options/reuse_port.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/scheduler_threads.md +34 -0
- data/gems/server/lib/itsi/server/config/options/scheduler_threads.rb +17 -0
- data/gems/server/lib/itsi/server/config/options/shutdown_timeout.md +17 -0
- data/gems/server/lib/itsi/server/config/options/shutdown_timeout.rb +19 -0
- data/gems/server/lib/itsi/server/config/options/stream_body.md +32 -0
- data/gems/server/lib/itsi/server/config/options/stream_body.rb +18 -0
- data/gems/server/lib/itsi/server/config/options/threads.md +7 -2
- data/gems/server/lib/itsi/server/config/options/threads.rb +1 -1
- data/gems/server/lib/itsi/server/config/options/watch.md +16 -0
- data/gems/server/lib/itsi/server/config/options/watch.rb +28 -0
- data/gems/server/lib/itsi/server/config/options/worker_memory_limit.md +22 -0
- data/gems/server/lib/itsi/server/config/options/worker_memory_limit.rb +18 -0
- data/gems/server/lib/itsi/server/config/options/workers.md +1 -2
- data/gems/server/lib/itsi/server/config/options/workers.rb +1 -1
- data/gems/server/lib/itsi/server/config/typed_struct.rb +68 -32
- data/gems/server/lib/itsi/server/config.rb +163 -119
- data/gems/server/lib/itsi/server/default_app/default_app.rb +1 -1
- data/gems/server/lib/itsi/server/default_config/Itsi.rb +3 -3
- data/gems/server/lib/itsi/server/grpc/grpc_call.rb +4 -5
- data/gems/server/lib/itsi/server/grpc/grpc_interface.rb +10 -4
- data/gems/server/lib/itsi/server/rack/handler/itsi.rb +2 -3
- data/gems/server/lib/itsi/server/rack_interface.rb +0 -1
- data/gems/server/lib/itsi/server/route_tester.rb +61 -9
- data/gems/server/lib/itsi/server/signal_trap.rb +1 -1
- data/gems/server/lib/itsi/server/typed_handlers/param_parser.rb +14 -18
- data/gems/server/lib/itsi/server/typed_handlers/source_parser.rb +13 -10
- data/gems/server/lib/itsi/server/typed_handlers.rb +12 -4
- data/gems/server/lib/itsi/server/version.rb +1 -1
- data/gems/server/lib/itsi/server.rb +111 -27
- data/gems/server/lib/itsi/standard_headers.rb +80 -80
- data/gems/server/lib/ruby_lsp/itsi/addon.rb +20 -18
- data/gems/server/test/helpers/test_helper.rb +90 -29
- data/gems/server/test/middleware/allow_list.rb +128 -0
- data/gems/server/test/middleware/auth_api_key.rb +141 -0
- data/gems/server/test/middleware/auth_basic.rb +91 -0
- data/gems/server/test/middleware/auth_jwt.rb +214 -0
- data/gems/server/test/middleware/cache_control.rb +82 -0
- data/gems/server/test/middleware/cidr_to_regex.rb +46 -0
- data/gems/server/test/middleware/compression.rb +89 -0
- data/gems/server/test/middleware/cors.rb +113 -0
- data/gems/server/test/middleware/csp.rb +62 -0
- data/gems/server/test/middleware/deny_list.rb +131 -0
- data/gems/server/test/middleware/endpoint.rb +300 -0
- data/gems/server/test/middleware/etag.rb +75 -0
- data/gems/server/test/middleware/grpc/grpc.rb +158 -0
- data/gems/server/test/middleware/grpc/test_service.proto +32 -0
- data/gems/server/test/middleware/grpc/test_service_impl.rb +28 -0
- data/gems/server/test/middleware/grpc/test_service_pb.rb +18 -0
- data/gems/server/test/middleware/grpc/test_service_services_pb.rb +30 -0
- data/gems/server/test/middleware/header_interpolation.rb +35 -0
- data/gems/server/test/middleware/intrusion_protection.rb +259 -0
- data/gems/server/test/middleware/location.rb +220 -0
- data/gems/server/test/middleware/max_body.rb +20 -0
- data/gems/server/test/middleware/proxy.rb +415 -0
- data/gems/server/test/middleware/rate_limit.rb +211 -0
- data/gems/server/test/middleware/redirect.rb +85 -0
- data/gems/server/test/middleware/request_headers.rb +50 -0
- data/gems/server/test/middleware/response_headers.rb +50 -0
- data/gems/server/test/middleware/static_assets.rb +374 -0
- data/gems/server/test/middleware/static_response.rb +56 -0
- data/gems/server/test/middleware/string_rewrite.rb +112 -0
- data/gems/server/test/middleware/test_log_requests.rb +54 -2
- data/gems/server/test/options/bind.rb +47 -0
- data/gems/server/test/options/header_read_timeout.rb +23 -0
- data/gems/server/test/options/test_request_timeout.rb +16 -0
- data/gems/server/test/options/test_workers.rb +11 -6
- data/gems/server/test/{test_itsi_server.rb → rack/test_rack_server.rb} +2 -2
- data/lib/itsi/version.rb +1 -1
- data/tasks.txt +15 -72
- metadata +209 -10
- data/examples/static_assets_example.rb +0 -83
- data/gems/server/lib/itsi/server/default_config/Itsi-rackup.rb +0 -119
@@ -1,17 +1,69 @@
|
|
1
1
|
require_relative "../helpers/test_helper"
|
2
2
|
|
3
3
|
class TestLogRequests < Minitest::Test
|
4
|
-
|
4
|
+
# 1. before‑only logging
|
5
5
|
def test_it_supports_logging_before_requests
|
6
|
+
stdout, = capture_subprocess_io do
|
7
|
+
server(
|
8
|
+
itsi_rb: lambda do
|
9
|
+
log_level :info
|
10
|
+
log_requests \
|
11
|
+
before: {
|
12
|
+
level: "INFO",
|
13
|
+
format: "[{request_id}] BEFORE {method} {path_and_query}"
|
14
|
+
}
|
15
|
+
get("/foo?bar=baz") { |r| r.ok "ok" }
|
16
|
+
end
|
17
|
+
) do
|
18
|
+
get_resp("/foo?bar=baz")
|
19
|
+
end
|
20
|
+
end
|
6
21
|
|
22
|
+
# should emit something like "[a1b2c3] BEFORE GET /foo?bar=baz"
|
23
|
+
assert_match(%r{\[[0-9a-f]+\] BEFORE GET /foo\?bar=baz}, stdout)
|
7
24
|
end
|
8
25
|
|
26
|
+
# 2. after‑only logging
|
9
27
|
def test_it_supports_logging_after_requests
|
28
|
+
stdout, = capture_subprocess_io do
|
29
|
+
server(
|
30
|
+
itsi_rb: lambda do
|
31
|
+
log_level :info
|
32
|
+
log_requests \
|
33
|
+
after: {
|
34
|
+
level: "INFO",
|
35
|
+
format: "[{request_id}] AFTER {status} in {response_time}"
|
36
|
+
}
|
37
|
+
get("/foo") { |r| r.ok "ok" }
|
38
|
+
end
|
39
|
+
) do
|
40
|
+
get_resp("/foo")
|
41
|
+
end
|
42
|
+
end
|
10
43
|
|
44
|
+
# should emit something like "[d4e5f6] AFTER 200 in 1.234ms"
|
45
|
+
assert_match(/\[[0-9a-f]+\] AFTER 200 in \d+\.\d+ms/, stdout)
|
11
46
|
end
|
12
47
|
|
48
|
+
# 3. custom log‑level is honored
|
13
49
|
def test_it_supports_configuring_log_level
|
50
|
+
stdout, = capture_subprocess_io do
|
51
|
+
server(
|
52
|
+
itsi_rb: lambda do
|
53
|
+
log_level :error
|
54
|
+
log_requests \
|
55
|
+
before: {
|
56
|
+
level: "ERROR",
|
57
|
+
format: "X"
|
58
|
+
}
|
59
|
+
get("/foo") { |r| r.ok "ok" }
|
60
|
+
end
|
61
|
+
) do
|
62
|
+
get_resp("/foo")
|
63
|
+
end
|
64
|
+
end
|
14
65
|
|
66
|
+
# our line should begin with "ERROR" and then our literal "X"
|
67
|
+
assert_match(/ERROR.*X/, stdout)
|
15
68
|
end
|
16
|
-
|
17
69
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "../helpers/test_helper"
|
2
|
+
|
3
|
+
class TestBind < Minitest::Test
|
4
|
+
def test_http
|
5
|
+
server(
|
6
|
+
app: lambda do |env|
|
7
|
+
[200, { "Content-Type" => "text/plain" }, ["Hello, World!"]]
|
8
|
+
end) do
|
9
|
+
assert_equal "Hello, World!", get("/")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def test_https
|
15
|
+
server(app: lambda do |env|
|
16
|
+
[200, { "Content-Type" => "text/plain" }, ["Hello, HTTPS!"]]
|
17
|
+
end, protocol: "https") do |uri|
|
18
|
+
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true,
|
19
|
+
verify_mode: OpenSSL::SSL::VERIFY_NONE) do |http|
|
20
|
+
http.request(Net::HTTP::Get.new("/"))
|
21
|
+
end
|
22
|
+
assert_equal "200", response.code
|
23
|
+
assert_equal "Hello, HTTPS!", response.body
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_unix_socket_http
|
28
|
+
server(
|
29
|
+
bind: free_bind("http", unix_socket: true),
|
30
|
+
app: lambda do |env|
|
31
|
+
[200, { "Content-Type" => "text/plain" }, ["Hello, World!"]]
|
32
|
+
end) do
|
33
|
+
assert_equal "Hello, World!", get("/")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_unix_socket_https
|
38
|
+
server(
|
39
|
+
bind: free_bind("http", unix_socket: true),
|
40
|
+
app: lambda do |env|
|
41
|
+
[200, { "Content-Type" => "text/plain" }, ["Hello, World!"]]
|
42
|
+
end) do
|
43
|
+
assert_equal "Hello, World!", get("/")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -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
|
@@ -1,18 +1,23 @@
|
|
1
1
|
require_relative "../helpers/test_helper"
|
2
2
|
|
3
3
|
class TestWorkers < Minitest::Test
|
4
|
-
|
5
4
|
def test_it_can_run_multiple_workers
|
6
5
|
worker_count = 4
|
7
6
|
|
8
7
|
server(
|
9
8
|
itsi_rb: lambda do
|
10
|
-
|
11
9
|
workers worker_count
|
12
|
-
get("/foo"){|r| r.ok Process.pid}
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
get("/foo") { |r| r.ok Process.pid }
|
11
|
+
end
|
12
|
+
) do
|
13
|
+
seen = Set.new
|
14
|
+
Timeout.timeout(2) do
|
15
|
+
loop do
|
16
|
+
seen << get("foo")
|
17
|
+
break if seen.size == worker_count
|
18
|
+
end
|
19
|
+
end
|
20
|
+
assert_equal worker_count, seen.size
|
16
21
|
end
|
17
22
|
end
|
18
23
|
end
|
data/lib/itsi/version.rb
CHANGED
data/tasks.txt
CHANGED
@@ -1,80 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
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
|
-
|
71
|
-
|
72
|
-
|
73
|
-
-
|
74
|
-
- Finish
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
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.
|
4
|
+
version: 0.2.3
|
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.
|
18
|
+
version: 0.2.3
|
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.
|
25
|
+
version: 0.2.3
|
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.
|
32
|
+
version: 0.2.3
|
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.
|
39
|
+
version: 0.2.3
|
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
|
@@ -166,22 +194,29 @@ files:
|
|
166
194
|
- docs/content/acknowledgements/_index.md
|
167
195
|
- docs/content/configuration/_index.md
|
168
196
|
- docs/content/contact/_index.md
|
197
|
+
- docs/content/directory_listing.jpg
|
198
|
+
- docs/content/error_page.jpg
|
169
199
|
- docs/content/faqs/_index.md
|
170
200
|
- docs/content/features/_index.md
|
171
201
|
- docs/content/getting_started/_index.md
|
172
202
|
- docs/content/getting_started/local_development.md
|
173
203
|
- docs/content/getting_started/logging.md
|
174
204
|
- docs/content/getting_started/running_itsi_in_production.md
|
205
|
+
- docs/content/getting_started/signals.md
|
175
206
|
- docs/content/itsi-server-100.png
|
176
207
|
- docs/content/itsi_scheduler/_index.md
|
177
208
|
- docs/content/itsi_scheduler/itsi-scheduler-100.png
|
178
209
|
- docs/content/ruby-lsp.png
|
179
210
|
- docs/content/ruby.svg
|
211
|
+
- docs/content/utilities/_index.md
|
212
|
+
- docs/content/utilities/config_file_testing.md
|
213
|
+
- docs/content/utilities/passfile_generator.md
|
214
|
+
- docs/content/utilities/route_testing.md
|
215
|
+
- docs/content/utilities/secrets_management.md
|
180
216
|
- docs/data/icons.yaml
|
181
217
|
- docs/go.mod
|
182
218
|
- docs/go.sum
|
183
219
|
- docs/hugo.yaml
|
184
|
-
- examples/static_assets_example.rb
|
185
220
|
- fairytale.txt
|
186
221
|
- gems/scheduler/.gitignore
|
187
222
|
- gems/scheduler/.rubocop.yml
|
@@ -329,20 +364,152 @@ files:
|
|
329
364
|
- gems/server/lib/itsi/server/config/known_paths/wellknown-rfc5785.txt
|
330
365
|
- gems/server/lib/itsi/server/config/middleware.rb
|
331
366
|
- gems/server/lib/itsi/server/config/middleware/_index.md
|
367
|
+
- gems/server/lib/itsi/server/config/middleware/allow_list.md
|
368
|
+
- gems/server/lib/itsi/server/config/middleware/allow_list.rb
|
369
|
+
- gems/server/lib/itsi/server/config/middleware/auth_api_key.md
|
370
|
+
- gems/server/lib/itsi/server/config/middleware/auth_api_key.rb
|
371
|
+
- gems/server/lib/itsi/server/config/middleware/auth_basic.md
|
372
|
+
- gems/server/lib/itsi/server/config/middleware/auth_basic.rb
|
373
|
+
- gems/server/lib/itsi/server/config/middleware/auth_jwt.md
|
374
|
+
- gems/server/lib/itsi/server/config/middleware/auth_jwt.rb
|
375
|
+
- gems/server/lib/itsi/server/config/middleware/cache_control.md
|
376
|
+
- gems/server/lib/itsi/server/config/middleware/cache_control.rb
|
377
|
+
- gems/server/lib/itsi/server/config/middleware/cidr_to_regex.rb
|
378
|
+
- gems/server/lib/itsi/server/config/middleware/compression.md
|
379
|
+
- gems/server/lib/itsi/server/config/middleware/compression.rb
|
380
|
+
- gems/server/lib/itsi/server/config/middleware/cors.md
|
381
|
+
- gems/server/lib/itsi/server/config/middleware/cors.rb
|
382
|
+
- gems/server/lib/itsi/server/config/middleware/csp.md
|
383
|
+
- gems/server/lib/itsi/server/config/middleware/csp.rb
|
384
|
+
- gems/server/lib/itsi/server/config/middleware/deny_list.md
|
385
|
+
- gems/server/lib/itsi/server/config/middleware/deny_list.rb
|
386
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/_index.md
|
387
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/controller.md
|
388
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/controller.rb
|
389
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/delete.md
|
390
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/delete.rb
|
391
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/endpoint.rb
|
392
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/get.md
|
393
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/get.rb
|
394
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/http_request.md
|
395
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/http_response.md
|
396
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/patch.md
|
397
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/patch.rb
|
398
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/post.md
|
399
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/post.rb
|
400
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/put.md
|
401
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/put.rb
|
402
|
+
- gems/server/lib/itsi/server/config/middleware/endpoint/schemas.md
|
403
|
+
- gems/server/lib/itsi/server/config/middleware/error_response.md
|
404
|
+
- gems/server/lib/itsi/server/config/middleware/error_response.rb
|
405
|
+
- gems/server/lib/itsi/server/config/middleware/etag.md
|
406
|
+
- gems/server/lib/itsi/server/config/middleware/etag.rb
|
407
|
+
- gems/server/lib/itsi/server/config/middleware/grpc.md
|
408
|
+
- gems/server/lib/itsi/server/config/middleware/grpc.rb
|
409
|
+
- gems/server/lib/itsi/server/config/middleware/intrusion_protection.md
|
410
|
+
- gems/server/lib/itsi/server/config/middleware/intrusion_protection.rb
|
411
|
+
- gems/server/lib/itsi/server/config/middleware/location.md
|
412
|
+
- gems/server/lib/itsi/server/config/middleware/location.rb
|
332
413
|
- gems/server/lib/itsi/server/config/middleware/log_requests.md
|
333
414
|
- gems/server/lib/itsi/server/config/middleware/log_requests.rb
|
415
|
+
- gems/server/lib/itsi/server/config/middleware/max_body.md
|
416
|
+
- gems/server/lib/itsi/server/config/middleware/max_body.rb
|
417
|
+
- gems/server/lib/itsi/server/config/middleware/proxy.md
|
418
|
+
- gems/server/lib/itsi/server/config/middleware/proxy.rb
|
419
|
+
- gems/server/lib/itsi/server/config/middleware/rackup_file.md
|
420
|
+
- gems/server/lib/itsi/server/config/middleware/rackup_file.rb
|
421
|
+
- gems/server/lib/itsi/server/config/middleware/rate_limit.md
|
422
|
+
- gems/server/lib/itsi/server/config/middleware/rate_limit.rb
|
423
|
+
- gems/server/lib/itsi/server/config/middleware/rate_limit_store.rb
|
424
|
+
- gems/server/lib/itsi/server/config/middleware/redirect.md
|
425
|
+
- gems/server/lib/itsi/server/config/middleware/redirect.rb
|
426
|
+
- gems/server/lib/itsi/server/config/middleware/request_headers.md
|
427
|
+
- gems/server/lib/itsi/server/config/middleware/request_headers.rb
|
428
|
+
- gems/server/lib/itsi/server/config/middleware/response_headers.md
|
429
|
+
- gems/server/lib/itsi/server/config/middleware/response_headers.rb
|
430
|
+
- gems/server/lib/itsi/server/config/middleware/run.md
|
431
|
+
- gems/server/lib/itsi/server/config/middleware/run.rb
|
432
|
+
- gems/server/lib/itsi/server/config/middleware/static_assets.md
|
433
|
+
- gems/server/lib/itsi/server/config/middleware/static_assets.rb
|
434
|
+
- gems/server/lib/itsi/server/config/middleware/static_response.md
|
435
|
+
- gems/server/lib/itsi/server/config/middleware/static_response.rb
|
436
|
+
- gems/server/lib/itsi/server/config/middleware/string_rewrite.md
|
437
|
+
- gems/server/lib/itsi/server/config/middleware/token_source.rb
|
334
438
|
- gems/server/lib/itsi/server/config/option.rb
|
335
439
|
- gems/server/lib/itsi/server/config/options/_index.md
|
440
|
+
- gems/server/lib/itsi/server/config/options/auto_reload_config.md
|
441
|
+
- gems/server/lib/itsi/server/config/options/auto_reload_config.rb
|
442
|
+
- gems/server/lib/itsi/server/config/options/bind.md
|
443
|
+
- gems/server/lib/itsi/server/config/options/bind.rb
|
444
|
+
- gems/server/lib/itsi/server/config/options/certificates.md
|
445
|
+
- gems/server/lib/itsi/server/config/options/daemonize.md
|
446
|
+
- gems/server/lib/itsi/server/config/options/daemonize.rb
|
336
447
|
- gems/server/lib/itsi/server/config/options/fiber_scheduler.md
|
337
448
|
- gems/server/lib/itsi/server/config/options/fiber_scheduler.rb
|
449
|
+
- gems/server/lib/itsi/server/config/options/header_read_timeout.md
|
450
|
+
- gems/server/lib/itsi/server/config/options/header_read_timeout.rb
|
451
|
+
- gems/server/lib/itsi/server/config/options/hooks/_index.md
|
452
|
+
- gems/server/lib/itsi/server/config/options/hooks/after_fork.md
|
453
|
+
- gems/server/lib/itsi/server/config/options/hooks/after_fork.rb
|
454
|
+
- gems/server/lib/itsi/server/config/options/hooks/after_memory_limit_reached.md
|
455
|
+
- gems/server/lib/itsi/server/config/options/hooks/after_memory_limit_reached.rb
|
456
|
+
- gems/server/lib/itsi/server/config/options/hooks/after_start.md
|
457
|
+
- gems/server/lib/itsi/server/config/options/hooks/after_start.rb
|
458
|
+
- gems/server/lib/itsi/server/config/options/hooks/before_fork.md
|
459
|
+
- gems/server/lib/itsi/server/config/options/hooks/before_fork.rb
|
460
|
+
- gems/server/lib/itsi/server/config/options/hooks/before_restart.md
|
461
|
+
- gems/server/lib/itsi/server/config/options/hooks/before_restart.rb
|
462
|
+
- gems/server/lib/itsi/server/config/options/hooks/before_shutdown.md
|
463
|
+
- gems/server/lib/itsi/server/config/options/hooks/before_shutdown.rb
|
464
|
+
- gems/server/lib/itsi/server/config/options/include.md
|
465
|
+
- gems/server/lib/itsi/server/config/options/include.rb
|
466
|
+
- gems/server/lib/itsi/server/config/options/listen_backlog.md
|
467
|
+
- gems/server/lib/itsi/server/config/options/listen_backlog.rb
|
468
|
+
- gems/server/lib/itsi/server/config/options/log_format.md
|
469
|
+
- gems/server/lib/itsi/server/config/options/log_format.rb
|
470
|
+
- gems/server/lib/itsi/server/config/options/log_level.md
|
471
|
+
- gems/server/lib/itsi/server/config/options/log_level.rb
|
472
|
+
- gems/server/lib/itsi/server/config/options/log_target.md
|
473
|
+
- gems/server/lib/itsi/server/config/options/log_target.rb
|
474
|
+
- gems/server/lib/itsi/server/config/options/log_target_filters.md
|
475
|
+
- gems/server/lib/itsi/server/config/options/log_target_filters.rb
|
476
|
+
- gems/server/lib/itsi/server/config/options/multithreaded_reactor.md
|
477
|
+
- gems/server/lib/itsi/server/config/options/multithreaded_reactor.rb
|
478
|
+
- gems/server/lib/itsi/server/config/options/nodelay.md
|
479
|
+
- gems/server/lib/itsi/server/config/options/nodelay.rb
|
480
|
+
- gems/server/lib/itsi/server/config/options/oob_gc_responses_threshold.md
|
481
|
+
- gems/server/lib/itsi/server/config/options/oob_gc_responses_threshold.rb
|
482
|
+
- gems/server/lib/itsi/server/config/options/pin_worker_cores.md
|
483
|
+
- gems/server/lib/itsi/server/config/options/pin_worker_cores.rb
|
484
|
+
- gems/server/lib/itsi/server/config/options/preload.md
|
485
|
+
- gems/server/lib/itsi/server/config/options/preload.rb
|
486
|
+
- gems/server/lib/itsi/server/config/options/recv_buffer_size.md
|
487
|
+
- gems/server/lib/itsi/server/config/options/recv_buffer_size.rb
|
488
|
+
- gems/server/lib/itsi/server/config/options/redirect_http_to_https.md
|
489
|
+
- gems/server/lib/itsi/server/config/options/redirect_http_to_https.rb
|
490
|
+
- gems/server/lib/itsi/server/config/options/request_timeout.md
|
491
|
+
- gems/server/lib/itsi/server/config/options/request_timeout.rb
|
492
|
+
- gems/server/lib/itsi/server/config/options/reuse_address.md
|
493
|
+
- gems/server/lib/itsi/server/config/options/reuse_address.rb
|
494
|
+
- gems/server/lib/itsi/server/config/options/reuse_port.md
|
495
|
+
- gems/server/lib/itsi/server/config/options/reuse_port.rb
|
496
|
+
- gems/server/lib/itsi/server/config/options/scheduler_threads.md
|
497
|
+
- gems/server/lib/itsi/server/config/options/scheduler_threads.rb
|
498
|
+
- gems/server/lib/itsi/server/config/options/shutdown_timeout.md
|
499
|
+
- gems/server/lib/itsi/server/config/options/shutdown_timeout.rb
|
500
|
+
- gems/server/lib/itsi/server/config/options/stream_body.md
|
501
|
+
- gems/server/lib/itsi/server/config/options/stream_body.rb
|
338
502
|
- gems/server/lib/itsi/server/config/options/threads.md
|
339
503
|
- gems/server/lib/itsi/server/config/options/threads.rb
|
504
|
+
- gems/server/lib/itsi/server/config/options/watch.md
|
505
|
+
- gems/server/lib/itsi/server/config/options/watch.rb
|
506
|
+
- gems/server/lib/itsi/server/config/options/worker_memory_limit.md
|
507
|
+
- gems/server/lib/itsi/server/config/options/worker_memory_limit.rb
|
340
508
|
- gems/server/lib/itsi/server/config/options/workers.md
|
341
509
|
- gems/server/lib/itsi/server/config/options/workers.rb
|
342
510
|
- gems/server/lib/itsi/server/config/typed_struct.rb
|
343
511
|
- gems/server/lib/itsi/server/default_app/default_app.rb
|
344
512
|
- gems/server/lib/itsi/server/default_app/index.html
|
345
|
-
- gems/server/lib/itsi/server/default_config/Itsi-rackup.rb
|
346
513
|
- gems/server/lib/itsi/server/default_config/Itsi.rb
|
347
514
|
- gems/server/lib/itsi/server/grpc/grpc_call.rb
|
348
515
|
- gems/server/lib/itsi/server/grpc/grpc_interface.rb
|
@@ -363,10 +530,42 @@ files:
|
|
363
530
|
- gems/server/lib/shell_completions/completions.rb
|
364
531
|
- gems/server/sig/itsi_server.rbs
|
365
532
|
- gems/server/test/helpers/test_helper.rb
|
533
|
+
- gems/server/test/middleware/allow_list.rb
|
534
|
+
- gems/server/test/middleware/auth_api_key.rb
|
535
|
+
- gems/server/test/middleware/auth_basic.rb
|
536
|
+
- gems/server/test/middleware/auth_jwt.rb
|
537
|
+
- gems/server/test/middleware/cache_control.rb
|
538
|
+
- gems/server/test/middleware/cidr_to_regex.rb
|
539
|
+
- gems/server/test/middleware/compression.rb
|
540
|
+
- gems/server/test/middleware/cors.rb
|
541
|
+
- gems/server/test/middleware/csp.rb
|
542
|
+
- gems/server/test/middleware/deny_list.rb
|
543
|
+
- gems/server/test/middleware/endpoint.rb
|
544
|
+
- gems/server/test/middleware/etag.rb
|
545
|
+
- gems/server/test/middleware/grpc/grpc.rb
|
546
|
+
- gems/server/test/middleware/grpc/test_service.proto
|
547
|
+
- gems/server/test/middleware/grpc/test_service_impl.rb
|
548
|
+
- gems/server/test/middleware/grpc/test_service_pb.rb
|
549
|
+
- gems/server/test/middleware/grpc/test_service_services_pb.rb
|
550
|
+
- gems/server/test/middleware/header_interpolation.rb
|
551
|
+
- gems/server/test/middleware/intrusion_protection.rb
|
552
|
+
- gems/server/test/middleware/location.rb
|
553
|
+
- gems/server/test/middleware/max_body.rb
|
554
|
+
- gems/server/test/middleware/proxy.rb
|
555
|
+
- gems/server/test/middleware/rate_limit.rb
|
556
|
+
- gems/server/test/middleware/redirect.rb
|
557
|
+
- gems/server/test/middleware/request_headers.rb
|
558
|
+
- gems/server/test/middleware/response_headers.rb
|
559
|
+
- gems/server/test/middleware/static_assets.rb
|
560
|
+
- gems/server/test/middleware/static_response.rb
|
561
|
+
- gems/server/test/middleware/string_rewrite.rb
|
366
562
|
- gems/server/test/middleware/test_log_requests.rb
|
563
|
+
- gems/server/test/options/bind.rb
|
564
|
+
- gems/server/test/options/header_read_timeout.rb
|
565
|
+
- gems/server/test/options/test_request_timeout.rb
|
367
566
|
- gems/server/test/options/test_threads.rb
|
368
567
|
- gems/server/test/options/test_workers.rb
|
369
|
-
- gems/server/test/
|
568
|
+
- gems/server/test/rack/test_rack_server.rb
|
370
569
|
- itsi-scheduler-100.png
|
371
570
|
- itsi-server-100.png
|
372
571
|
- lib/itsi.rb
|
@@ -377,8 +576,8 @@ licenses:
|
|
377
576
|
- MIT
|
378
577
|
metadata:
|
379
578
|
homepage_uri: https://itsi.fyi
|
380
|
-
source_code_uri: https://github.com/
|
381
|
-
changelog_uri: https://github.com/
|
579
|
+
source_code_uri: https://github.com/wouterken/itsi
|
580
|
+
changelog_uri: https://github.com/wouterken/itsi/blob/main/CHANGELOG.md
|
382
581
|
rdoc_options: []
|
383
582
|
require_paths:
|
384
583
|
- lib
|