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,172 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# cookie.rb -- Cookie class
|
|
4
|
+
#
|
|
5
|
+
# Author: IPR -- Internet Programming with Ruby -- writers
|
|
6
|
+
# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
|
|
7
|
+
# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
|
|
8
|
+
# reserved.
|
|
9
|
+
#
|
|
10
|
+
# $IPR: cookie.rb,v 1.16 2002/09/21 12:23:35 gotoyuzo Exp $
|
|
11
|
+
|
|
12
|
+
require 'time'
|
|
13
|
+
require_relative 'httputils'
|
|
14
|
+
|
|
15
|
+
module WEBrick
|
|
16
|
+
|
|
17
|
+
##
|
|
18
|
+
# Processes HTTP cookies
|
|
19
|
+
|
|
20
|
+
class Cookie
|
|
21
|
+
|
|
22
|
+
##
|
|
23
|
+
# The cookie name
|
|
24
|
+
|
|
25
|
+
attr_reader :name
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
# The cookie value
|
|
29
|
+
|
|
30
|
+
attr_accessor :value
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# The cookie version
|
|
34
|
+
|
|
35
|
+
attr_accessor :version
|
|
36
|
+
|
|
37
|
+
##
|
|
38
|
+
# The cookie domain
|
|
39
|
+
attr_accessor :domain
|
|
40
|
+
|
|
41
|
+
##
|
|
42
|
+
# The cookie path
|
|
43
|
+
|
|
44
|
+
attr_accessor :path
|
|
45
|
+
|
|
46
|
+
##
|
|
47
|
+
# Is this a secure cookie?
|
|
48
|
+
|
|
49
|
+
attr_accessor :secure
|
|
50
|
+
|
|
51
|
+
##
|
|
52
|
+
# The cookie comment
|
|
53
|
+
|
|
54
|
+
attr_accessor :comment
|
|
55
|
+
|
|
56
|
+
##
|
|
57
|
+
# The maximum age of the cookie
|
|
58
|
+
|
|
59
|
+
attr_accessor :max_age
|
|
60
|
+
|
|
61
|
+
#attr_accessor :comment_url, :discard, :port
|
|
62
|
+
|
|
63
|
+
##
|
|
64
|
+
# Creates a new cookie with the given +name+ and +value+
|
|
65
|
+
|
|
66
|
+
def initialize(name, value)
|
|
67
|
+
@name = name
|
|
68
|
+
@value = value
|
|
69
|
+
@version = 0 # Netscape Cookie
|
|
70
|
+
|
|
71
|
+
@domain = @path = @secure = @comment = @max_age =
|
|
72
|
+
@expires = @comment_url = @discard = @port = nil
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
##
|
|
76
|
+
# Sets the cookie expiration to the time +t+. The expiration time may be
|
|
77
|
+
# a false value to disable expiration or a Time or HTTP format time string
|
|
78
|
+
# to set the expiration date.
|
|
79
|
+
|
|
80
|
+
def expires=(t)
|
|
81
|
+
@expires = t && (t.is_a?(Time) ? t.httpdate : t.to_s)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
##
|
|
85
|
+
# Retrieves the expiration time as a Time
|
|
86
|
+
|
|
87
|
+
def expires
|
|
88
|
+
@expires && Time.parse(@expires)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
##
|
|
92
|
+
# The cookie string suitable for use in an HTTP header
|
|
93
|
+
|
|
94
|
+
def to_s
|
|
95
|
+
ret = +""
|
|
96
|
+
ret << @name << "=" << @value
|
|
97
|
+
ret << "; " << "Version=" << @version.to_s if @version > 0
|
|
98
|
+
ret << "; " << "Domain=" << @domain if @domain
|
|
99
|
+
ret << "; " << "Expires=" << @expires if @expires
|
|
100
|
+
ret << "; " << "Max-Age=" << @max_age.to_s if @max_age
|
|
101
|
+
ret << "; " << "Comment=" << @comment if @comment
|
|
102
|
+
ret << "; " << "Path=" << @path if @path
|
|
103
|
+
ret << "; " << "Secure" if @secure
|
|
104
|
+
ret
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
##
|
|
108
|
+
# Parses a Cookie field sent from the user-agent. Returns an array of
|
|
109
|
+
# cookies.
|
|
110
|
+
|
|
111
|
+
def self.parse(str)
|
|
112
|
+
if str
|
|
113
|
+
ret = []
|
|
114
|
+
cookie = nil
|
|
115
|
+
ver = 0
|
|
116
|
+
str.split(/;\s+/).each{|x|
|
|
117
|
+
key, val = x.split(/=/,2)
|
|
118
|
+
val = val ? HTTPUtils::dequote(val) : ""
|
|
119
|
+
case key
|
|
120
|
+
when "$Version"; ver = val.to_i
|
|
121
|
+
when "$Path"; cookie.path = val
|
|
122
|
+
when "$Domain"; cookie.domain = val
|
|
123
|
+
when "$Port"; cookie.port = val
|
|
124
|
+
else
|
|
125
|
+
ret << cookie if cookie
|
|
126
|
+
cookie = self.new(key, val)
|
|
127
|
+
cookie.version = ver
|
|
128
|
+
end
|
|
129
|
+
}
|
|
130
|
+
ret << cookie if cookie
|
|
131
|
+
ret
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
##
|
|
136
|
+
# Parses the cookie in +str+
|
|
137
|
+
|
|
138
|
+
def self.parse_set_cookie(str)
|
|
139
|
+
cookie_elem = str.split(/;/)
|
|
140
|
+
first_elem = cookie_elem.shift
|
|
141
|
+
first_elem.strip!
|
|
142
|
+
key, value = first_elem.split(/=/, 2)
|
|
143
|
+
cookie = new(key, HTTPUtils.dequote(value))
|
|
144
|
+
cookie_elem.each{|pair|
|
|
145
|
+
pair.strip!
|
|
146
|
+
key, value = pair.split(/=/, 2)
|
|
147
|
+
if value
|
|
148
|
+
value = HTTPUtils.dequote(value.strip)
|
|
149
|
+
end
|
|
150
|
+
case key.downcase
|
|
151
|
+
when "domain" then cookie.domain = value
|
|
152
|
+
when "path" then cookie.path = value
|
|
153
|
+
when "expires" then cookie.expires = value
|
|
154
|
+
when "max-age" then cookie.max_age = Integer(value)
|
|
155
|
+
when "comment" then cookie.comment = value
|
|
156
|
+
when "version" then cookie.version = Integer(value)
|
|
157
|
+
when "secure" then cookie.secure = true
|
|
158
|
+
end
|
|
159
|
+
}
|
|
160
|
+
return cookie
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
##
|
|
164
|
+
# Parses the cookies in +str+
|
|
165
|
+
|
|
166
|
+
def self.parse_set_cookies(str)
|
|
167
|
+
return str.split(/,(?=[^;,]*=)|,$/).collect{|c|
|
|
168
|
+
parse_set_cookie(c)
|
|
169
|
+
}
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#--
|
|
3
|
+
# htmlutils.rb -- HTMLUtils Module
|
|
4
|
+
#
|
|
5
|
+
# Author: IPR -- Internet Programming with Ruby -- writers
|
|
6
|
+
# Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
|
|
7
|
+
# Copyright (c) 2002 Internet Programming with Ruby writers. All rights
|
|
8
|
+
# reserved.
|
|
9
|
+
#
|
|
10
|
+
# $IPR: htmlutils.rb,v 1.7 2002/09/21 12:23:35 gotoyuzo Exp $
|
|
11
|
+
|
|
12
|
+
module WEBrick
|
|
13
|
+
module HTMLUtils
|
|
14
|
+
|
|
15
|
+
##
|
|
16
|
+
# Escapes &, ", > and < in +string+
|
|
17
|
+
|
|
18
|
+
def escape(string)
|
|
19
|
+
return "" unless string
|
|
20
|
+
str = string.b
|
|
21
|
+
str.gsub!(/&/n, '&')
|
|
22
|
+
str.gsub!(/\"/n, '"')
|
|
23
|
+
str.gsub!(/>/n, '>')
|
|
24
|
+
str.gsub!(/</n, '<')
|
|
25
|
+
str.force_encoding(string.encoding)
|
|
26
|
+
end
|
|
27
|
+
module_function :escape
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#--
|
|
3
|
+
# httpauth/authenticator.rb -- Authenticator mix-in module.
|
|
4
|
+
#
|
|
5
|
+
# Author: IPR -- Internet Programming with Ruby -- writers
|
|
6
|
+
# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
|
|
7
|
+
# reserved.
|
|
8
|
+
#
|
|
9
|
+
# $IPR: authenticator.rb,v 1.3 2003/02/20 07:15:47 gotoyuzo Exp $
|
|
10
|
+
|
|
11
|
+
module WEBrick
|
|
12
|
+
module HTTPAuth
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
# Module providing generic support for both Digest and Basic
|
|
16
|
+
# authentication schemes.
|
|
17
|
+
|
|
18
|
+
module Authenticator
|
|
19
|
+
|
|
20
|
+
RequestField = "Authorization" # :nodoc:
|
|
21
|
+
ResponseField = "WWW-Authenticate" # :nodoc:
|
|
22
|
+
ResponseInfoField = "Authentication-Info" # :nodoc:
|
|
23
|
+
AuthException = HTTPStatus::Unauthorized # :nodoc:
|
|
24
|
+
|
|
25
|
+
##
|
|
26
|
+
# Method of authentication, must be overridden by the including class
|
|
27
|
+
|
|
28
|
+
AuthScheme = nil
|
|
29
|
+
|
|
30
|
+
##
|
|
31
|
+
# The realm this authenticator covers
|
|
32
|
+
|
|
33
|
+
attr_reader :realm
|
|
34
|
+
|
|
35
|
+
##
|
|
36
|
+
# The user database for this authenticator
|
|
37
|
+
|
|
38
|
+
attr_reader :userdb
|
|
39
|
+
|
|
40
|
+
##
|
|
41
|
+
# The logger for this authenticator
|
|
42
|
+
|
|
43
|
+
attr_reader :logger
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
# :stopdoc:
|
|
48
|
+
|
|
49
|
+
##
|
|
50
|
+
# Initializes the authenticator from +config+
|
|
51
|
+
|
|
52
|
+
def check_init(config)
|
|
53
|
+
[:UserDB, :Realm].each{|sym|
|
|
54
|
+
unless config[sym]
|
|
55
|
+
raise ArgumentError, "Argument #{sym.inspect} missing."
|
|
56
|
+
end
|
|
57
|
+
}
|
|
58
|
+
@realm = config[:Realm]
|
|
59
|
+
@userdb = config[:UserDB]
|
|
60
|
+
@logger = config[:Logger] || Log::new($stderr)
|
|
61
|
+
@reload_db = config[:AutoReloadUserDB]
|
|
62
|
+
@request_field = self::class::RequestField
|
|
63
|
+
@response_field = self::class::ResponseField
|
|
64
|
+
@resp_info_field = self::class::ResponseInfoField
|
|
65
|
+
@auth_exception = self::class::AuthException
|
|
66
|
+
@auth_scheme = self::class::AuthScheme
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
##
|
|
70
|
+
# Ensures +req+ has credentials that can be authenticated.
|
|
71
|
+
|
|
72
|
+
def check_scheme(req)
|
|
73
|
+
unless credentials = req[@request_field]
|
|
74
|
+
error("no credentials in the request.")
|
|
75
|
+
return nil
|
|
76
|
+
end
|
|
77
|
+
unless match = /^#{@auth_scheme}\s+/i.match(credentials)
|
|
78
|
+
error("invalid scheme in %s.", credentials)
|
|
79
|
+
info("%s: %s", @request_field, credentials) if $DEBUG
|
|
80
|
+
return nil
|
|
81
|
+
end
|
|
82
|
+
return match.post_match
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def log(meth, fmt, *args)
|
|
86
|
+
msg = format("%s %s: ", @auth_scheme, @realm)
|
|
87
|
+
msg << fmt % args
|
|
88
|
+
@logger.__send__(meth, msg)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def error(fmt, *args)
|
|
92
|
+
if @logger.error?
|
|
93
|
+
log(:error, fmt, *args)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def info(fmt, *args)
|
|
98
|
+
if @logger.info?
|
|
99
|
+
log(:info, fmt, *args)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# :startdoc:
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
##
|
|
107
|
+
# Module providing generic support for both Digest and Basic
|
|
108
|
+
# authentication schemes for proxies.
|
|
109
|
+
|
|
110
|
+
module ProxyAuthenticator
|
|
111
|
+
RequestField = "Proxy-Authorization" # :nodoc:
|
|
112
|
+
ResponseField = "Proxy-Authenticate" # :nodoc:
|
|
113
|
+
InfoField = "Proxy-Authentication-Info" # :nodoc:
|
|
114
|
+
AuthException = HTTPStatus::ProxyAuthenticationRequired # :nodoc:
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
#
|
|
3
|
+
# httpauth/basicauth.rb -- HTTP basic access authentication
|
|
4
|
+
#
|
|
5
|
+
# Author: IPR -- Internet Programming with Ruby -- writers
|
|
6
|
+
# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
|
|
7
|
+
# reserved.
|
|
8
|
+
#
|
|
9
|
+
# $IPR: basicauth.rb,v 1.5 2003/02/20 07:15:47 gotoyuzo Exp $
|
|
10
|
+
|
|
11
|
+
require_relative '../config'
|
|
12
|
+
require_relative '../httpstatus'
|
|
13
|
+
require_relative 'authenticator'
|
|
14
|
+
|
|
15
|
+
module WEBrick
|
|
16
|
+
module HTTPAuth
|
|
17
|
+
|
|
18
|
+
##
|
|
19
|
+
# Basic Authentication for WEBrick
|
|
20
|
+
#
|
|
21
|
+
# Use this class to add basic authentication to a WEBrick servlet.
|
|
22
|
+
#
|
|
23
|
+
# Here is an example of how to set up a BasicAuth:
|
|
24
|
+
#
|
|
25
|
+
# config = { :Realm => 'BasicAuth example realm' }
|
|
26
|
+
#
|
|
27
|
+
# htpasswd = WEBrick::HTTPAuth::Htpasswd.new 'my_password_file', password_hash: :bcrypt
|
|
28
|
+
# htpasswd.set_passwd config[:Realm], 'username', 'password'
|
|
29
|
+
# htpasswd.flush
|
|
30
|
+
#
|
|
31
|
+
# config[:UserDB] = htpasswd
|
|
32
|
+
#
|
|
33
|
+
# basic_auth = WEBrick::HTTPAuth::BasicAuth.new config
|
|
34
|
+
|
|
35
|
+
class BasicAuth
|
|
36
|
+
include Authenticator
|
|
37
|
+
|
|
38
|
+
AuthScheme = "Basic" # :nodoc:
|
|
39
|
+
|
|
40
|
+
##
|
|
41
|
+
# Used by UserDB to create a basic password entry
|
|
42
|
+
|
|
43
|
+
def self.make_passwd(realm, user, pass)
|
|
44
|
+
pass ||= ""
|
|
45
|
+
pass.crypt(Utils::random_string(2))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
attr_reader :realm, :userdb, :logger
|
|
49
|
+
|
|
50
|
+
##
|
|
51
|
+
# Creates a new BasicAuth instance.
|
|
52
|
+
#
|
|
53
|
+
# See WEBrick::Config::BasicAuth for default configuration entries
|
|
54
|
+
#
|
|
55
|
+
# You must supply the following configuration entries:
|
|
56
|
+
#
|
|
57
|
+
# :Realm:: The name of the realm being protected.
|
|
58
|
+
# :UserDB:: A database of usernames and passwords.
|
|
59
|
+
# A WEBrick::HTTPAuth::Htpasswd instance should be used.
|
|
60
|
+
|
|
61
|
+
def initialize(config, default=Config::BasicAuth)
|
|
62
|
+
check_init(config)
|
|
63
|
+
@config = default.dup.update(config)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
##
|
|
67
|
+
# Authenticates a +req+ and returns a 401 Unauthorized using +res+ if
|
|
68
|
+
# the authentication was not correct.
|
|
69
|
+
|
|
70
|
+
def authenticate(req, res)
|
|
71
|
+
unless basic_credentials = check_scheme(req)
|
|
72
|
+
challenge(req, res)
|
|
73
|
+
end
|
|
74
|
+
userid, password = basic_credentials.unpack("m*")[0].split(":", 2)
|
|
75
|
+
password ||= ""
|
|
76
|
+
if userid.empty?
|
|
77
|
+
error("user id was not given.")
|
|
78
|
+
challenge(req, res)
|
|
79
|
+
end
|
|
80
|
+
unless encpass = @userdb.get_passwd(@realm, userid, @reload_db)
|
|
81
|
+
error("%s: the user is not allowed.", userid)
|
|
82
|
+
challenge(req, res)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
case encpass
|
|
86
|
+
when /\A\$2[aby]\$/
|
|
87
|
+
password_matches = BCrypt::Password.new(encpass.sub(/\A\$2[aby]\$/, '$2a$')) == password
|
|
88
|
+
else
|
|
89
|
+
password_matches = password.crypt(encpass) == encpass
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
unless password_matches
|
|
93
|
+
error("%s: password unmatch.", userid)
|
|
94
|
+
challenge(req, res)
|
|
95
|
+
end
|
|
96
|
+
info("%s: authentication succeeded.", userid)
|
|
97
|
+
req.user = userid
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
##
|
|
101
|
+
# Returns a challenge response which asks for authentication information
|
|
102
|
+
|
|
103
|
+
def challenge(req, res)
|
|
104
|
+
res[@response_field] = "#{@auth_scheme} realm=\"#{@realm}\""
|
|
105
|
+
raise @auth_exception
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
##
|
|
110
|
+
# Basic authentication for proxy servers. See BasicAuth for details.
|
|
111
|
+
|
|
112
|
+
class ProxyBasicAuth < BasicAuth
|
|
113
|
+
include ProxyAuthenticator
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|