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.
Files changed (329) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -0
  3. data/dev.yml +5 -0
  4. data/exe/fluid +24 -0
  5. data/lib/fluid_cli/api.rb +135 -0
  6. data/lib/fluid_cli/assets/post_auth_page/index.html.erb +34 -0
  7. data/lib/fluid_cli/assets/post_auth_page/style.css +58 -0
  8. data/lib/fluid_cli/command.rb +55 -0
  9. data/lib/fluid_cli/commands/help.rb +21 -0
  10. data/lib/fluid_cli/commands/login.rb +30 -0
  11. data/lib/fluid_cli/commands/logout.rb +38 -0
  12. data/lib/fluid_cli/commands/switch.rb +23 -0
  13. data/lib/fluid_cli/commands/theme/common/company_helper.rb +15 -0
  14. data/lib/fluid_cli/commands/theme/common/root_helper.rb +95 -0
  15. data/lib/fluid_cli/commands/theme/dev.rb +61 -0
  16. data/lib/fluid_cli/commands/theme/help.rb +21 -0
  17. data/lib/fluid_cli/commands/theme/init.rb +46 -0
  18. data/lib/fluid_cli/commands/theme/pull.rb +68 -0
  19. data/lib/fluid_cli/commands/theme/push.rb +132 -0
  20. data/lib/fluid_cli/commands/theme.rb +23 -0
  21. data/lib/fluid_cli/commands/whoami.rb +23 -0
  22. data/lib/fluid_cli/commands.rb +19 -0
  23. data/lib/fluid_cli/company_switcher.rb +69 -0
  24. data/lib/fluid_cli/context.rb +691 -0
  25. data/lib/fluid_cli/db.rb +114 -0
  26. data/lib/fluid_cli/entry_point.rb +10 -0
  27. data/lib/fluid_cli/environment.rb +32 -0
  28. data/lib/fluid_cli/file_system_listener.rb +29 -0
  29. data/lib/fluid_cli/form.rb +42 -0
  30. data/lib/fluid_cli/git.rb +319 -0
  31. data/lib/fluid_cli/http_request.rb +54 -0
  32. data/lib/fluid_cli/identity_auth/servlet.rb +39 -0
  33. data/lib/fluid_cli/identity_auth.rb +126 -0
  34. data/lib/fluid_cli/options.rb +38 -0
  35. data/lib/fluid_cli/theme/dev_server/certificate_manager.rb +79 -0
  36. data/lib/fluid_cli/theme/dev_server/errors.rb +9 -0
  37. data/lib/fluid_cli/theme/dev_server/header_hash.rb +98 -0
  38. data/lib/fluid_cli/theme/dev_server/hooks/file_change_hook.rb +39 -0
  39. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot-reload-no-script.html +27 -0
  40. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot_reload.js +28 -0
  41. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/sse_client.js +43 -0
  42. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/theme.js +16 -0
  43. data/lib/fluid_cli/theme/dev_server/hot_reload/script_injector.rb +54 -0
  44. data/lib/fluid_cli/theme/dev_server/hot_reload.rb +75 -0
  45. data/lib/fluid_cli/theme/dev_server/local_assets.rb +92 -0
  46. data/lib/fluid_cli/theme/dev_server/proxy.rb +235 -0
  47. data/lib/fluid_cli/theme/dev_server/proxy_param_builder.rb +82 -0
  48. data/lib/fluid_cli/theme/dev_server/reload_mode.rb +34 -0
  49. data/lib/fluid_cli/theme/dev_server/sse.rb +75 -0
  50. data/lib/fluid_cli/theme/dev_server/watcher.rb +57 -0
  51. data/lib/fluid_cli/theme/dev_server/web_server.rb +140 -0
  52. data/lib/fluid_cli/theme/dev_server.rb +289 -0
  53. data/lib/fluid_cli/theme/development_theme.rb +101 -0
  54. data/lib/fluid_cli/theme/file.rb +105 -0
  55. data/lib/fluid_cli/theme/forms/select.rb +33 -0
  56. data/lib/fluid_cli/theme/mime_type.rb +34 -0
  57. data/lib/fluid_cli/theme/presenters/theme_presenter.rb +49 -0
  58. data/lib/fluid_cli/theme/presenters/themes_presenter.rb +31 -0
  59. data/lib/fluid_cli/theme/root.rb +62 -0
  60. data/lib/fluid_cli/theme/syncer/checksums.rb +66 -0
  61. data/lib/fluid_cli/theme/syncer/downloader.rb +54 -0
  62. data/lib/fluid_cli/theme/syncer/error_reporter.rb +45 -0
  63. data/lib/fluid_cli/theme/syncer/merger.rb +53 -0
  64. data/lib/fluid_cli/theme/syncer/operation.rb +58 -0
  65. data/lib/fluid_cli/theme/syncer/standard_reporter.rb +32 -0
  66. data/lib/fluid_cli/theme/syncer/unsupported_script_warning.rb +90 -0
  67. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all.rb +41 -0
  68. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all_form.rb +37 -0
  69. data/lib/fluid_cli/theme/syncer/uploader/forms/base_strategy_form.rb +64 -0
  70. data/lib/fluid_cli/theme/syncer/uploader/forms/select_delete_strategy.rb +29 -0
  71. data/lib/fluid_cli/theme/syncer/uploader/forms/select_update_strategy.rb +30 -0
  72. data/lib/fluid_cli/theme/syncer/uploader/json_delete_handler.rb +49 -0
  73. data/lib/fluid_cli/theme/syncer/uploader/json_update_handler.rb +71 -0
  74. data/lib/fluid_cli/theme/syncer/uploader.rb +105 -0
  75. data/lib/fluid_cli/theme/syncer.rb +412 -0
  76. data/lib/fluid_cli/theme/theme.rb +186 -0
  77. data/lib/fluid_cli/theme/ui/sync_progress_bar.rb +22 -0
  78. data/lib/fluid_cli/thread_pool/job.rb +35 -0
  79. data/lib/fluid_cli/thread_pool.rb +49 -0
  80. data/lib/fluid_cli/version.rb +3 -0
  81. data/lib/fluid_cli.rb +59 -0
  82. data/vendor/deps/base64/.document +5 -0
  83. data/vendor/deps/base64/.gitignore +9 -0
  84. data/vendor/deps/base64/BSDL +22 -0
  85. data/vendor/deps/base64/COPYING +56 -0
  86. data/vendor/deps/base64/Gemfile +9 -0
  87. data/vendor/deps/base64/LEGAL +60 -0
  88. data/vendor/deps/base64/README.md +48 -0
  89. data/vendor/deps/base64/Rakefile +31 -0
  90. data/vendor/deps/base64/base64.gemspec +28 -0
  91. data/vendor/deps/base64/bin/console +14 -0
  92. data/vendor/deps/base64/bin/setup +8 -0
  93. data/vendor/deps/base64/lib/base64.rb +382 -0
  94. data/vendor/deps/base64/sig/base64.rbs +358 -0
  95. data/vendor/deps/base64/test/base64/test_base64.rb +115 -0
  96. data/vendor/deps/base64/test_sig/test_base64.rb +44 -0
  97. data/vendor/deps/cli-kit/REVISION +1 -0
  98. data/vendor/deps/cli-kit/lib/cli/kit/args/definition.rb +286 -0
  99. data/vendor/deps/cli-kit/lib/cli/kit/args/evaluation.rb +215 -0
  100. data/vendor/deps/cli-kit/lib/cli/kit/args/parser/node.rb +128 -0
  101. data/vendor/deps/cli-kit/lib/cli/kit/args/parser.rb +125 -0
  102. data/vendor/deps/cli-kit/lib/cli/kit/args/tokenizer.rb +130 -0
  103. data/vendor/deps/cli-kit/lib/cli/kit/args.rb +16 -0
  104. data/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +30 -0
  105. data/vendor/deps/cli-kit/lib/cli/kit/command_help.rb +268 -0
  106. data/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +150 -0
  107. data/vendor/deps/cli-kit/lib/cli/kit/config.rb +137 -0
  108. data/vendor/deps/cli-kit/lib/cli/kit/core_ext.rb +28 -0
  109. data/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +166 -0
  110. data/vendor/deps/cli-kit/lib/cli/kit/executor.rb +92 -0
  111. data/vendor/deps/cli-kit/lib/cli/kit/ini.rb +91 -0
  112. data/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +92 -0
  113. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +94 -0
  114. data/vendor/deps/cli-kit/lib/cli/kit/opts.rb +248 -0
  115. data/vendor/deps/cli-kit/lib/cli/kit/parse_args.rb +55 -0
  116. data/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +66 -0
  117. data/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +260 -0
  118. data/vendor/deps/cli-kit/lib/cli/kit/support.rb +11 -0
  119. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +290 -0
  120. data/vendor/deps/cli-kit/lib/cli/kit/util.rb +118 -0
  121. data/vendor/deps/cli-kit/lib/cli/kit/version.rb +7 -0
  122. data/vendor/deps/cli-kit/lib/cli/kit.rb +139 -0
  123. data/vendor/deps/cli-ui/REVISION +1 -0
  124. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +218 -0
  125. data/vendor/deps/cli-ui/lib/cli/ui/color.rb +101 -0
  126. data/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +219 -0
  127. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +67 -0
  128. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/box.rb +179 -0
  129. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +152 -0
  130. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +127 -0
  131. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +286 -0
  132. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +92 -0
  133. data/vendor/deps/cli-ui/lib/cli/ui/os.rb +63 -0
  134. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +64 -0
  135. data/vendor/deps/cli-ui/lib/cli/ui/progress.rb +132 -0
  136. data/vendor/deps/cli-ui/lib/cli/ui/progress_reporter.rb +209 -0
  137. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +583 -0
  138. data/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +36 -0
  139. data/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +381 -0
  140. data/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +48 -0
  141. data/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +602 -0
  142. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +79 -0
  143. data/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +399 -0
  144. data/vendor/deps/cli-ui/lib/cli/ui/table.rb +83 -0
  145. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +55 -0
  146. data/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +106 -0
  147. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +8 -0
  148. data/vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb +46 -0
  149. data/vendor/deps/cli-ui/lib/cli/ui/widgets/status.rb +79 -0
  150. data/vendor/deps/cli-ui/lib/cli/ui/widgets.rb +89 -0
  151. data/vendor/deps/cli-ui/lib/cli/ui/work_queue.rb +142 -0
  152. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +61 -0
  153. data/vendor/deps/cli-ui/lib/cli/ui.rb +359 -0
  154. data/vendor/deps/cli-ui/vendor/reentrant_mutex.rb +78 -0
  155. data/vendor/deps/debug/CONTRIBUTING.md +573 -0
  156. data/vendor/deps/debug/Gemfile +10 -0
  157. data/vendor/deps/debug/LICENSE.txt +22 -0
  158. data/vendor/deps/debug/README.md +996 -0
  159. data/vendor/deps/debug/Rakefile +57 -0
  160. data/vendor/deps/debug/TODO.md +23 -0
  161. data/vendor/deps/debug/debug.gemspec +33 -0
  162. data/vendor/deps/debug/exe/rdbg +53 -0
  163. data/vendor/deps/debug/ext/debug/Makefile +273 -0
  164. data/vendor/deps/debug/ext/debug/debug.c +228 -0
  165. data/vendor/deps/debug/ext/debug/debug_version.h +1 -0
  166. data/vendor/deps/debug/ext/debug/extconf.rb +27 -0
  167. data/vendor/deps/debug/ext/debug/iseq_collector.c +93 -0
  168. data/vendor/deps/debug/lib/debug/abbrev_command.rb +77 -0
  169. data/vendor/deps/debug/lib/debug/breakpoint.rb +556 -0
  170. data/vendor/deps/debug/lib/debug/client.rb +263 -0
  171. data/vendor/deps/debug/lib/debug/color.rb +123 -0
  172. data/vendor/deps/debug/lib/debug/config.rb +592 -0
  173. data/vendor/deps/debug/lib/debug/console.rb +224 -0
  174. data/vendor/deps/debug/lib/debug/dap_custom/traceInspector.rb +336 -0
  175. data/vendor/deps/debug/lib/debug/debug.bundle +0 -0
  176. data/vendor/deps/debug/lib/debug/frame_info.rb +190 -0
  177. data/vendor/deps/debug/lib/debug/irb_integration.rb +37 -0
  178. data/vendor/deps/debug/lib/debug/local.rb +115 -0
  179. data/vendor/deps/debug/lib/debug/open.rb +13 -0
  180. data/vendor/deps/debug/lib/debug/open_nonstop.rb +15 -0
  181. data/vendor/deps/debug/lib/debug/prelude.rb +50 -0
  182. data/vendor/deps/debug/lib/debug/server.rb +534 -0
  183. data/vendor/deps/debug/lib/debug/server_cdp.rb +1348 -0
  184. data/vendor/deps/debug/lib/debug/server_dap.rb +1108 -0
  185. data/vendor/deps/debug/lib/debug/session.rb +2667 -0
  186. data/vendor/deps/debug/lib/debug/source_repository.rb +150 -0
  187. data/vendor/deps/debug/lib/debug/start.rb +5 -0
  188. data/vendor/deps/debug/lib/debug/thread_client.rb +1457 -0
  189. data/vendor/deps/debug/lib/debug/tracer.rb +241 -0
  190. data/vendor/deps/debug/lib/debug/version.rb +5 -0
  191. data/vendor/deps/debug/lib/debug.rb +9 -0
  192. data/vendor/deps/debug/misc/README.md.erb +660 -0
  193. data/vendor/deps/listen/.github/release-drafter.yml +17 -0
  194. data/vendor/deps/listen/.github/workflows/development.yml +67 -0
  195. data/vendor/deps/listen/.github/workflows/push.yml +12 -0
  196. data/vendor/deps/listen/.gitignore +28 -0
  197. data/vendor/deps/listen/.rspec +3 -0
  198. data/vendor/deps/listen/.rubocop.yml +283 -0
  199. data/vendor/deps/listen/.yardopts +11 -0
  200. data/vendor/deps/listen/CHANGELOG.md +1 -0
  201. data/vendor/deps/listen/CONTRIBUTING.md +45 -0
  202. data/vendor/deps/listen/Gemfile +33 -0
  203. data/vendor/deps/listen/Guardfile +26 -0
  204. data/vendor/deps/listen/LICENSE.txt +22 -0
  205. data/vendor/deps/listen/README.md +490 -0
  206. data/vendor/deps/listen/Rakefile +154 -0
  207. data/vendor/deps/listen/bin/listen +11 -0
  208. data/vendor/deps/listen/lib/listen/adapter/base.rb +129 -0
  209. data/vendor/deps/listen/lib/listen/adapter/bsd.rb +104 -0
  210. data/vendor/deps/listen/lib/listen/adapter/config.rb +31 -0
  211. data/vendor/deps/listen/lib/listen/adapter/darwin.rb +77 -0
  212. data/vendor/deps/listen/lib/listen/adapter/linux.rb +108 -0
  213. data/vendor/deps/listen/lib/listen/adapter/polling.rb +40 -0
  214. data/vendor/deps/listen/lib/listen/adapter/windows.rb +96 -0
  215. data/vendor/deps/listen/lib/listen/adapter.rb +43 -0
  216. data/vendor/deps/listen/lib/listen/backend.rb +40 -0
  217. data/vendor/deps/listen/lib/listen/change.rb +69 -0
  218. data/vendor/deps/listen/lib/listen/cli.rb +65 -0
  219. data/vendor/deps/listen/lib/listen/directory.rb +93 -0
  220. data/vendor/deps/listen/lib/listen/error.rb +11 -0
  221. data/vendor/deps/listen/lib/listen/event/config.rb +39 -0
  222. data/vendor/deps/listen/lib/listen/event/loop.rb +92 -0
  223. data/vendor/deps/listen/lib/listen/event/processor.rb +128 -0
  224. data/vendor/deps/listen/lib/listen/event/queue.rb +52 -0
  225. data/vendor/deps/listen/lib/listen/file.rb +95 -0
  226. data/vendor/deps/listen/lib/listen/fsm.rb +131 -0
  227. data/vendor/deps/listen/lib/listen/listener/config.rb +41 -0
  228. data/vendor/deps/listen/lib/listen/listener.rb +136 -0
  229. data/vendor/deps/listen/lib/listen/logger.rb +65 -0
  230. data/vendor/deps/listen/lib/listen/monotonic_time.rb +27 -0
  231. data/vendor/deps/listen/lib/listen/options.rb +24 -0
  232. data/vendor/deps/listen/lib/listen/queue_optimizer.rb +129 -0
  233. data/vendor/deps/listen/lib/listen/record/entry.rb +66 -0
  234. data/vendor/deps/listen/lib/listen/record/symlink_detector.rb +47 -0
  235. data/vendor/deps/listen/lib/listen/record.rb +122 -0
  236. data/vendor/deps/listen/lib/listen/silencer/controller.rb +50 -0
  237. data/vendor/deps/listen/lib/listen/silencer.rb +106 -0
  238. data/vendor/deps/listen/lib/listen/thread.rb +54 -0
  239. data/vendor/deps/listen/lib/listen/version.rb +5 -0
  240. data/vendor/deps/listen/lib/listen.rb +47 -0
  241. data/vendor/deps/listen/listen.gemspec +40 -0
  242. data/vendor/deps/listen/spec/acceptance/listen_spec.rb +320 -0
  243. data/vendor/deps/listen/spec/lib/listen/adapter/base_spec.rb +101 -0
  244. data/vendor/deps/listen/spec/lib/listen/adapter/bsd_spec.rb +13 -0
  245. data/vendor/deps/listen/spec/lib/listen/adapter/config_spec.rb +122 -0
  246. data/vendor/deps/listen/spec/lib/listen/adapter/darwin_spec.rb +82 -0
  247. data/vendor/deps/listen/spec/lib/listen/adapter/linux_spec.rb +199 -0
  248. data/vendor/deps/listen/spec/lib/listen/adapter/polling_spec.rb +83 -0
  249. data/vendor/deps/listen/spec/lib/listen/adapter/windows_spec.rb +13 -0
  250. data/vendor/deps/listen/spec/lib/listen/adapter_spec.rb +69 -0
  251. data/vendor/deps/listen/spec/lib/listen/backend_spec.rb +82 -0
  252. data/vendor/deps/listen/spec/lib/listen/change_spec.rb +102 -0
  253. data/vendor/deps/listen/spec/lib/listen/cli_spec.rb +116 -0
  254. data/vendor/deps/listen/spec/lib/listen/directory_spec.rb +284 -0
  255. data/vendor/deps/listen/spec/lib/listen/event/config_spec.rb +33 -0
  256. data/vendor/deps/listen/spec/lib/listen/event/loop_spec.rb +118 -0
  257. data/vendor/deps/listen/spec/lib/listen/event/processor_spec.rb +250 -0
  258. data/vendor/deps/listen/spec/lib/listen/event/queue_spec.rb +118 -0
  259. data/vendor/deps/listen/spec/lib/listen/file_spec.rb +254 -0
  260. data/vendor/deps/listen/spec/lib/listen/fsm_spec.rb +147 -0
  261. data/vendor/deps/listen/spec/lib/listen/listener/config_spec.rb +29 -0
  262. data/vendor/deps/listen/spec/lib/listen/listener_spec.rb +321 -0
  263. data/vendor/deps/listen/spec/lib/listen/logger_spec.rb +212 -0
  264. data/vendor/deps/listen/spec/lib/listen/monotonic_time_spec.rb +58 -0
  265. data/vendor/deps/listen/spec/lib/listen/queue_optimizer_spec.rb +111 -0
  266. data/vendor/deps/listen/spec/lib/listen/record_spec.rb +424 -0
  267. data/vendor/deps/listen/spec/lib/listen/silencer/controller_spec.rb +97 -0
  268. data/vendor/deps/listen/spec/lib/listen/silencer_spec.rb +109 -0
  269. data/vendor/deps/listen/spec/lib/listen/thread_spec.rb +133 -0
  270. data/vendor/deps/listen/spec/lib/listen_spec.rb +25 -0
  271. data/vendor/deps/listen/spec/spec_helper.rb +49 -0
  272. data/vendor/deps/listen/spec/support/acceptance_helper.rb +260 -0
  273. data/vendor/deps/listen/spec/support/fixtures_helper.rb +32 -0
  274. data/vendor/deps/listen/spec/support/platform_helper.rb +17 -0
  275. data/vendor/deps/observer/.github/dependabot.yml +6 -0
  276. data/vendor/deps/observer/.github/workflows/test.yml +33 -0
  277. data/vendor/deps/observer/.gitignore +8 -0
  278. data/vendor/deps/observer/BSDL +22 -0
  279. data/vendor/deps/observer/COPYING +56 -0
  280. data/vendor/deps/observer/Gemfile +9 -0
  281. data/vendor/deps/observer/README.md +139 -0
  282. data/vendor/deps/observer/Rakefile +10 -0
  283. data/vendor/deps/observer/bin/console +14 -0
  284. data/vendor/deps/observer/bin/setup +8 -0
  285. data/vendor/deps/observer/lib/observer.rb +229 -0
  286. data/vendor/deps/observer/observer.gemspec +32 -0
  287. data/vendor/deps/observer/test/test_observer.rb +66 -0
  288. data/vendor/deps/webrick/.gitignore +9 -0
  289. data/vendor/deps/webrick/Gemfile +3 -0
  290. data/vendor/deps/webrick/LICENSE.txt +22 -0
  291. data/vendor/deps/webrick/README.md +61 -0
  292. data/vendor/deps/webrick/Rakefile +10 -0
  293. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  294. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  295. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  296. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  297. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  298. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  299. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  300. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  301. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  302. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  303. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  304. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  305. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  306. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  307. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  308. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  309. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  310. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  311. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  312. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  313. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  314. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  315. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  316. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  317. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  318. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  319. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  320. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  321. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  322. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  323. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  324. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  325. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  326. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  327. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  328. data/vendor/deps/webrick/webrick.gemspec +74 -0
  329. metadata +412 -0
@@ -0,0 +1,215 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # ssl.rb -- SSL/TLS enhancement for GenericServer
4
+ #
5
+ # Copyright (c) 2003 GOTOU Yuuzou All rights reserved.
6
+ #
7
+ # $Id$
8
+
9
+ require 'webrick'
10
+ require 'openssl'
11
+
12
+ module WEBrick
13
+ module Config
14
+ svrsoft = General[:ServerSoftware]
15
+ osslv = ::OpenSSL::OPENSSL_VERSION.split[1]
16
+
17
+ ##
18
+ # Default SSL server configuration.
19
+ #
20
+ # WEBrick can automatically create a self-signed certificate if
21
+ # <code>:SSLCertName</code> is set. For more information on the various
22
+ # SSL options see OpenSSL::SSL::SSLContext.
23
+ #
24
+ # :ServerSoftware ::
25
+ # The server software name used in the Server: header.
26
+ # :SSLEnable :: false,
27
+ # Enable SSL for this server. Defaults to false.
28
+ # :SSLCertificate ::
29
+ # The SSL certificate for the server.
30
+ # :SSLPrivateKey ::
31
+ # The SSL private key for the server certificate.
32
+ # :SSLClientCA :: nil,
33
+ # Array of certificates that will be sent to the client.
34
+ # :SSLExtraChainCert :: nil,
35
+ # Array of certificates that will be added to the certificate chain
36
+ # :SSLCACertificateFile :: nil,
37
+ # Path to a CA certificate file
38
+ # :SSLCACertificatePath :: nil,
39
+ # Path to a directory containing CA certificates
40
+ # :SSLCertificateStore :: nil,
41
+ # OpenSSL::X509::Store used for certificate validation of the client
42
+ # :SSLTmpDhCallback :: nil,
43
+ # Callback invoked when DH parameters are required.
44
+ # :SSLVerifyClient ::
45
+ # Sets whether the client is verified. This defaults to VERIFY_NONE
46
+ # which is typical for an HTTPS server.
47
+ # :SSLVerifyDepth ::
48
+ # Number of CA certificates to walk when verifying a certificate chain
49
+ # :SSLVerifyCallback ::
50
+ # Custom certificate verification callback
51
+ # :SSLServerNameCallback::
52
+ # Custom servername indication callback
53
+ # :SSLTimeout ::
54
+ # Maximum session lifetime
55
+ # :SSLOptions ::
56
+ # Various SSL options
57
+ # :SSLCiphers ::
58
+ # Ciphers to be used
59
+ # :SSLStartImmediately ::
60
+ # Immediately start SSL upon connection? Defaults to true
61
+ # :SSLCertName ::
62
+ # SSL certificate name. Must be set to enable automatic certificate
63
+ # creation.
64
+ # :SSLCertComment ::
65
+ # Comment used during automatic certificate creation.
66
+
67
+ SSL = {
68
+ :ServerSoftware => "#{svrsoft} OpenSSL/#{osslv}",
69
+ :SSLEnable => false,
70
+ :SSLCertificate => nil,
71
+ :SSLPrivateKey => nil,
72
+ :SSLClientCA => nil,
73
+ :SSLExtraChainCert => nil,
74
+ :SSLCACertificateFile => nil,
75
+ :SSLCACertificatePath => nil,
76
+ :SSLCertificateStore => nil,
77
+ :SSLTmpDhCallback => nil,
78
+ :SSLVerifyClient => ::OpenSSL::SSL::VERIFY_NONE,
79
+ :SSLVerifyDepth => nil,
80
+ :SSLVerifyCallback => nil, # custom verification
81
+ :SSLTimeout => nil,
82
+ :SSLOptions => nil,
83
+ :SSLCiphers => nil,
84
+ :SSLStartImmediately => true,
85
+ # Must specify if you use auto generated certificate.
86
+ :SSLCertName => nil,
87
+ :SSLCertComment => "Generated by Ruby/OpenSSL"
88
+ }
89
+ General.update(SSL)
90
+ end
91
+
92
+ module Utils
93
+ ##
94
+ # Creates a self-signed certificate with the given number of +bits+,
95
+ # the issuer +cn+ and a +comment+ to be stored in the certificate.
96
+
97
+ def create_self_signed_cert(bits, cn, comment)
98
+ rsa = OpenSSL::PKey::RSA.new(bits){|p, n|
99
+ case p
100
+ when 0; $stderr.putc "." # BN_generate_prime
101
+ when 1; $stderr.putc "+" # BN_generate_prime
102
+ when 2; $stderr.putc "*" # searching good prime,
103
+ # n = #of try,
104
+ # but also data from BN_generate_prime
105
+ when 3; $stderr.putc "\n" # found good prime, n==0 - p, n==1 - q,
106
+ # but also data from BN_generate_prime
107
+ else; $stderr.putc "*" # BN_generate_prime
108
+ end
109
+ }
110
+ cert = OpenSSL::X509::Certificate.new
111
+ cert.version = 2
112
+ cert.serial = 1
113
+ name = (cn.kind_of? String) ? OpenSSL::X509::Name.parse(cn)
114
+ : OpenSSL::X509::Name.new(cn)
115
+ cert.subject = name
116
+ cert.issuer = name
117
+ cert.not_before = Time.now
118
+ cert.not_after = Time.now + (365*24*60*60)
119
+ cert.public_key = rsa.public_key
120
+
121
+ ef = OpenSSL::X509::ExtensionFactory.new(nil,cert)
122
+ ef.issuer_certificate = cert
123
+ cert.extensions = [
124
+ ef.create_extension("basicConstraints","CA:FALSE"),
125
+ ef.create_extension("keyUsage", "keyEncipherment, digitalSignature, keyAgreement, dataEncipherment"),
126
+ ef.create_extension("subjectKeyIdentifier", "hash"),
127
+ ef.create_extension("extendedKeyUsage", "serverAuth"),
128
+ ef.create_extension("nsComment", comment),
129
+ ]
130
+ aki = ef.create_extension("authorityKeyIdentifier",
131
+ "keyid:always,issuer:always")
132
+ cert.add_extension(aki)
133
+ cert.sign(rsa, "SHA256")
134
+
135
+ return [ cert, rsa ]
136
+ end
137
+ module_function :create_self_signed_cert
138
+ end
139
+
140
+ ##
141
+ #--
142
+ # Updates WEBrick::GenericServer with SSL functionality
143
+
144
+ class GenericServer
145
+
146
+ ##
147
+ # SSL context for the server when run in SSL mode
148
+
149
+ def ssl_context # :nodoc:
150
+ @ssl_context ||= begin
151
+ if @config[:SSLEnable]
152
+ ssl_context = setup_ssl_context(@config)
153
+ @logger.info("\n" + @config[:SSLCertificate].to_text)
154
+ ssl_context
155
+ end
156
+ end
157
+ end
158
+
159
+ undef listen
160
+
161
+ ##
162
+ # Updates +listen+ to enable SSL when the SSL configuration is active.
163
+
164
+ def listen(address, port) # :nodoc:
165
+ listeners = Utils::create_listeners(address, port)
166
+ if @config[:SSLEnable]
167
+ listeners.collect!{|svr|
168
+ ssvr = ::OpenSSL::SSL::SSLServer.new(svr, ssl_context)
169
+ ssvr.start_immediately = @config[:SSLStartImmediately]
170
+ ssvr
171
+ }
172
+ end
173
+ @listeners += listeners
174
+ setup_shutdown_pipe
175
+ end
176
+
177
+ ##
178
+ # Sets up an SSL context for +config+
179
+
180
+ def setup_ssl_context(config) # :nodoc:
181
+ unless config[:SSLCertificate]
182
+ cn = config[:SSLCertName]
183
+ comment = config[:SSLCertComment]
184
+ cert, key = Utils::create_self_signed_cert(2048, cn, comment)
185
+ config[:SSLCertificate] = cert
186
+ config[:SSLPrivateKey] = key
187
+ end
188
+ ctx = OpenSSL::SSL::SSLContext.new
189
+ ctx.key = config[:SSLPrivateKey]
190
+ ctx.cert = config[:SSLCertificate]
191
+ ctx.client_ca = config[:SSLClientCA]
192
+ ctx.extra_chain_cert = config[:SSLExtraChainCert]
193
+ ctx.ca_file = config[:SSLCACertificateFile]
194
+ ctx.ca_path = config[:SSLCACertificatePath]
195
+ ctx.cert_store = config[:SSLCertificateStore]
196
+ ctx.tmp_dh_callback = config[:SSLTmpDhCallback]
197
+ ctx.verify_mode = config[:SSLVerifyClient]
198
+ ctx.verify_depth = config[:SSLVerifyDepth]
199
+ ctx.verify_callback = config[:SSLVerifyCallback]
200
+ ctx.servername_cb = config[:SSLServerNameCallback] || proc { |args| ssl_servername_callback(*args) }
201
+ ctx.timeout = config[:SSLTimeout]
202
+ ctx.options = config[:SSLOptions]
203
+ ctx.ciphers = config[:SSLCiphers]
204
+ ctx
205
+ end
206
+
207
+ ##
208
+ # ServerNameIndication callback
209
+
210
+ def ssl_servername_callback(sslsocket, hostname = nil)
211
+ # default
212
+ end
213
+
214
+ end
215
+ end
@@ -0,0 +1,265 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # utils.rb -- Miscellaneous utilities
4
+ #
5
+ # Author: IPR -- Internet Programming with Ruby -- writers
6
+ # Copyright (c) 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
7
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
8
+ # reserved.
9
+ #
10
+ # $IPR: utils.rb,v 1.10 2003/02/16 22:22:54 gotoyuzo Exp $
11
+
12
+ require 'socket'
13
+ require 'io/nonblock'
14
+ require 'etc'
15
+
16
+ module WEBrick
17
+ module Utils
18
+ ##
19
+ # Sets IO operations on +io+ to be non-blocking
20
+ def set_non_blocking(io)
21
+ io.nonblock = true if io.respond_to?(:nonblock=)
22
+ end
23
+ module_function :set_non_blocking
24
+
25
+ ##
26
+ # Sets the close on exec flag for +io+
27
+ def set_close_on_exec(io)
28
+ io.close_on_exec = true if io.respond_to?(:close_on_exec=)
29
+ end
30
+ module_function :set_close_on_exec
31
+
32
+ ##
33
+ # Changes the process's uid and gid to the ones of +user+
34
+ def su(user)
35
+ if pw = Etc.getpwnam(user)
36
+ Process::initgroups(user, pw.gid)
37
+ Process::Sys::setgid(pw.gid)
38
+ Process::Sys::setuid(pw.uid)
39
+ else
40
+ warn("WEBrick::Utils::su doesn't work on this platform", uplevel: 1)
41
+ end
42
+ end
43
+ module_function :su
44
+
45
+ ##
46
+ # The server hostname
47
+ def getservername
48
+ Socket::gethostname
49
+ end
50
+ module_function :getservername
51
+
52
+ ##
53
+ # Creates TCP server sockets bound to +address+:+port+ and returns them.
54
+ #
55
+ # It will create IPV4 and IPV6 sockets on all interfaces.
56
+ def create_listeners(address, port)
57
+ unless port
58
+ raise ArgumentError, "must specify port"
59
+ end
60
+ sockets = Socket.tcp_server_sockets(address, port)
61
+ sockets = sockets.map {|s|
62
+ s.autoclose = false
63
+ ts = TCPServer.for_fd(s.fileno)
64
+ s.close
65
+ ts
66
+ }
67
+ return sockets
68
+ end
69
+ module_function :create_listeners
70
+
71
+ ##
72
+ # Characters used to generate random strings
73
+ RAND_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
74
+ "0123456789" +
75
+ "abcdefghijklmnopqrstuvwxyz"
76
+
77
+ ##
78
+ # Generates a random string of length +len+
79
+ def random_string(len)
80
+ rand_max = RAND_CHARS.bytesize
81
+ ret = +""
82
+ len.times{ ret << RAND_CHARS[rand(rand_max)] }
83
+ ret
84
+ end
85
+ module_function :random_string
86
+
87
+ ###########
88
+
89
+ require "timeout"
90
+ require "singleton"
91
+
92
+ ##
93
+ # Class used to manage timeout handlers across multiple threads.
94
+ #
95
+ # Timeout handlers should be managed by using the class methods which are
96
+ # synchronized.
97
+ #
98
+ # id = TimeoutHandler.register(10, Timeout::Error)
99
+ # begin
100
+ # sleep 20
101
+ # puts 'foo'
102
+ # ensure
103
+ # TimeoutHandler.cancel(id)
104
+ # end
105
+ #
106
+ # will raise Timeout::Error
107
+ #
108
+ # id = TimeoutHandler.register(10, Timeout::Error)
109
+ # begin
110
+ # sleep 5
111
+ # puts 'foo'
112
+ # ensure
113
+ # TimeoutHandler.cancel(id)
114
+ # end
115
+ #
116
+ # will print 'foo'
117
+ #
118
+ class TimeoutHandler
119
+ include Singleton
120
+
121
+ ##
122
+ # Mutex used to synchronize access across threads
123
+ TimeoutMutex = Thread::Mutex.new # :nodoc:
124
+
125
+ ##
126
+ # Registers a new timeout handler
127
+ #
128
+ # +time+:: Timeout in seconds
129
+ # +exception+:: Exception to raise when timeout elapsed
130
+ def TimeoutHandler.register(seconds, exception)
131
+ at = Process.clock_gettime(Process::CLOCK_MONOTONIC) + seconds
132
+ instance.register(Thread.current, at, exception)
133
+ end
134
+
135
+ ##
136
+ # Cancels the timeout handler +id+
137
+ def TimeoutHandler.cancel(id)
138
+ instance.cancel(Thread.current, id)
139
+ end
140
+
141
+ def self.terminate
142
+ instance.terminate
143
+ end
144
+
145
+ ##
146
+ # Creates a new TimeoutHandler. You should use ::register and ::cancel
147
+ # instead of creating the timeout handler directly.
148
+ def initialize
149
+ TimeoutMutex.synchronize{
150
+ @timeout_info = Hash.new
151
+ }
152
+ @queue = Thread::Queue.new
153
+ @watcher = nil
154
+ end
155
+
156
+ # :nodoc:
157
+ private \
158
+ def watch
159
+ to_interrupt = []
160
+ while true
161
+ now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
162
+ wakeup = nil
163
+ to_interrupt.clear
164
+ TimeoutMutex.synchronize{
165
+ @timeout_info.each {|thread, ary|
166
+ next unless ary
167
+ ary.each{|info|
168
+ time, exception = *info
169
+ if time < now
170
+ to_interrupt.push [thread, info.object_id, exception]
171
+ elsif !wakeup || time < wakeup
172
+ wakeup = time
173
+ end
174
+ }
175
+ }
176
+ }
177
+ to_interrupt.each {|arg| interrupt(*arg)}
178
+ if !wakeup
179
+ @queue.pop
180
+ elsif (wakeup -= now) > 0
181
+ begin
182
+ (th = Thread.start {@queue.pop}).join(wakeup)
183
+ ensure
184
+ th&.kill&.join
185
+ end
186
+ end
187
+ @queue.clear
188
+ end
189
+ end
190
+
191
+ # :nodoc:
192
+ private \
193
+ def watcher
194
+ (w = @watcher)&.alive? and return w # usual case
195
+ TimeoutMutex.synchronize{
196
+ (w = @watcher)&.alive? and next w # pathological check
197
+ @watcher = Thread.start(&method(:watch))
198
+ }
199
+ end
200
+
201
+ ##
202
+ # Interrupts the timeout handler +id+ and raises +exception+
203
+ def interrupt(thread, id, exception)
204
+ if cancel(thread, id) && thread.alive?
205
+ thread.raise(exception, "execution timeout")
206
+ end
207
+ end
208
+
209
+ ##
210
+ # Registers a new timeout handler
211
+ #
212
+ # +time+:: Timeout in seconds
213
+ # +exception+:: Exception to raise when timeout elapsed
214
+ def register(thread, time, exception)
215
+ info = nil
216
+ TimeoutMutex.synchronize{
217
+ (@timeout_info[thread] ||= []) << (info = [time, exception])
218
+ }
219
+ @queue.push nil
220
+ watcher
221
+ return info.object_id
222
+ end
223
+
224
+ ##
225
+ # Cancels the timeout handler +id+
226
+ def cancel(thread, id)
227
+ TimeoutMutex.synchronize{
228
+ if ary = @timeout_info[thread]
229
+ ary.delete_if{|info| info.object_id == id }
230
+ if ary.empty?
231
+ @timeout_info.delete(thread)
232
+ end
233
+ return true
234
+ end
235
+ return false
236
+ }
237
+ end
238
+
239
+ ##
240
+ def terminate
241
+ TimeoutMutex.synchronize{
242
+ @timeout_info.clear
243
+ @watcher&.kill&.join
244
+ }
245
+ end
246
+ end
247
+
248
+ ##
249
+ # Executes the passed block and raises +exception+ if execution takes more
250
+ # than +seconds+.
251
+ #
252
+ # If +seconds+ is zero or nil, simply executes the block
253
+ def timeout(seconds, exception=Timeout::Error)
254
+ return yield if seconds.nil? or seconds.zero?
255
+ # raise ThreadError, "timeout within critical session" if Thread.critical
256
+ id = TimeoutHandler.register(seconds, exception)
257
+ begin
258
+ yield(seconds)
259
+ ensure
260
+ TimeoutHandler.cancel(id)
261
+ end
262
+ end
263
+ module_function :timeout
264
+ end
265
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+ #--
3
+ # version.rb -- version and release date
4
+ #
5
+ # Author: IPR -- Internet Programming with Ruby -- writers
6
+ # Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
7
+ # Copyright (c) 2003 Internet Programming with Ruby writers. All rights
8
+ # reserved.
9
+ #
10
+ # $IPR: version.rb,v 1.74 2003/07/22 19:20:43 gotoyuzo Exp $
11
+
12
+ module WEBrick
13
+
14
+ ##
15
+ # The WEBrick version
16
+
17
+ VERSION = "1.7.0"
18
+ end