fluid_cli 0.1.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.
- checksums.yaml +7 -0
- data/README.md +1 -0
- data/dev.yml +5 -0
- data/exe/fluid +24 -0
- data/lib/fluid_cli/api.rb +135 -0
- data/lib/fluid_cli/assets/post_auth_page/index.html.erb +34 -0
- data/lib/fluid_cli/assets/post_auth_page/style.css +58 -0
- data/lib/fluid_cli/command.rb +55 -0
- data/lib/fluid_cli/commands/help.rb +21 -0
- data/lib/fluid_cli/commands/login.rb +30 -0
- data/lib/fluid_cli/commands/logout.rb +38 -0
- data/lib/fluid_cli/commands/switch.rb +23 -0
- data/lib/fluid_cli/commands/theme/common/company_helper.rb +15 -0
- data/lib/fluid_cli/commands/theme/common/root_helper.rb +95 -0
- data/lib/fluid_cli/commands/theme/dev.rb +61 -0
- data/lib/fluid_cli/commands/theme/help.rb +21 -0
- data/lib/fluid_cli/commands/theme/init.rb +46 -0
- data/lib/fluid_cli/commands/theme/pull.rb +68 -0
- data/lib/fluid_cli/commands/theme/push.rb +132 -0
- data/lib/fluid_cli/commands/theme.rb +23 -0
- data/lib/fluid_cli/commands/whoami.rb +23 -0
- data/lib/fluid_cli/commands.rb +19 -0
- data/lib/fluid_cli/company_switcher.rb +69 -0
- data/lib/fluid_cli/context.rb +691 -0
- data/lib/fluid_cli/db.rb +114 -0
- data/lib/fluid_cli/entry_point.rb +10 -0
- data/lib/fluid_cli/environment.rb +32 -0
- data/lib/fluid_cli/file_system_listener.rb +29 -0
- data/lib/fluid_cli/form.rb +42 -0
- data/lib/fluid_cli/git.rb +319 -0
- data/lib/fluid_cli/http_request.rb +54 -0
- data/lib/fluid_cli/identity_auth/servlet.rb +39 -0
- data/lib/fluid_cli/identity_auth.rb +126 -0
- data/lib/fluid_cli/options.rb +38 -0
- data/lib/fluid_cli/theme/dev_server/certificate_manager.rb +79 -0
- data/lib/fluid_cli/theme/dev_server/errors.rb +9 -0
- data/lib/fluid_cli/theme/dev_server/header_hash.rb +98 -0
- data/lib/fluid_cli/theme/dev_server/hooks/file_change_hook.rb +39 -0
- data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot-reload-no-script.html +27 -0
- data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot_reload.js +28 -0
- data/lib/fluid_cli/theme/dev_server/hot_reload/resources/sse_client.js +43 -0
- data/lib/fluid_cli/theme/dev_server/hot_reload/resources/theme.js +16 -0
- data/lib/fluid_cli/theme/dev_server/hot_reload/script_injector.rb +54 -0
- data/lib/fluid_cli/theme/dev_server/hot_reload.rb +75 -0
- data/lib/fluid_cli/theme/dev_server/local_assets.rb +92 -0
- data/lib/fluid_cli/theme/dev_server/proxy.rb +235 -0
- data/lib/fluid_cli/theme/dev_server/proxy_param_builder.rb +82 -0
- data/lib/fluid_cli/theme/dev_server/reload_mode.rb +34 -0
- data/lib/fluid_cli/theme/dev_server/sse.rb +75 -0
- data/lib/fluid_cli/theme/dev_server/watcher.rb +57 -0
- data/lib/fluid_cli/theme/dev_server/web_server.rb +140 -0
- data/lib/fluid_cli/theme/dev_server.rb +289 -0
- data/lib/fluid_cli/theme/development_theme.rb +101 -0
- data/lib/fluid_cli/theme/file.rb +105 -0
- data/lib/fluid_cli/theme/forms/select.rb +33 -0
- data/lib/fluid_cli/theme/mime_type.rb +34 -0
- data/lib/fluid_cli/theme/presenters/theme_presenter.rb +49 -0
- data/lib/fluid_cli/theme/presenters/themes_presenter.rb +31 -0
- data/lib/fluid_cli/theme/root.rb +62 -0
- data/lib/fluid_cli/theme/syncer/checksums.rb +66 -0
- data/lib/fluid_cli/theme/syncer/downloader.rb +54 -0
- data/lib/fluid_cli/theme/syncer/error_reporter.rb +45 -0
- data/lib/fluid_cli/theme/syncer/merger.rb +53 -0
- data/lib/fluid_cli/theme/syncer/operation.rb +58 -0
- data/lib/fluid_cli/theme/syncer/standard_reporter.rb +32 -0
- data/lib/fluid_cli/theme/syncer/unsupported_script_warning.rb +90 -0
- data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all.rb +41 -0
- data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all_form.rb +37 -0
- data/lib/fluid_cli/theme/syncer/uploader/forms/base_strategy_form.rb +64 -0
- data/lib/fluid_cli/theme/syncer/uploader/forms/select_delete_strategy.rb +29 -0
- data/lib/fluid_cli/theme/syncer/uploader/forms/select_update_strategy.rb +30 -0
- data/lib/fluid_cli/theme/syncer/uploader/json_delete_handler.rb +49 -0
- data/lib/fluid_cli/theme/syncer/uploader/json_update_handler.rb +71 -0
- data/lib/fluid_cli/theme/syncer/uploader.rb +105 -0
- data/lib/fluid_cli/theme/syncer.rb +412 -0
- data/lib/fluid_cli/theme/theme.rb +186 -0
- data/lib/fluid_cli/theme/ui/sync_progress_bar.rb +22 -0
- data/lib/fluid_cli/thread_pool/job.rb +35 -0
- data/lib/fluid_cli/thread_pool.rb +49 -0
- data/lib/fluid_cli/version.rb +3 -0
- data/lib/fluid_cli.rb +59 -0
- data/vendor/deps/base64/.document +5 -0
- data/vendor/deps/base64/.gitignore +9 -0
- data/vendor/deps/base64/BSDL +22 -0
- data/vendor/deps/base64/COPYING +56 -0
- data/vendor/deps/base64/Gemfile +9 -0
- data/vendor/deps/base64/LEGAL +60 -0
- data/vendor/deps/base64/README.md +48 -0
- data/vendor/deps/base64/Rakefile +31 -0
- data/vendor/deps/base64/base64.gemspec +28 -0
- data/vendor/deps/base64/bin/console +14 -0
- data/vendor/deps/base64/bin/setup +8 -0
- data/vendor/deps/base64/lib/base64.rb +382 -0
- data/vendor/deps/base64/sig/base64.rbs +358 -0
- data/vendor/deps/base64/test/base64/test_base64.rb +115 -0
- data/vendor/deps/base64/test_sig/test_base64.rb +44 -0
- data/vendor/deps/cli-kit/REVISION +1 -0
- data/vendor/deps/cli-kit/lib/cli/kit/args/definition.rb +286 -0
- data/vendor/deps/cli-kit/lib/cli/kit/args/evaluation.rb +215 -0
- data/vendor/deps/cli-kit/lib/cli/kit/args/parser/node.rb +128 -0
- data/vendor/deps/cli-kit/lib/cli/kit/args/parser.rb +125 -0
- data/vendor/deps/cli-kit/lib/cli/kit/args/tokenizer.rb +130 -0
- data/vendor/deps/cli-kit/lib/cli/kit/args.rb +16 -0
- data/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +30 -0
- data/vendor/deps/cli-kit/lib/cli/kit/command_help.rb +268 -0
- data/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +150 -0
- data/vendor/deps/cli-kit/lib/cli/kit/config.rb +137 -0
- data/vendor/deps/cli-kit/lib/cli/kit/core_ext.rb +28 -0
- data/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +166 -0
- data/vendor/deps/cli-kit/lib/cli/kit/executor.rb +92 -0
- data/vendor/deps/cli-kit/lib/cli/kit/ini.rb +91 -0
- data/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +92 -0
- data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +94 -0
- data/vendor/deps/cli-kit/lib/cli/kit/opts.rb +248 -0
- data/vendor/deps/cli-kit/lib/cli/kit/parse_args.rb +55 -0
- data/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +66 -0
- data/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +260 -0
- data/vendor/deps/cli-kit/lib/cli/kit/support.rb +11 -0
- data/vendor/deps/cli-kit/lib/cli/kit/system.rb +290 -0
- data/vendor/deps/cli-kit/lib/cli/kit/util.rb +118 -0
- data/vendor/deps/cli-kit/lib/cli/kit/version.rb +7 -0
- data/vendor/deps/cli-kit/lib/cli/kit.rb +139 -0
- data/vendor/deps/cli-ui/REVISION +1 -0
- data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +218 -0
- data/vendor/deps/cli-ui/lib/cli/ui/color.rb +101 -0
- data/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +219 -0
- data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +67 -0
- data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/box.rb +179 -0
- data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +152 -0
- data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +127 -0
- data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +286 -0
- data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +92 -0
- data/vendor/deps/cli-ui/lib/cli/ui/os.rb +63 -0
- data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +64 -0
- data/vendor/deps/cli-ui/lib/cli/ui/progress.rb +132 -0
- data/vendor/deps/cli-ui/lib/cli/ui/progress_reporter.rb +209 -0
- data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +583 -0
- data/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +36 -0
- data/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +381 -0
- data/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +48 -0
- data/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +602 -0
- data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +79 -0
- data/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +399 -0
- data/vendor/deps/cli-ui/lib/cli/ui/table.rb +83 -0
- data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +55 -0
- data/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +106 -0
- data/vendor/deps/cli-ui/lib/cli/ui/version.rb +8 -0
- data/vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb +46 -0
- data/vendor/deps/cli-ui/lib/cli/ui/widgets/status.rb +79 -0
- data/vendor/deps/cli-ui/lib/cli/ui/widgets.rb +89 -0
- data/vendor/deps/cli-ui/lib/cli/ui/work_queue.rb +142 -0
- data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +61 -0
- data/vendor/deps/cli-ui/lib/cli/ui.rb +359 -0
- data/vendor/deps/cli-ui/vendor/reentrant_mutex.rb +78 -0
- data/vendor/deps/debug/CONTRIBUTING.md +573 -0
- data/vendor/deps/debug/Gemfile +10 -0
- data/vendor/deps/debug/LICENSE.txt +22 -0
- data/vendor/deps/debug/README.md +996 -0
- data/vendor/deps/debug/Rakefile +57 -0
- data/vendor/deps/debug/TODO.md +23 -0
- data/vendor/deps/debug/debug.gemspec +33 -0
- data/vendor/deps/debug/exe/rdbg +53 -0
- data/vendor/deps/debug/ext/debug/Makefile +273 -0
- data/vendor/deps/debug/ext/debug/debug.c +228 -0
- data/vendor/deps/debug/ext/debug/debug_version.h +1 -0
- data/vendor/deps/debug/ext/debug/extconf.rb +27 -0
- data/vendor/deps/debug/ext/debug/iseq_collector.c +93 -0
- data/vendor/deps/debug/lib/debug/abbrev_command.rb +77 -0
- data/vendor/deps/debug/lib/debug/breakpoint.rb +556 -0
- data/vendor/deps/debug/lib/debug/client.rb +263 -0
- data/vendor/deps/debug/lib/debug/color.rb +123 -0
- data/vendor/deps/debug/lib/debug/config.rb +592 -0
- data/vendor/deps/debug/lib/debug/console.rb +224 -0
- data/vendor/deps/debug/lib/debug/dap_custom/traceInspector.rb +336 -0
- data/vendor/deps/debug/lib/debug/debug.bundle +0 -0
- data/vendor/deps/debug/lib/debug/frame_info.rb +190 -0
- data/vendor/deps/debug/lib/debug/irb_integration.rb +37 -0
- data/vendor/deps/debug/lib/debug/local.rb +115 -0
- data/vendor/deps/debug/lib/debug/open.rb +13 -0
- data/vendor/deps/debug/lib/debug/open_nonstop.rb +15 -0
- data/vendor/deps/debug/lib/debug/prelude.rb +50 -0
- data/vendor/deps/debug/lib/debug/server.rb +534 -0
- data/vendor/deps/debug/lib/debug/server_cdp.rb +1348 -0
- data/vendor/deps/debug/lib/debug/server_dap.rb +1108 -0
- data/vendor/deps/debug/lib/debug/session.rb +2667 -0
- data/vendor/deps/debug/lib/debug/source_repository.rb +150 -0
- data/vendor/deps/debug/lib/debug/start.rb +5 -0
- data/vendor/deps/debug/lib/debug/thread_client.rb +1457 -0
- data/vendor/deps/debug/lib/debug/tracer.rb +241 -0
- data/vendor/deps/debug/lib/debug/version.rb +5 -0
- data/vendor/deps/debug/lib/debug.rb +9 -0
- data/vendor/deps/debug/misc/README.md.erb +660 -0
- data/vendor/deps/listen/.github/release-drafter.yml +17 -0
- data/vendor/deps/listen/.github/workflows/development.yml +67 -0
- data/vendor/deps/listen/.github/workflows/push.yml +12 -0
- data/vendor/deps/listen/.gitignore +28 -0
- data/vendor/deps/listen/.rspec +3 -0
- data/vendor/deps/listen/.rubocop.yml +283 -0
- data/vendor/deps/listen/.yardopts +11 -0
- data/vendor/deps/listen/CHANGELOG.md +1 -0
- data/vendor/deps/listen/CONTRIBUTING.md +45 -0
- data/vendor/deps/listen/Gemfile +33 -0
- data/vendor/deps/listen/Guardfile +26 -0
- data/vendor/deps/listen/LICENSE.txt +22 -0
- data/vendor/deps/listen/README.md +490 -0
- data/vendor/deps/listen/Rakefile +154 -0
- data/vendor/deps/listen/bin/listen +11 -0
- data/vendor/deps/listen/lib/listen/adapter/base.rb +129 -0
- data/vendor/deps/listen/lib/listen/adapter/bsd.rb +104 -0
- data/vendor/deps/listen/lib/listen/adapter/config.rb +31 -0
- data/vendor/deps/listen/lib/listen/adapter/darwin.rb +77 -0
- data/vendor/deps/listen/lib/listen/adapter/linux.rb +108 -0
- data/vendor/deps/listen/lib/listen/adapter/polling.rb +40 -0
- data/vendor/deps/listen/lib/listen/adapter/windows.rb +96 -0
- data/vendor/deps/listen/lib/listen/adapter.rb +43 -0
- data/vendor/deps/listen/lib/listen/backend.rb +40 -0
- data/vendor/deps/listen/lib/listen/change.rb +69 -0
- data/vendor/deps/listen/lib/listen/cli.rb +65 -0
- data/vendor/deps/listen/lib/listen/directory.rb +93 -0
- data/vendor/deps/listen/lib/listen/error.rb +11 -0
- data/vendor/deps/listen/lib/listen/event/config.rb +39 -0
- data/vendor/deps/listen/lib/listen/event/loop.rb +92 -0
- data/vendor/deps/listen/lib/listen/event/processor.rb +128 -0
- data/vendor/deps/listen/lib/listen/event/queue.rb +52 -0
- data/vendor/deps/listen/lib/listen/file.rb +95 -0
- data/vendor/deps/listen/lib/listen/fsm.rb +131 -0
- data/vendor/deps/listen/lib/listen/listener/config.rb +41 -0
- data/vendor/deps/listen/lib/listen/listener.rb +136 -0
- data/vendor/deps/listen/lib/listen/logger.rb +65 -0
- data/vendor/deps/listen/lib/listen/monotonic_time.rb +27 -0
- data/vendor/deps/listen/lib/listen/options.rb +24 -0
- data/vendor/deps/listen/lib/listen/queue_optimizer.rb +129 -0
- data/vendor/deps/listen/lib/listen/record/entry.rb +66 -0
- data/vendor/deps/listen/lib/listen/record/symlink_detector.rb +47 -0
- data/vendor/deps/listen/lib/listen/record.rb +122 -0
- data/vendor/deps/listen/lib/listen/silencer/controller.rb +50 -0
- data/vendor/deps/listen/lib/listen/silencer.rb +106 -0
- data/vendor/deps/listen/lib/listen/thread.rb +54 -0
- data/vendor/deps/listen/lib/listen/version.rb +5 -0
- data/vendor/deps/listen/lib/listen.rb +47 -0
- data/vendor/deps/listen/listen.gemspec +40 -0
- data/vendor/deps/listen/spec/acceptance/listen_spec.rb +320 -0
- data/vendor/deps/listen/spec/lib/listen/adapter/base_spec.rb +101 -0
- data/vendor/deps/listen/spec/lib/listen/adapter/bsd_spec.rb +13 -0
- data/vendor/deps/listen/spec/lib/listen/adapter/config_spec.rb +122 -0
- data/vendor/deps/listen/spec/lib/listen/adapter/darwin_spec.rb +82 -0
- data/vendor/deps/listen/spec/lib/listen/adapter/linux_spec.rb +199 -0
- data/vendor/deps/listen/spec/lib/listen/adapter/polling_spec.rb +83 -0
- data/vendor/deps/listen/spec/lib/listen/adapter/windows_spec.rb +13 -0
- data/vendor/deps/listen/spec/lib/listen/adapter_spec.rb +69 -0
- data/vendor/deps/listen/spec/lib/listen/backend_spec.rb +82 -0
- data/vendor/deps/listen/spec/lib/listen/change_spec.rb +102 -0
- data/vendor/deps/listen/spec/lib/listen/cli_spec.rb +116 -0
- data/vendor/deps/listen/spec/lib/listen/directory_spec.rb +284 -0
- data/vendor/deps/listen/spec/lib/listen/event/config_spec.rb +33 -0
- data/vendor/deps/listen/spec/lib/listen/event/loop_spec.rb +118 -0
- data/vendor/deps/listen/spec/lib/listen/event/processor_spec.rb +250 -0
- data/vendor/deps/listen/spec/lib/listen/event/queue_spec.rb +118 -0
- data/vendor/deps/listen/spec/lib/listen/file_spec.rb +254 -0
- data/vendor/deps/listen/spec/lib/listen/fsm_spec.rb +147 -0
- data/vendor/deps/listen/spec/lib/listen/listener/config_spec.rb +29 -0
- data/vendor/deps/listen/spec/lib/listen/listener_spec.rb +321 -0
- data/vendor/deps/listen/spec/lib/listen/logger_spec.rb +212 -0
- data/vendor/deps/listen/spec/lib/listen/monotonic_time_spec.rb +58 -0
- data/vendor/deps/listen/spec/lib/listen/queue_optimizer_spec.rb +111 -0
- data/vendor/deps/listen/spec/lib/listen/record_spec.rb +424 -0
- data/vendor/deps/listen/spec/lib/listen/silencer/controller_spec.rb +97 -0
- data/vendor/deps/listen/spec/lib/listen/silencer_spec.rb +109 -0
- data/vendor/deps/listen/spec/lib/listen/thread_spec.rb +133 -0
- data/vendor/deps/listen/spec/lib/listen_spec.rb +25 -0
- data/vendor/deps/listen/spec/spec_helper.rb +49 -0
- data/vendor/deps/listen/spec/support/acceptance_helper.rb +260 -0
- data/vendor/deps/listen/spec/support/fixtures_helper.rb +32 -0
- data/vendor/deps/listen/spec/support/platform_helper.rb +17 -0
- data/vendor/deps/observer/.github/dependabot.yml +6 -0
- data/vendor/deps/observer/.github/workflows/test.yml +33 -0
- data/vendor/deps/observer/.gitignore +8 -0
- data/vendor/deps/observer/BSDL +22 -0
- data/vendor/deps/observer/COPYING +56 -0
- data/vendor/deps/observer/Gemfile +9 -0
- data/vendor/deps/observer/README.md +139 -0
- data/vendor/deps/observer/Rakefile +10 -0
- data/vendor/deps/observer/bin/console +14 -0
- data/vendor/deps/observer/bin/setup +8 -0
- data/vendor/deps/observer/lib/observer.rb +229 -0
- data/vendor/deps/observer/observer.gemspec +32 -0
- data/vendor/deps/observer/test/test_observer.rb +66 -0
- data/vendor/deps/webrick/.gitignore +9 -0
- data/vendor/deps/webrick/Gemfile +3 -0
- data/vendor/deps/webrick/LICENSE.txt +22 -0
- data/vendor/deps/webrick/README.md +61 -0
- data/vendor/deps/webrick/Rakefile +10 -0
- data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
- data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
- data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
- data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
- data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
- data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
- data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
- data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
- data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
- data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
- data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
- data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
- data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
- data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
- data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
- data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
- data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
- data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
- data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
- data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
- data/vendor/deps/webrick/lib/webrick.rb +232 -0
- data/vendor/deps/webrick/webrick.gemspec +74 -0
- metadata +412 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#--
|
|
3
|
+
# accesslog.rb -- Access log handling utilities
|
|
4
|
+
#
|
|
5
|
+
# Author: IPR -- Internet Programming with Ruby -- writers
|
|
6
|
+
# Copyright (c) 2002 keita yamaguchi
|
|
7
|
+
# Copyright (c) 2002 Internet Programming with Ruby writers
|
|
8
|
+
#
|
|
9
|
+
# $IPR: accesslog.rb,v 1.1 2002/10/01 17:16:32 gotoyuzo Exp $
|
|
10
|
+
|
|
11
|
+
module WEBrick
|
|
12
|
+
|
|
13
|
+
##
|
|
14
|
+
# AccessLog provides logging to various files in various formats.
|
|
15
|
+
#
|
|
16
|
+
# Multiple logs may be written to at the same time:
|
|
17
|
+
#
|
|
18
|
+
# access_log = [
|
|
19
|
+
# [$stderr, WEBrick::AccessLog::COMMON_LOG_FORMAT],
|
|
20
|
+
# [$stderr, WEBrick::AccessLog::REFERER_LOG_FORMAT],
|
|
21
|
+
# ]
|
|
22
|
+
#
|
|
23
|
+
# server = WEBrick::HTTPServer.new :AccessLog => access_log
|
|
24
|
+
#
|
|
25
|
+
# Custom log formats may be defined. WEBrick::AccessLog provides a subset
|
|
26
|
+
# of the formatting from Apache's mod_log_config
|
|
27
|
+
# http://httpd.apache.org/docs/mod/mod_log_config.html#formats. See
|
|
28
|
+
# AccessLog::setup_params for a list of supported options
|
|
29
|
+
|
|
30
|
+
module AccessLog
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# Raised if a parameter such as %e, %i, %o or %n is used without fetching
|
|
34
|
+
# a specific field.
|
|
35
|
+
|
|
36
|
+
class AccessLogError < StandardError; end
|
|
37
|
+
|
|
38
|
+
##
|
|
39
|
+
# The Common Log Format's time format
|
|
40
|
+
|
|
41
|
+
CLF_TIME_FORMAT = "[%d/%b/%Y:%H:%M:%S %Z]"
|
|
42
|
+
|
|
43
|
+
##
|
|
44
|
+
# Common Log Format
|
|
45
|
+
|
|
46
|
+
COMMON_LOG_FORMAT = "%h %l %u %t \"%r\" %s %b"
|
|
47
|
+
|
|
48
|
+
##
|
|
49
|
+
# Short alias for Common Log Format
|
|
50
|
+
|
|
51
|
+
CLF = COMMON_LOG_FORMAT
|
|
52
|
+
|
|
53
|
+
##
|
|
54
|
+
# Referer Log Format
|
|
55
|
+
|
|
56
|
+
REFERER_LOG_FORMAT = "%{Referer}i -> %U"
|
|
57
|
+
|
|
58
|
+
##
|
|
59
|
+
# User-Agent Log Format
|
|
60
|
+
|
|
61
|
+
AGENT_LOG_FORMAT = "%{User-Agent}i"
|
|
62
|
+
|
|
63
|
+
##
|
|
64
|
+
# Combined Log Format
|
|
65
|
+
|
|
66
|
+
COMBINED_LOG_FORMAT = "#{CLF} \"%{Referer}i\" \"%{User-agent}i\""
|
|
67
|
+
|
|
68
|
+
module_function
|
|
69
|
+
|
|
70
|
+
# This format specification is a subset of mod_log_config of Apache:
|
|
71
|
+
#
|
|
72
|
+
# %a:: Remote IP address
|
|
73
|
+
# %b:: Total response size
|
|
74
|
+
# %e{variable}:: Given variable in ENV
|
|
75
|
+
# %f:: Response filename
|
|
76
|
+
# %h:: Remote host name
|
|
77
|
+
# %{header}i:: Given request header
|
|
78
|
+
# %l:: Remote logname, always "-"
|
|
79
|
+
# %m:: Request method
|
|
80
|
+
# %{attr}n:: Given request attribute from <tt>req.attributes</tt>
|
|
81
|
+
# %{header}o:: Given response header
|
|
82
|
+
# %p:: Server's request port
|
|
83
|
+
# %{format}p:: The canonical port of the server serving the request or the
|
|
84
|
+
# actual port or the client's actual port. Valid formats are
|
|
85
|
+
# canonical, local or remote.
|
|
86
|
+
# %q:: Request query string
|
|
87
|
+
# %r:: First line of the request
|
|
88
|
+
# %s:: Request status
|
|
89
|
+
# %t:: Time the request was received
|
|
90
|
+
# %T:: Time taken to process the request
|
|
91
|
+
# %u:: Remote user from auth
|
|
92
|
+
# %U:: Unparsed URI
|
|
93
|
+
# %%:: Literal %
|
|
94
|
+
|
|
95
|
+
def setup_params(config, req, res)
|
|
96
|
+
params = Hash.new("")
|
|
97
|
+
params["a"] = req.peeraddr[3]
|
|
98
|
+
params["b"] = res.sent_size
|
|
99
|
+
params["e"] = ENV
|
|
100
|
+
params["f"] = res.filename || ""
|
|
101
|
+
params["h"] = req.peeraddr[2]
|
|
102
|
+
params["i"] = req
|
|
103
|
+
params["l"] = "-"
|
|
104
|
+
params["m"] = req.request_method
|
|
105
|
+
params["n"] = req.attributes
|
|
106
|
+
params["o"] = res
|
|
107
|
+
params["p"] = req.port
|
|
108
|
+
params["q"] = req.query_string
|
|
109
|
+
params["r"] = req.request_line.sub(/\x0d?\x0a\z/o, '')
|
|
110
|
+
params["s"] = res.status # won't support "%>s"
|
|
111
|
+
params["t"] = req.request_time
|
|
112
|
+
params["T"] = Time.now - req.request_time
|
|
113
|
+
params["u"] = req.user || "-"
|
|
114
|
+
params["U"] = req.unparsed_uri
|
|
115
|
+
params["v"] = config[:ServerName]
|
|
116
|
+
params
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
##
|
|
120
|
+
# Formats +params+ according to +format_string+ which is described in
|
|
121
|
+
# setup_params.
|
|
122
|
+
|
|
123
|
+
def format(format_string, params)
|
|
124
|
+
format_string.gsub(/\%(?:\{(.*?)\})?>?([a-zA-Z%])/){
|
|
125
|
+
param, spec = $1, $2
|
|
126
|
+
case spec[0]
|
|
127
|
+
when ?e, ?i, ?n, ?o
|
|
128
|
+
raise AccessLogError,
|
|
129
|
+
"parameter is required for \"#{spec}\"" unless param
|
|
130
|
+
(param = params[spec][param]) ? escape(param) : "-"
|
|
131
|
+
when ?t
|
|
132
|
+
params[spec].strftime(param || CLF_TIME_FORMAT)
|
|
133
|
+
when ?p
|
|
134
|
+
case param
|
|
135
|
+
when 'remote'
|
|
136
|
+
escape(params["i"].peeraddr[1].to_s)
|
|
137
|
+
else
|
|
138
|
+
escape(params["p"].to_s)
|
|
139
|
+
end
|
|
140
|
+
when ?%
|
|
141
|
+
"%"
|
|
142
|
+
else
|
|
143
|
+
escape(params[spec].to_s)
|
|
144
|
+
end
|
|
145
|
+
}
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
##
|
|
149
|
+
# Escapes control characters in +data+
|
|
150
|
+
|
|
151
|
+
def escape(data)
|
|
152
|
+
data = data.gsub(/[[:cntrl:]\\]+/) {$&.dump[1...-1]}
|
|
153
|
+
data.untaint if RUBY_VERSION < '2.7'
|
|
154
|
+
data
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# cgi.rb -- Yet another CGI library
|
|
4
|
+
#
|
|
5
|
+
# Author: IPR -- Internet Programming with Ruby -- writers
|
|
6
|
+
# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
|
|
7
|
+
# reserved.
|
|
8
|
+
#
|
|
9
|
+
# $Id$
|
|
10
|
+
|
|
11
|
+
require_relative "httprequest"
|
|
12
|
+
require_relative "httpresponse"
|
|
13
|
+
require_relative "config"
|
|
14
|
+
require "stringio"
|
|
15
|
+
|
|
16
|
+
module WEBrick
|
|
17
|
+
|
|
18
|
+
# A CGI library using WEBrick requests and responses.
|
|
19
|
+
#
|
|
20
|
+
# Example:
|
|
21
|
+
#
|
|
22
|
+
# class MyCGI < WEBrick::CGI
|
|
23
|
+
# def do_GET req, res
|
|
24
|
+
# res.body = 'it worked!'
|
|
25
|
+
# res.status = 200
|
|
26
|
+
# end
|
|
27
|
+
# end
|
|
28
|
+
#
|
|
29
|
+
# MyCGI.new.start
|
|
30
|
+
|
|
31
|
+
class CGI
|
|
32
|
+
|
|
33
|
+
# The CGI error exception class
|
|
34
|
+
|
|
35
|
+
CGIError = Class.new(StandardError)
|
|
36
|
+
|
|
37
|
+
##
|
|
38
|
+
# The CGI configuration. This is based on WEBrick::Config::HTTP
|
|
39
|
+
|
|
40
|
+
attr_reader :config
|
|
41
|
+
|
|
42
|
+
##
|
|
43
|
+
# The CGI logger
|
|
44
|
+
|
|
45
|
+
attr_reader :logger
|
|
46
|
+
|
|
47
|
+
##
|
|
48
|
+
# Creates a new CGI interface.
|
|
49
|
+
#
|
|
50
|
+
# The first argument in +args+ is a configuration hash which would update
|
|
51
|
+
# WEBrick::Config::HTTP.
|
|
52
|
+
#
|
|
53
|
+
# Any remaining arguments are stored in the <code>@options</code> instance
|
|
54
|
+
# variable for use by a subclass.
|
|
55
|
+
|
|
56
|
+
def initialize(*args)
|
|
57
|
+
if defined?(MOD_RUBY)
|
|
58
|
+
unless ENV.has_key?("GATEWAY_INTERFACE")
|
|
59
|
+
Apache.request.setup_cgi_env
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
if %r{HTTP/(\d+\.\d+)} =~ ENV["SERVER_PROTOCOL"]
|
|
63
|
+
httpv = $1
|
|
64
|
+
end
|
|
65
|
+
@config = WEBrick::Config::HTTP.dup.update(
|
|
66
|
+
:ServerSoftware => ENV["SERVER_SOFTWARE"] || "null",
|
|
67
|
+
:HTTPVersion => HTTPVersion.new(httpv || "1.0"),
|
|
68
|
+
:RunOnCGI => true, # to detect if it runs on CGI.
|
|
69
|
+
:NPH => false # set true to run as NPH script.
|
|
70
|
+
)
|
|
71
|
+
if config = args.shift
|
|
72
|
+
@config.update(config)
|
|
73
|
+
end
|
|
74
|
+
@config[:Logger] ||= WEBrick::BasicLog.new($stderr)
|
|
75
|
+
@logger = @config[:Logger]
|
|
76
|
+
@options = args
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
##
|
|
80
|
+
# Reads +key+ from the configuration
|
|
81
|
+
|
|
82
|
+
def [](key)
|
|
83
|
+
@config[key]
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
##
|
|
87
|
+
# Starts the CGI process with the given environment +env+ and standard
|
|
88
|
+
# input and output +stdin+ and +stdout+.
|
|
89
|
+
|
|
90
|
+
def start(env=ENV, stdin=$stdin, stdout=$stdout)
|
|
91
|
+
sock = WEBrick::CGI::Socket.new(@config, env, stdin, stdout)
|
|
92
|
+
req = HTTPRequest.new(@config)
|
|
93
|
+
res = HTTPResponse.new(@config)
|
|
94
|
+
unless @config[:NPH] or defined?(MOD_RUBY)
|
|
95
|
+
def res.setup_header
|
|
96
|
+
unless @header["status"]
|
|
97
|
+
phrase = HTTPStatus::reason_phrase(@status)
|
|
98
|
+
@header["status"] = "#{@status} #{phrase}"
|
|
99
|
+
end
|
|
100
|
+
super
|
|
101
|
+
end
|
|
102
|
+
def res.status_line
|
|
103
|
+
""
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
begin
|
|
108
|
+
req.parse(sock)
|
|
109
|
+
req.script_name = (env["SCRIPT_NAME"] || File.expand_path($0)).dup
|
|
110
|
+
req.path_info = (env["PATH_INFO"] || "").dup
|
|
111
|
+
req.query_string = env["QUERY_STRING"]
|
|
112
|
+
req.user = env["REMOTE_USER"]
|
|
113
|
+
res.request_method = req.request_method
|
|
114
|
+
res.request_uri = req.request_uri
|
|
115
|
+
res.request_http_version = req.http_version
|
|
116
|
+
res.keep_alive = req.keep_alive?
|
|
117
|
+
self.service(req, res)
|
|
118
|
+
rescue HTTPStatus::Error => ex
|
|
119
|
+
res.set_error(ex)
|
|
120
|
+
rescue HTTPStatus::Status => ex
|
|
121
|
+
res.status = ex.code
|
|
122
|
+
rescue Exception => ex
|
|
123
|
+
@logger.error(ex)
|
|
124
|
+
res.set_error(ex, true)
|
|
125
|
+
ensure
|
|
126
|
+
req.fixup
|
|
127
|
+
if defined?(MOD_RUBY)
|
|
128
|
+
res.setup_header
|
|
129
|
+
Apache.request.status_line = "#{res.status} #{res.reason_phrase}"
|
|
130
|
+
Apache.request.status = res.status
|
|
131
|
+
table = Apache.request.headers_out
|
|
132
|
+
res.header.each{|key, val|
|
|
133
|
+
case key
|
|
134
|
+
when /^content-encoding$/i
|
|
135
|
+
Apache::request.content_encoding = val
|
|
136
|
+
when /^content-type$/i
|
|
137
|
+
Apache::request.content_type = val
|
|
138
|
+
else
|
|
139
|
+
table[key] = val.to_s
|
|
140
|
+
end
|
|
141
|
+
}
|
|
142
|
+
res.cookies.each{|cookie|
|
|
143
|
+
table.add("Set-Cookie", cookie.to_s)
|
|
144
|
+
}
|
|
145
|
+
Apache.request.send_http_header
|
|
146
|
+
res.send_body(sock)
|
|
147
|
+
else
|
|
148
|
+
res.send_response(sock)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
##
|
|
154
|
+
# Services the request +req+ which will fill in the response +res+. See
|
|
155
|
+
# WEBrick::HTTPServlet::AbstractServlet#service for details.
|
|
156
|
+
|
|
157
|
+
def service(req, res)
|
|
158
|
+
method_name = "do_" + req.request_method.gsub(/-/, "_")
|
|
159
|
+
if respond_to?(method_name)
|
|
160
|
+
__send__(method_name, req, res)
|
|
161
|
+
else
|
|
162
|
+
raise HTTPStatus::MethodNotAllowed,
|
|
163
|
+
"unsupported method `#{req.request_method}'."
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
##
|
|
168
|
+
# Provides HTTP socket emulation from the CGI environment
|
|
169
|
+
|
|
170
|
+
class Socket # :nodoc:
|
|
171
|
+
include Enumerable
|
|
172
|
+
|
|
173
|
+
private
|
|
174
|
+
|
|
175
|
+
def initialize(config, env, stdin, stdout)
|
|
176
|
+
@config = config
|
|
177
|
+
@env = env
|
|
178
|
+
@header_part = StringIO.new
|
|
179
|
+
@body_part = stdin
|
|
180
|
+
@out_port = stdout
|
|
181
|
+
@out_port.binmode
|
|
182
|
+
|
|
183
|
+
@server_addr = @env["SERVER_ADDR"] || "0.0.0.0"
|
|
184
|
+
@server_name = @env["SERVER_NAME"]
|
|
185
|
+
@server_port = @env["SERVER_PORT"]
|
|
186
|
+
@remote_addr = @env["REMOTE_ADDR"]
|
|
187
|
+
@remote_host = @env["REMOTE_HOST"] || @remote_addr
|
|
188
|
+
@remote_port = @env["REMOTE_PORT"] || 0
|
|
189
|
+
|
|
190
|
+
begin
|
|
191
|
+
@header_part << request_line << CRLF
|
|
192
|
+
setup_header
|
|
193
|
+
@header_part << CRLF
|
|
194
|
+
@header_part.rewind
|
|
195
|
+
rescue Exception
|
|
196
|
+
raise CGIError, "invalid CGI environment"
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def request_line
|
|
201
|
+
meth = @env["REQUEST_METHOD"] || "GET"
|
|
202
|
+
unless url = @env["REQUEST_URI"]
|
|
203
|
+
url = (@env["SCRIPT_NAME"] || File.expand_path($0)).dup
|
|
204
|
+
url << @env["PATH_INFO"].to_s
|
|
205
|
+
url = WEBrick::HTTPUtils.escape_path(url)
|
|
206
|
+
if query_string = @env["QUERY_STRING"]
|
|
207
|
+
unless query_string.empty?
|
|
208
|
+
url << "?" << query_string
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
# we cannot get real HTTP version of client ;)
|
|
213
|
+
httpv = @config[:HTTPVersion]
|
|
214
|
+
return "#{meth} #{url} HTTP/#{httpv}"
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def setup_header
|
|
218
|
+
@env.each{|key, value|
|
|
219
|
+
case key
|
|
220
|
+
when "CONTENT_TYPE", "CONTENT_LENGTH"
|
|
221
|
+
add_header(key.gsub(/_/, "-"), value)
|
|
222
|
+
when /^HTTP_(.*)/
|
|
223
|
+
add_header($1.gsub(/_/, "-"), value)
|
|
224
|
+
end
|
|
225
|
+
}
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def add_header(hdrname, value)
|
|
229
|
+
unless value.empty?
|
|
230
|
+
@header_part << hdrname << ": " << value << CRLF
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def input
|
|
235
|
+
@header_part.eof? ? @body_part : @header_part
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
public
|
|
239
|
+
|
|
240
|
+
def peeraddr
|
|
241
|
+
[nil, @remote_port, @remote_host, @remote_addr]
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def addr
|
|
245
|
+
[nil, @server_port, @server_name, @server_addr]
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def gets(eol=LF, size=nil)
|
|
249
|
+
input.gets(eol, size)
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
def read(size=nil)
|
|
253
|
+
input.read(size)
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
def each
|
|
257
|
+
input.each{|line| yield(line) }
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
def eof?
|
|
261
|
+
input.eof?
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
def <<(data)
|
|
265
|
+
@out_port << data
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def write(data)
|
|
269
|
+
@out_port.write(data)
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
def cert
|
|
273
|
+
return nil unless defined?(OpenSSL)
|
|
274
|
+
if pem = @env["SSL_SERVER_CERT"]
|
|
275
|
+
OpenSSL::X509::Certificate.new(pem) unless pem.empty?
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def peer_cert
|
|
280
|
+
return nil unless defined?(OpenSSL)
|
|
281
|
+
if pem = @env["SSL_CLIENT_CERT"]
|
|
282
|
+
OpenSSL::X509::Certificate.new(pem) unless pem.empty?
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
def peer_cert_chain
|
|
287
|
+
return nil unless defined?(OpenSSL)
|
|
288
|
+
if @env["SSL_CLIENT_CERT_CHAIN_0"]
|
|
289
|
+
keys = @env.keys
|
|
290
|
+
certs = keys.sort.collect{|k|
|
|
291
|
+
if /^SSL_CLIENT_CERT_CHAIN_\d+$/ =~ k
|
|
292
|
+
if pem = @env[k]
|
|
293
|
+
OpenSSL::X509::Certificate.new(pem) unless pem.empty?
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
}
|
|
297
|
+
certs.compact
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def cipher
|
|
302
|
+
return nil unless defined?(OpenSSL)
|
|
303
|
+
if cipher = @env["SSL_CIPHER"]
|
|
304
|
+
ret = [ cipher ]
|
|
305
|
+
ret << @env["SSL_PROTOCOL"]
|
|
306
|
+
ret << @env["SSL_CIPHER_USEKEYSIZE"]
|
|
307
|
+
ret << @env["SSL_CIPHER_ALGKEYSIZE"]
|
|
308
|
+
ret
|
|
309
|
+
end
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# compat.rb -- cross platform compatibility
|
|
4
|
+
#
|
|
5
|
+
# Author: IPR -- Internet Programming with Ruby -- writers
|
|
6
|
+
# Copyright (c) 2002 GOTOU Yuuzou
|
|
7
|
+
# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
|
|
8
|
+
# reserved.
|
|
9
|
+
#
|
|
10
|
+
# $IPR: compat.rb,v 1.6 2002/10/01 17:16:32 gotoyuzo Exp $
|
|
11
|
+
|
|
12
|
+
##
|
|
13
|
+
# System call error module used by webrick for cross platform compatibility.
|
|
14
|
+
#
|
|
15
|
+
# EPROTO:: protocol error
|
|
16
|
+
# ECONNRESET:: remote host reset the connection request
|
|
17
|
+
# ECONNABORTED:: Client sent TCP reset (RST) before server has accepted the
|
|
18
|
+
# connection requested by client.
|
|
19
|
+
#
|
|
20
|
+
module Errno
|
|
21
|
+
##
|
|
22
|
+
# Protocol error.
|
|
23
|
+
|
|
24
|
+
class EPROTO < SystemCallError; end
|
|
25
|
+
|
|
26
|
+
##
|
|
27
|
+
# Remote host reset the connection request.
|
|
28
|
+
|
|
29
|
+
class ECONNRESET < SystemCallError; end
|
|
30
|
+
|
|
31
|
+
##
|
|
32
|
+
# Client sent TCP reset (RST) before server has accepted the connection
|
|
33
|
+
# requested by client.
|
|
34
|
+
|
|
35
|
+
class ECONNABORTED < SystemCallError; end
|
|
36
|
+
end
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# config.rb -- Default configurations.
|
|
4
|
+
#
|
|
5
|
+
# Author: IPR -- Internet Programming with Ruby -- writers
|
|
6
|
+
# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
|
|
7
|
+
# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
|
|
8
|
+
# reserved.
|
|
9
|
+
#
|
|
10
|
+
# $IPR: config.rb,v 1.52 2003/07/22 19:20:42 gotoyuzo Exp $
|
|
11
|
+
|
|
12
|
+
require_relative 'version'
|
|
13
|
+
require_relative 'httpversion'
|
|
14
|
+
require_relative 'httputils'
|
|
15
|
+
require_relative 'utils'
|
|
16
|
+
require_relative 'log'
|
|
17
|
+
|
|
18
|
+
module WEBrick
|
|
19
|
+
module Config
|
|
20
|
+
LIBDIR = File::dirname(__FILE__) # :nodoc:
|
|
21
|
+
|
|
22
|
+
# for GenericServer
|
|
23
|
+
General = Hash.new { |hash, key|
|
|
24
|
+
case key
|
|
25
|
+
when :ServerName
|
|
26
|
+
hash[key] = Utils.getservername
|
|
27
|
+
else
|
|
28
|
+
nil
|
|
29
|
+
end
|
|
30
|
+
}.update(
|
|
31
|
+
:BindAddress => nil, # "0.0.0.0" or "::" or nil
|
|
32
|
+
:Port => nil, # users MUST specify this!!
|
|
33
|
+
:MaxClients => 100, # maximum number of the concurrent connections
|
|
34
|
+
:ServerType => nil, # default: WEBrick::SimpleServer
|
|
35
|
+
:Logger => nil, # default: WEBrick::Log.new
|
|
36
|
+
:ServerSoftware => "WEBrick/#{WEBrick::VERSION} " +
|
|
37
|
+
"(Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})",
|
|
38
|
+
:TempDir => ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp',
|
|
39
|
+
:DoNotListen => false,
|
|
40
|
+
:StartCallback => nil,
|
|
41
|
+
:StopCallback => nil,
|
|
42
|
+
:AcceptCallback => nil,
|
|
43
|
+
:DoNotReverseLookup => true,
|
|
44
|
+
:ShutdownSocketWithoutClose => false,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# for HTTPServer, HTTPRequest, HTTPResponse ...
|
|
48
|
+
HTTP = General.dup.update(
|
|
49
|
+
:Port => 80,
|
|
50
|
+
:RequestTimeout => 30,
|
|
51
|
+
:HTTPVersion => HTTPVersion.new("1.1"),
|
|
52
|
+
:AccessLog => nil,
|
|
53
|
+
:MimeTypes => HTTPUtils::DefaultMimeTypes,
|
|
54
|
+
:DirectoryIndex => ["index.html","index.htm","index.cgi","index.rhtml"],
|
|
55
|
+
:DocumentRoot => nil,
|
|
56
|
+
:DocumentRootOptions => { :FancyIndexing => true },
|
|
57
|
+
:RequestCallback => nil,
|
|
58
|
+
:ServerAlias => nil,
|
|
59
|
+
:InputBufferSize => 65536, # input buffer size in reading request body
|
|
60
|
+
:OutputBufferSize => 65536, # output buffer size in sending File or IO
|
|
61
|
+
|
|
62
|
+
# for HTTPProxyServer
|
|
63
|
+
:ProxyAuthProc => nil,
|
|
64
|
+
:ProxyContentHandler => nil,
|
|
65
|
+
:ProxyVia => true,
|
|
66
|
+
:ProxyTimeout => true,
|
|
67
|
+
:ProxyURI => nil,
|
|
68
|
+
|
|
69
|
+
:CGIInterpreter => nil,
|
|
70
|
+
:CGIPathEnv => nil,
|
|
71
|
+
|
|
72
|
+
# workaround: if Request-URIs contain 8bit chars,
|
|
73
|
+
# they should be escaped before calling of URI::parse().
|
|
74
|
+
:Escape8bitURI => false
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
##
|
|
78
|
+
# Default configuration for WEBrick::HTTPServlet::FileHandler
|
|
79
|
+
#
|
|
80
|
+
# :AcceptableLanguages::
|
|
81
|
+
# Array of languages allowed for accept-language. There is no default
|
|
82
|
+
# :DirectoryCallback::
|
|
83
|
+
# Allows preprocessing of directory requests. There is no default
|
|
84
|
+
# callback.
|
|
85
|
+
# :FancyIndexing::
|
|
86
|
+
# If true, show an index for directories. The default is true.
|
|
87
|
+
# :FileCallback::
|
|
88
|
+
# Allows preprocessing of file requests. There is no default callback.
|
|
89
|
+
# :HandlerCallback::
|
|
90
|
+
# Allows preprocessing of requests. There is no default callback.
|
|
91
|
+
# :HandlerTable::
|
|
92
|
+
# Maps file suffixes to file handlers. DefaultFileHandler is used by
|
|
93
|
+
# default but any servlet can be used.
|
|
94
|
+
# :NondisclosureName::
|
|
95
|
+
# Do not show files matching this array of globs. .ht* and *~ are
|
|
96
|
+
# excluded by default.
|
|
97
|
+
# :UserDir::
|
|
98
|
+
# Directory inside ~user to serve content from for /~user requests.
|
|
99
|
+
# Only works if mounted on /. Disabled by default.
|
|
100
|
+
|
|
101
|
+
FileHandler = {
|
|
102
|
+
:NondisclosureName => [".ht*", "*~"],
|
|
103
|
+
:FancyIndexing => false,
|
|
104
|
+
:HandlerTable => {},
|
|
105
|
+
:HandlerCallback => nil,
|
|
106
|
+
:DirectoryCallback => nil,
|
|
107
|
+
:FileCallback => nil,
|
|
108
|
+
:UserDir => nil, # e.g. "public_html"
|
|
109
|
+
:AcceptableLanguages => [] # ["en", "ja", ... ]
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
##
|
|
113
|
+
# Default configuration for WEBrick::HTTPAuth::BasicAuth
|
|
114
|
+
#
|
|
115
|
+
# :AutoReloadUserDB:: Reload the user database provided by :UserDB
|
|
116
|
+
# automatically?
|
|
117
|
+
|
|
118
|
+
BasicAuth = {
|
|
119
|
+
:AutoReloadUserDB => true,
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
##
|
|
123
|
+
# Default configuration for WEBrick::HTTPAuth::DigestAuth.
|
|
124
|
+
#
|
|
125
|
+
# :Algorithm:: MD5, MD5-sess (default), SHA1, SHA1-sess
|
|
126
|
+
# :Domain:: An Array of URIs that define the protected space
|
|
127
|
+
# :Qop:: 'auth' for authentication, 'auth-int' for integrity protection or
|
|
128
|
+
# both
|
|
129
|
+
# :UseOpaque:: Should the server send opaque values to the client? This
|
|
130
|
+
# helps prevent replay attacks.
|
|
131
|
+
# :CheckNc:: Should the server check the nonce count? This helps the
|
|
132
|
+
# server detect replay attacks.
|
|
133
|
+
# :UseAuthenticationInfoHeader:: Should the server send an
|
|
134
|
+
# AuthenticationInfo header?
|
|
135
|
+
# :AutoReloadUserDB:: Reload the user database provided by :UserDB
|
|
136
|
+
# automatically?
|
|
137
|
+
# :NonceExpirePeriod:: How long should we store used nonces? Default is
|
|
138
|
+
# 30 minutes.
|
|
139
|
+
# :NonceExpireDelta:: How long is a nonce valid? Default is 1 minute
|
|
140
|
+
# :InternetExplorerHack:: Hack which allows Internet Explorer to work.
|
|
141
|
+
# :OperaHack:: Hack which allows Opera to work.
|
|
142
|
+
|
|
143
|
+
DigestAuth = {
|
|
144
|
+
:Algorithm => 'MD5-sess', # or 'MD5'
|
|
145
|
+
:Domain => nil, # an array includes domain names.
|
|
146
|
+
:Qop => [ 'auth' ], # 'auth' or 'auth-int' or both.
|
|
147
|
+
:UseOpaque => true,
|
|
148
|
+
:UseNextNonce => false,
|
|
149
|
+
:CheckNc => false,
|
|
150
|
+
:UseAuthenticationInfoHeader => true,
|
|
151
|
+
:AutoReloadUserDB => true,
|
|
152
|
+
:NonceExpirePeriod => 30*60,
|
|
153
|
+
:NonceExpireDelta => 60,
|
|
154
|
+
:InternetExplorerHack => true,
|
|
155
|
+
:OperaHack => true,
|
|
156
|
+
}
|
|
157
|
+
end
|
|
158
|
+
end
|