itsi-server 0.1.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +4487 -0
  3. data/Cargo.toml +7 -0
  4. data/README.md +6 -0
  5. data/Rakefile +7 -4
  6. data/exe/itsi +152 -46
  7. data/ext/itsi_acme/Cargo.toml +86 -0
  8. data/ext/itsi_acme/examples/high_level.rs +63 -0
  9. data/ext/itsi_acme/examples/high_level_warp.rs +52 -0
  10. data/ext/itsi_acme/examples/low_level.rs +87 -0
  11. data/ext/itsi_acme/examples/low_level_axum.rs +66 -0
  12. data/ext/itsi_acme/src/acceptor.rs +81 -0
  13. data/ext/itsi_acme/src/acme.rs +354 -0
  14. data/ext/itsi_acme/src/axum.rs +86 -0
  15. data/ext/itsi_acme/src/cache.rs +39 -0
  16. data/ext/itsi_acme/src/caches/boxed.rs +80 -0
  17. data/ext/itsi_acme/src/caches/composite.rs +69 -0
  18. data/ext/itsi_acme/src/caches/dir.rs +106 -0
  19. data/ext/itsi_acme/src/caches/mod.rs +11 -0
  20. data/ext/itsi_acme/src/caches/no.rs +78 -0
  21. data/ext/itsi_acme/src/caches/test.rs +136 -0
  22. data/ext/itsi_acme/src/config.rs +172 -0
  23. data/ext/itsi_acme/src/https_helper.rs +69 -0
  24. data/ext/itsi_acme/src/incoming.rs +142 -0
  25. data/ext/itsi_acme/src/jose.rs +161 -0
  26. data/ext/itsi_acme/src/lib.rs +142 -0
  27. data/ext/itsi_acme/src/resolver.rs +59 -0
  28. data/ext/itsi_acme/src/state.rs +424 -0
  29. data/ext/itsi_error/Cargo.toml +3 -0
  30. data/ext/itsi_error/src/lib.rs +98 -24
  31. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/common.rs +355 -0
  32. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/dynamic.rs +276 -0
  33. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/macros.rs +49 -0
  34. data/ext/itsi_error/target/debug/build/rb-sys-49f554618693db24/out/bindings-0.9.110-mri-arm64-darwin23-3.4.2.rs +8865 -0
  35. data/ext/itsi_error/target/debug/incremental/itsi_error-1mmt5sux7jb0i/s-h510z7m8v9-0bxu7yd.lock +0 -0
  36. data/ext/itsi_error/target/debug/incremental/itsi_error-2vn3jey74oiw0/s-h5113n0e7e-1v5qzs6.lock +0 -0
  37. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510ykifhe-0tbnep2.lock +0 -0
  38. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510yyocpj-0tz7ug7.lock +0 -0
  39. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510z0xc8g-14ol18k.lock +0 -0
  40. data/ext/itsi_error/target/debug/incremental/itsi_error-3g5qf4y7d54uj/s-h5113n0e7d-1trk8on.lock +0 -0
  41. data/ext/itsi_error/target/debug/incremental/itsi_error-3lpfftm45d3e2/s-h510z7m8r3-1pxp20o.lock +0 -0
  42. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510ykifek-1uxasnk.lock +0 -0
  43. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510yyocki-11u37qm.lock +0 -0
  44. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510z0xc93-0pmy0zm.lock +0 -0
  45. data/ext/itsi_instrument_entry/Cargo.toml +15 -0
  46. data/ext/itsi_instrument_entry/src/lib.rs +31 -0
  47. data/ext/itsi_rb_helpers/Cargo.toml +3 -0
  48. data/ext/itsi_rb_helpers/src/heap_value.rs +139 -0
  49. data/ext/itsi_rb_helpers/src/lib.rs +141 -10
  50. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/common.rs +355 -0
  51. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/dynamic.rs +276 -0
  52. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/macros.rs +49 -0
  53. data/ext/itsi_rb_helpers/target/debug/build/rb-sys-eb9ed4ff3a60f995/out/bindings-0.9.110-mri-arm64-darwin23-3.4.2.rs +8865 -0
  54. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-040pxg6yhb3g3/s-h5113n7a1b-03bwlt4.lock +0 -0
  55. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-131g1u4dzkt1a/s-h51113xnh3-1eik1ip.lock +0 -0
  56. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-131g1u4dzkt1a/s-h5111704jj-0g4rj8x.lock +0 -0
  57. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-1q2d3drtxrzs5/s-h5113n79yl-0bxcqc5.lock +0 -0
  58. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-374a9h7ovycj0/s-h51113xoox-10de2hp.lock +0 -0
  59. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-374a9h7ovycj0/s-h5111704w7-0vdq7gq.lock +0 -0
  60. data/ext/itsi_scheduler/Cargo.toml +24 -0
  61. data/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs +56 -0
  62. data/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs +44 -0
  63. data/ext/itsi_scheduler/src/itsi_scheduler/timer.rs +44 -0
  64. data/ext/itsi_scheduler/src/itsi_scheduler.rs +314 -0
  65. data/ext/itsi_scheduler/src/lib.rs +39 -0
  66. data/ext/itsi_server/Cargo.lock +2956 -0
  67. data/ext/itsi_server/Cargo.toml +75 -14
  68. data/ext/itsi_server/extconf.rb +1 -1
  69. data/ext/itsi_server/src/default_responses/html/401.html +68 -0
  70. data/ext/itsi_server/src/default_responses/html/403.html +68 -0
  71. data/ext/itsi_server/src/default_responses/html/404.html +68 -0
  72. data/ext/itsi_server/src/default_responses/html/413.html +71 -0
  73. data/ext/itsi_server/src/default_responses/html/429.html +68 -0
  74. data/ext/itsi_server/src/default_responses/html/500.html +71 -0
  75. data/ext/itsi_server/src/default_responses/html/502.html +71 -0
  76. data/ext/itsi_server/src/default_responses/html/503.html +68 -0
  77. data/ext/itsi_server/src/default_responses/html/504.html +69 -0
  78. data/ext/itsi_server/src/default_responses/html/index.html +238 -0
  79. data/ext/itsi_server/src/default_responses/json/401.json +6 -0
  80. data/ext/itsi_server/src/default_responses/json/403.json +6 -0
  81. data/ext/itsi_server/src/default_responses/json/404.json +6 -0
  82. data/ext/itsi_server/src/default_responses/json/413.json +6 -0
  83. data/ext/itsi_server/src/default_responses/json/429.json +6 -0
  84. data/ext/itsi_server/src/default_responses/json/500.json +6 -0
  85. data/ext/itsi_server/src/default_responses/json/502.json +6 -0
  86. data/ext/itsi_server/src/default_responses/json/503.json +6 -0
  87. data/ext/itsi_server/src/default_responses/json/504.json +6 -0
  88. data/ext/itsi_server/src/default_responses/mod.rs +11 -0
  89. data/ext/itsi_server/src/env.rs +43 -0
  90. data/ext/itsi_server/src/lib.rs +133 -40
  91. data/ext/itsi_server/src/prelude.rs +2 -0
  92. data/ext/itsi_server/src/ruby_types/itsi_body_proxy/big_bytes.rs +109 -0
  93. data/ext/itsi_server/src/ruby_types/itsi_body_proxy/mod.rs +143 -0
  94. data/ext/itsi_server/src/ruby_types/itsi_grpc_call.rs +344 -0
  95. data/ext/itsi_server/src/ruby_types/itsi_grpc_response_stream/mod.rs +264 -0
  96. data/ext/itsi_server/src/ruby_types/itsi_http_request.rs +362 -0
  97. data/ext/itsi_server/src/ruby_types/itsi_http_response.rs +391 -0
  98. data/ext/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +233 -0
  99. data/ext/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +565 -0
  100. data/ext/itsi_server/src/ruby_types/itsi_server.rs +86 -0
  101. data/ext/itsi_server/src/ruby_types/mod.rs +48 -0
  102. data/ext/itsi_server/src/server/binds/bind.rs +204 -0
  103. data/ext/itsi_server/src/server/binds/bind_protocol.rs +37 -0
  104. data/ext/itsi_server/src/server/binds/listener.rs +444 -0
  105. data/ext/itsi_server/src/server/binds/mod.rs +4 -0
  106. data/ext/itsi_server/src/server/binds/tls/locked_dir_cache.rs +132 -0
  107. data/ext/itsi_server/src/server/binds/tls.rs +278 -0
  108. data/ext/itsi_server/src/server/byte_frame.rs +32 -0
  109. data/ext/itsi_server/src/server/http_message_types.rs +97 -0
  110. data/ext/itsi_server/src/server/io_stream.rs +105 -0
  111. data/ext/itsi_server/src/server/lifecycle_event.rs +12 -0
  112. data/ext/itsi_server/src/server/middleware_stack/middleware.rs +170 -0
  113. data/ext/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs +63 -0
  114. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs +94 -0
  115. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +94 -0
  116. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +343 -0
  117. data/ext/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs +151 -0
  118. data/ext/itsi_server/src/server/middleware_stack/middlewares/compression.rs +316 -0
  119. data/ext/itsi_server/src/server/middleware_stack/middlewares/cors.rs +301 -0
  120. data/ext/itsi_server/src/server/middleware_stack/middlewares/csp.rs +193 -0
  121. data/ext/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs +64 -0
  122. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +192 -0
  123. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +171 -0
  124. data/ext/itsi_server/src/server/middleware_stack/middlewares/etag.rs +198 -0
  125. data/ext/itsi_server/src/server/middleware_stack/middlewares/header_interpretation.rs +82 -0
  126. data/ext/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs +209 -0
  127. data/ext/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +82 -0
  128. data/ext/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +47 -0
  129. data/ext/itsi_server/src/server/middleware_stack/middlewares/mod.rs +116 -0
  130. data/ext/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +411 -0
  131. data/ext/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +142 -0
  132. data/ext/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +55 -0
  133. data/ext/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs +54 -0
  134. data/ext/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs +51 -0
  135. data/ext/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +126 -0
  136. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +187 -0
  137. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_response.rs +55 -0
  138. data/ext/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +173 -0
  139. data/ext/itsi_server/src/server/middleware_stack/middlewares/token_source.rs +31 -0
  140. data/ext/itsi_server/src/server/middleware_stack/mod.rs +381 -0
  141. data/ext/itsi_server/src/server/mod.rs +13 -5
  142. data/ext/itsi_server/src/server/process_worker.rs +247 -0
  143. data/ext/itsi_server/src/server/redirect_type.rs +26 -0
  144. data/ext/itsi_server/src/server/request_job.rs +11 -0
  145. data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +354 -0
  146. data/ext/itsi_server/src/server/serve_strategy/mod.rs +30 -0
  147. data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +481 -0
  148. data/ext/itsi_server/src/server/signal.rs +77 -0
  149. data/ext/itsi_server/src/server/size_limited_incoming.rs +107 -0
  150. data/ext/itsi_server/src/server/thread_worker.rs +479 -0
  151. data/ext/itsi_server/src/services/cache_store.rs +74 -0
  152. data/ext/itsi_server/src/services/itsi_http_service.rs +257 -0
  153. data/ext/itsi_server/src/services/mime_types.rs +1416 -0
  154. data/ext/itsi_server/src/services/mod.rs +6 -0
  155. data/ext/itsi_server/src/services/password_hasher.rs +83 -0
  156. data/ext/itsi_server/src/services/rate_limiter.rs +580 -0
  157. data/ext/itsi_server/src/services/static_file_server.rs +1340 -0
  158. data/ext/itsi_tracing/Cargo.toml +5 -0
  159. data/ext/itsi_tracing/src/lib.rs +366 -7
  160. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-0994n8rpvvt9m/s-h510hfz1f6-1kbycmq.lock +0 -0
  161. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-0bob7bf4yq34i/s-h5113125h5-0lh4rag.lock +0 -0
  162. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2fcodulrxbbxo/s-h510h2infk-0hp5kjw.lock +0 -0
  163. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2iak63r1woi1l/s-h510h2in4q-0kxfzw1.lock +0 -0
  164. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2kk4qj9gn5dg2/s-h5113124kv-0enwon2.lock +0 -0
  165. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2mwo0yas7dtw4/s-h510hfz1ha-1udgpei.lock +0 -0
  166. data/lib/itsi/http_request/response_status_shortcodes.rb +76 -0
  167. data/lib/itsi/http_request.rb +218 -0
  168. data/lib/itsi/http_response.rb +42 -0
  169. data/lib/itsi/passfile.rb +108 -0
  170. data/lib/itsi/server/config/config_helpers.rb +105 -0
  171. data/lib/itsi/server/config/dsl.rb +211 -0
  172. data/lib/itsi/server/config/known_paths/KitchensinkDirectories.txt +2346 -0
  173. data/lib/itsi/server/config/known_paths/Randomfiles.txt +24 -0
  174. data/lib/itsi/server/config/known_paths/UnixDotfiles.txt +52 -0
  175. data/lib/itsi/server/config/known_paths/backdoors/ASP_CommonBackdoors.txt +29 -0
  176. data/lib/itsi/server/config/known_paths/backdoors/bot_control_panels.txt +1668 -0
  177. data/lib/itsi/server/config/known_paths/backdoors/shells.txt +1167 -0
  178. data/lib/itsi/server/config/known_paths/cgi/CGI_HTTP_POST.txt +7 -0
  179. data/lib/itsi/server/config/known_paths/cgi/CGI_HTTP_POST_Windows.txt +6 -0
  180. data/lib/itsi/server/config/known_paths/cgi/CGI_Microsoft.txt +79 -0
  181. data/lib/itsi/server/config/known_paths/cgi/CGI_XPlatform.txt +3948 -0
  182. data/lib/itsi/server/config/known_paths/cms/README.md +5 -0
  183. data/lib/itsi/server/config/known_paths/cms/drupal_plugins.txt +6320 -0
  184. data/lib/itsi/server/config/known_paths/cms/drupal_themes.txt +828 -0
  185. data/lib/itsi/server/config/known_paths/cms/joomla_plugins.txt +224 -0
  186. data/lib/itsi/server/config/known_paths/cms/joomla_themes.txt +30 -0
  187. data/lib/itsi/server/config/known_paths/cms/php-nuke.txt +2142 -0
  188. data/lib/itsi/server/config/known_paths/cms/wordpress.txt +1566 -0
  189. data/lib/itsi/server/config/known_paths/cms/wp_common_theme_files.txt +46 -0
  190. data/lib/itsi/server/config/known_paths/cms/wp_plugins.txt +13366 -0
  191. data/lib/itsi/server/config/known_paths/cms/wp_plugins_full.txt +68662 -0
  192. data/lib/itsi/server/config/known_paths/cms/wp_plugins_top225.txt +225 -0
  193. data/lib/itsi/server/config/known_paths/cms/wp_themes.readme +12 -0
  194. data/lib/itsi/server/config/known_paths/cms/wp_themes.txt +7336 -0
  195. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/3CharExtBrute.txt +17576 -0
  196. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/CommonWebExtensions.txt +80 -0
  197. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Backup.txt +14 -0
  198. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Common.txt +865 -0
  199. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Compressed.txt +186 -0
  200. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Mostcommon.txt +30 -0
  201. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/Extensions.Skipfish.txt +93 -0
  202. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/WordlistSkipfish.txt +1918 -0
  203. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/copy_of.txt +8 -0
  204. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-directories-lowercase.txt +56180 -0
  205. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-directories.txt +62290 -0
  206. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-extensions-lowercase.txt +2367 -0
  207. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-extensions.txt +2450 -0
  208. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-files-lowercase.txt +35323 -0
  209. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-files.txt +37037 -0
  210. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-words-lowercase.txt +107982 -0
  211. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-large-words.txt +119600 -0
  212. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-directories-lowercase.txt +26593 -0
  213. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-directories.txt +30009 -0
  214. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-extensions-lowercase.txt +1233 -0
  215. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-extensions.txt +1289 -0
  216. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-files-lowercase.txt +16243 -0
  217. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-files.txt +17128 -0
  218. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-words-lowercase.txt +56293 -0
  219. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-medium-words.txt +63087 -0
  220. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-directories-lowercase.txt +17776 -0
  221. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-directories.txt +20122 -0
  222. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-extensions-lowercase.txt +914 -0
  223. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-extensions.txt +963 -0
  224. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-files-lowercase.txt +10848 -0
  225. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-files.txt +11424 -0
  226. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-words-lowercase.txt +38267 -0
  227. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/raft-small-words.txt +43003 -0
  228. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/spanish.txt +445 -0
  229. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/test_demo.txt +36 -0
  230. data/lib/itsi/server/config/known_paths/filename-dirname-bruteforce/upload_variants.txt +44 -0
  231. data/lib/itsi/server/config/known_paths/login-file-locations/Logins.txt +71 -0
  232. data/lib/itsi/server/config/known_paths/login-file-locations/cfm.txt +294 -0
  233. data/lib/itsi/server/config/known_paths/login-file-locations/html.txt +295 -0
  234. data/lib/itsi/server/config/known_paths/login-file-locations/jsp.txt +294 -0
  235. data/lib/itsi/server/config/known_paths/login-file-locations/php.txt +294 -0
  236. data/lib/itsi/server/config/known_paths/login-file-locations/windows-asp.txt +294 -0
  237. data/lib/itsi/server/config/known_paths/login-file-locations/windows-aspx.txt +294 -0
  238. data/lib/itsi/server/config/known_paths/password-file-locations/Passwords.txt +47 -0
  239. data/lib/itsi/server/config/known_paths/php/PHP.txt +30 -0
  240. data/lib/itsi/server/config/known_paths/php/PHP_CommonBackdoors.txt +5 -0
  241. data/lib/itsi/server/config/known_paths/proxy-conf.txt +31 -0
  242. data/lib/itsi/server/config/known_paths/tftp.txt +79 -0
  243. data/lib/itsi/server/config/known_paths/webservers-appservers/ADFS.txt +86 -0
  244. data/lib/itsi/server/config/known_paths/webservers-appservers/AdobeXML.txt +16 -0
  245. data/lib/itsi/server/config/known_paths/webservers-appservers/Apache.txt +101 -0
  246. data/lib/itsi/server/config/known_paths/webservers-appservers/ApacheTomcat.txt +47 -0
  247. data/lib/itsi/server/config/known_paths/webservers-appservers/Apache_Axis.txt +16 -0
  248. data/lib/itsi/server/config/known_paths/webservers-appservers/ColdFusion.txt +111 -0
  249. data/lib/itsi/server/config/known_paths/webservers-appservers/FatwireCMS.txt +390 -0
  250. data/lib/itsi/server/config/known_paths/webservers-appservers/Frontpage.txt +38 -0
  251. data/lib/itsi/server/config/known_paths/webservers-appservers/HP_System_Mgmt_Homepage.txt +239 -0
  252. data/lib/itsi/server/config/known_paths/webservers-appservers/HTTP_POST_Microsoft.txt +2 -0
  253. data/lib/itsi/server/config/known_paths/webservers-appservers/Hyperion.txt +578 -0
  254. data/lib/itsi/server/config/known_paths/webservers-appservers/IIS.txt +187 -0
  255. data/lib/itsi/server/config/known_paths/webservers-appservers/JBoss.txt +5 -0
  256. data/lib/itsi/server/config/known_paths/webservers-appservers/JRun.txt +13 -0
  257. data/lib/itsi/server/config/known_paths/webservers-appservers/JavaServlets_Common.txt +3 -0
  258. data/lib/itsi/server/config/known_paths/webservers-appservers/Joomla_exploitable.txt +1937 -0
  259. data/lib/itsi/server/config/known_paths/webservers-appservers/LotusNotes.txt +206 -0
  260. data/lib/itsi/server/config/known_paths/webservers-appservers/Netware.txt +18 -0
  261. data/lib/itsi/server/config/known_paths/webservers-appservers/Oracle9i.txt +60 -0
  262. data/lib/itsi/server/config/known_paths/webservers-appservers/OracleAppServer.txt +192 -0
  263. data/lib/itsi/server/config/known_paths/webservers-appservers/README.md +6 -0
  264. data/lib/itsi/server/config/known_paths/webservers-appservers/Ruby_Rails.txt +121 -0
  265. data/lib/itsi/server/config/known_paths/webservers-appservers/SAP.txt +463 -0
  266. data/lib/itsi/server/config/known_paths/webservers-appservers/Sharepoint.txt +1707 -0
  267. data/lib/itsi/server/config/known_paths/webservers-appservers/SiteMinder.txt +19 -0
  268. data/lib/itsi/server/config/known_paths/webservers-appservers/SunAppServerGlassfish.txt +51 -0
  269. data/lib/itsi/server/config/known_paths/webservers-appservers/SuniPlanet.txt +35 -0
  270. data/lib/itsi/server/config/known_paths/webservers-appservers/Vignette.txt +73 -0
  271. data/lib/itsi/server/config/known_paths/webservers-appservers/Weblogic.txt +160 -0
  272. data/lib/itsi/server/config/known_paths/webservers-appservers/Websphere.txt +366 -0
  273. data/lib/itsi/server/config/known_paths/wellknown-rfc5785.txt +30 -0
  274. data/lib/itsi/server/config/known_paths.rb +20 -0
  275. data/lib/itsi/server/config/middleware/_index.md +56 -0
  276. data/lib/itsi/server/config/middleware/allow_list.md +46 -0
  277. data/lib/itsi/server/config/middleware/allow_list.rb +42 -0
  278. data/lib/itsi/server/config/middleware/auth_api_key.md +90 -0
  279. data/lib/itsi/server/config/middleware/auth_api_key.rb +51 -0
  280. data/lib/itsi/server/config/middleware/auth_basic.md +45 -0
  281. data/lib/itsi/server/config/middleware/auth_basic.rb +44 -0
  282. data/lib/itsi/server/config/middleware/auth_jwt.md +82 -0
  283. data/lib/itsi/server/config/middleware/auth_jwt.rb +38 -0
  284. data/lib/itsi/server/config/middleware/cache_control.md +78 -0
  285. data/lib/itsi/server/config/middleware/cache_control.rb +45 -0
  286. data/lib/itsi/server/config/middleware/cidr_to_regex.rb +50 -0
  287. data/lib/itsi/server/config/middleware/compression.md +50 -0
  288. data/lib/itsi/server/config/middleware/compression.rb +37 -0
  289. data/lib/itsi/server/config/middleware/cors.md +93 -0
  290. data/lib/itsi/server/config/middleware/cors.rb +32 -0
  291. data/lib/itsi/server/config/middleware/csp.md +37 -0
  292. data/lib/itsi/server/config/middleware/csp.rb +44 -0
  293. data/lib/itsi/server/config/middleware/deny_list.md +45 -0
  294. data/lib/itsi/server/config/middleware/deny_list.rb +42 -0
  295. data/lib/itsi/server/config/middleware/endpoint/_index.md +159 -0
  296. data/lib/itsi/server/config/middleware/endpoint/controller.md +186 -0
  297. data/lib/itsi/server/config/middleware/endpoint/controller.rb +33 -0
  298. data/lib/itsi/server/config/middleware/endpoint/delete.md +12 -0
  299. data/lib/itsi/server/config/middleware/endpoint/delete.rb +42 -0
  300. data/lib/itsi/server/config/middleware/endpoint/endpoint.rb +99 -0
  301. data/lib/itsi/server/config/middleware/endpoint/get.md +12 -0
  302. data/lib/itsi/server/config/middleware/endpoint/get.rb +42 -0
  303. data/lib/itsi/server/config/middleware/endpoint/http_request.md +44 -0
  304. data/lib/itsi/server/config/middleware/endpoint/http_response.md +39 -0
  305. data/lib/itsi/server/config/middleware/endpoint/patch.md +12 -0
  306. data/lib/itsi/server/config/middleware/endpoint/patch.rb +42 -0
  307. data/lib/itsi/server/config/middleware/endpoint/post.md +12 -0
  308. data/lib/itsi/server/config/middleware/endpoint/post.rb +42 -0
  309. data/lib/itsi/server/config/middleware/endpoint/put.md +12 -0
  310. data/lib/itsi/server/config/middleware/endpoint/put.rb +42 -0
  311. data/lib/itsi/server/config/middleware/endpoint/schemas.md +122 -0
  312. data/lib/itsi/server/config/middleware/error_response.md +61 -0
  313. data/lib/itsi/server/config/middleware/error_response.rb +36 -0
  314. data/lib/itsi/server/config/middleware/etag.md +59 -0
  315. data/lib/itsi/server/config/middleware/etag.rb +27 -0
  316. data/lib/itsi/server/config/middleware/grpc.md +172 -0
  317. data/lib/itsi/server/config/middleware/grpc.rb +54 -0
  318. data/lib/itsi/server/config/middleware/intrusion_protection.md +124 -0
  319. data/lib/itsi/server/config/middleware/intrusion_protection.rb +61 -0
  320. data/lib/itsi/server/config/middleware/location.md +107 -0
  321. data/lib/itsi/server/config/middleware/location.rb +99 -0
  322. data/lib/itsi/server/config/middleware/log_requests.md +65 -0
  323. data/lib/itsi/server/config/middleware/log_requests.rb +31 -0
  324. data/lib/itsi/server/config/middleware/max_body.md +18 -0
  325. data/lib/itsi/server/config/middleware/max_body.rb +21 -0
  326. data/lib/itsi/server/config/middleware/proxy.md +62 -0
  327. data/lib/itsi/server/config/middleware/proxy.rb +41 -0
  328. data/lib/itsi/server/config/middleware/rackup_file.md +54 -0
  329. data/lib/itsi/server/config/middleware/rackup_file.rb +44 -0
  330. data/lib/itsi/server/config/middleware/rate_limit.md +126 -0
  331. data/lib/itsi/server/config/middleware/rate_limit.rb +34 -0
  332. data/lib/itsi/server/config/middleware/rate_limit_store.rb +25 -0
  333. data/lib/itsi/server/config/middleware/redirect.md +55 -0
  334. data/lib/itsi/server/config/middleware/redirect.rb +25 -0
  335. data/lib/itsi/server/config/middleware/request_headers.md +34 -0
  336. data/lib/itsi/server/config/middleware/request_headers.rb +24 -0
  337. data/lib/itsi/server/config/middleware/response_headers.md +33 -0
  338. data/lib/itsi/server/config/middleware/response_headers.rb +25 -0
  339. data/lib/itsi/server/config/middleware/run.md +60 -0
  340. data/lib/itsi/server/config/middleware/run.rb +43 -0
  341. data/lib/itsi/server/config/middleware/static_assets.md +73 -0
  342. data/lib/itsi/server/config/middleware/static_assets.rb +87 -0
  343. data/lib/itsi/server/config/middleware/static_response.md +44 -0
  344. data/lib/itsi/server/config/middleware/static_response.rb +29 -0
  345. data/lib/itsi/server/config/middleware/string_rewrite.md +67 -0
  346. data/lib/itsi/server/config/middleware/token_source.rb +32 -0
  347. data/lib/itsi/server/config/middleware.rb +13 -0
  348. data/lib/itsi/server/config/option.rb +14 -0
  349. data/lib/itsi/server/config/options/_index.md +37 -0
  350. data/lib/itsi/server/config/options/auto_reload_config.md +13 -0
  351. data/lib/itsi/server/config/options/auto_reload_config.rb +41 -0
  352. data/lib/itsi/server/config/options/bind.md +71 -0
  353. data/lib/itsi/server/config/options/bind.rb +26 -0
  354. data/lib/itsi/server/config/options/certificates.md +65 -0
  355. data/lib/itsi/server/config/options/daemonize.md +14 -0
  356. data/lib/itsi/server/config/options/daemonize.rb +19 -0
  357. data/lib/itsi/server/config/options/fiber_scheduler.md +34 -0
  358. data/lib/itsi/server/config/options/fiber_scheduler.rb +21 -0
  359. data/lib/itsi/server/config/options/header_read_timeout.md +17 -0
  360. data/lib/itsi/server/config/options/header_read_timeout.rb +19 -0
  361. data/lib/itsi/server/config/options/hooks/_index.md +11 -0
  362. data/lib/itsi/server/config/options/hooks/after_fork.md +13 -0
  363. data/lib/itsi/server/config/options/hooks/after_fork.rb +28 -0
  364. data/lib/itsi/server/config/options/hooks/after_memory_limit_reached.md +14 -0
  365. data/lib/itsi/server/config/options/hooks/after_memory_limit_reached.rb +28 -0
  366. data/lib/itsi/server/config/options/hooks/after_start.md +12 -0
  367. data/lib/itsi/server/config/options/hooks/after_start.rb +28 -0
  368. data/lib/itsi/server/config/options/hooks/before_fork.md +13 -0
  369. data/lib/itsi/server/config/options/hooks/before_fork.rb +28 -0
  370. data/lib/itsi/server/config/options/hooks/before_restart.md +12 -0
  371. data/lib/itsi/server/config/options/hooks/before_restart.rb +28 -0
  372. data/lib/itsi/server/config/options/hooks/before_shutdown.md +12 -0
  373. data/lib/itsi/server/config/options/hooks/before_shutdown.rb +28 -0
  374. data/lib/itsi/server/config/options/include.md +20 -0
  375. data/lib/itsi/server/config/options/include.rb +36 -0
  376. data/lib/itsi/server/config/options/listen_backlog.md +11 -0
  377. data/lib/itsi/server/config/options/listen_backlog.rb +19 -0
  378. data/lib/itsi/server/config/options/log_format.md +18 -0
  379. data/lib/itsi/server/config/options/log_format.rb +19 -0
  380. data/lib/itsi/server/config/options/log_level.md +34 -0
  381. data/lib/itsi/server/config/options/log_level.rb +20 -0
  382. data/lib/itsi/server/config/options/log_target.md +38 -0
  383. data/lib/itsi/server/config/options/log_target.rb +19 -0
  384. data/lib/itsi/server/config/options/log_target_filters.md +17 -0
  385. data/lib/itsi/server/config/options/log_target_filters.rb +19 -0
  386. data/lib/itsi/server/config/options/multithreaded_reactor.md +27 -0
  387. data/lib/itsi/server/config/options/multithreaded_reactor.rb +24 -0
  388. data/lib/itsi/server/config/options/nodelay.md +16 -0
  389. data/lib/itsi/server/config/options/nodelay.rb +19 -0
  390. data/lib/itsi/server/config/options/oob_gc_responses_threshold.md +19 -0
  391. data/lib/itsi/server/config/options/oob_gc_responses_threshold.rb +18 -0
  392. data/lib/itsi/server/config/options/pin_worker_cores.md +17 -0
  393. data/lib/itsi/server/config/options/pin_worker_cores.rb +19 -0
  394. data/lib/itsi/server/config/options/preload.md +21 -0
  395. data/lib/itsi/server/config/options/preload.rb +18 -0
  396. data/lib/itsi/server/config/options/recv_buffer_size.md +15 -0
  397. data/lib/itsi/server/config/options/recv_buffer_size.rb +19 -0
  398. data/lib/itsi/server/config/options/redirect_http_to_https.md +21 -0
  399. data/lib/itsi/server/config/options/redirect_http_to_https.rb +30 -0
  400. data/lib/itsi/server/config/options/request_timeout.md +23 -0
  401. data/lib/itsi/server/config/options/request_timeout.rb +19 -0
  402. data/lib/itsi/server/config/options/reuse_address.md +16 -0
  403. data/lib/itsi/server/config/options/reuse_address.rb +19 -0
  404. data/lib/itsi/server/config/options/reuse_port.md +16 -0
  405. data/lib/itsi/server/config/options/reuse_port.rb +19 -0
  406. data/lib/itsi/server/config/options/scheduler_threads.md +34 -0
  407. data/lib/itsi/server/config/options/scheduler_threads.rb +17 -0
  408. data/lib/itsi/server/config/options/shutdown_timeout.md +17 -0
  409. data/lib/itsi/server/config/options/shutdown_timeout.rb +19 -0
  410. data/lib/itsi/server/config/options/stream_body.md +32 -0
  411. data/lib/itsi/server/config/options/stream_body.rb +18 -0
  412. data/lib/itsi/server/config/options/threads.md +44 -0
  413. data/lib/itsi/server/config/options/threads.rb +17 -0
  414. data/lib/itsi/server/config/options/watch.md +16 -0
  415. data/lib/itsi/server/config/options/watch.rb +28 -0
  416. data/lib/itsi/server/config/options/worker_memory_limit.md +22 -0
  417. data/lib/itsi/server/config/options/worker_memory_limit.rb +18 -0
  418. data/lib/itsi/server/config/options/workers.md +42 -0
  419. data/lib/itsi/server/config/options/workers.rb +17 -0
  420. data/lib/itsi/server/config/typed_struct.rb +242 -0
  421. data/lib/itsi/server/config.rb +289 -0
  422. data/lib/itsi/server/default_app/default_app.rb +34 -0
  423. data/lib/itsi/server/default_app/index.html +115 -0
  424. data/lib/itsi/server/default_config/Itsi.rb +107 -0
  425. data/lib/itsi/server/grpc/grpc_call.rb +246 -0
  426. data/lib/itsi/server/grpc/grpc_interface.rb +107 -0
  427. data/lib/itsi/server/grpc/reflection/v1/reflection_pb.rb +26 -0
  428. data/lib/itsi/server/grpc/reflection/v1/reflection_services_pb.rb +122 -0
  429. data/lib/itsi/server/rack/handler/itsi.rb +27 -0
  430. data/lib/itsi/server/rack_interface.rb +94 -0
  431. data/lib/itsi/server/route_tester.rb +157 -0
  432. data/lib/itsi/server/scheduler_interface.rb +21 -0
  433. data/lib/itsi/server/scheduler_mode.rb +10 -0
  434. data/lib/itsi/server/signal_trap.rb +33 -0
  435. data/lib/itsi/server/typed_handlers/param_parser.rb +196 -0
  436. data/lib/itsi/server/typed_handlers/source_parser.rb +56 -0
  437. data/lib/itsi/server/typed_handlers.rb +25 -0
  438. data/lib/itsi/server/version.rb +1 -1
  439. data/lib/itsi/server.rb +265 -9
  440. data/lib/itsi/standard_headers.rb +86 -0
  441. data/lib/ruby_lsp/itsi/addon.rb +129 -0
  442. data/lib/shell_completions/completions.rb +26 -0
  443. metadata +454 -28
  444. data/CHANGELOG.md +0 -5
  445. data/CODE_OF_CONDUCT.md +0 -132
  446. data/LICENSE.txt +0 -21
  447. data/ext/itsi_server/src/request/itsi_request.rs +0 -143
  448. data/ext/itsi_server/src/request/mod.rs +0 -1
  449. data/ext/itsi_server/src/server/bind.rs +0 -138
  450. data/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +0 -32
  451. data/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +0 -52
  452. data/ext/itsi_server/src/server/itsi_server.rs +0 -182
  453. data/ext/itsi_server/src/server/listener.rs +0 -218
  454. data/ext/itsi_server/src/server/tls.rs +0 -138
  455. data/ext/itsi_server/src/server/transfer_protocol.rs +0 -23
  456. data/ext/itsi_server/src/stream_writer/mod.rs +0 -21
  457. data/lib/itsi/request.rb +0 -39
@@ -0,0 +1,1416 @@
1
+ use std::path::Path;
2
+
3
+ pub fn get_mime_type(path: &Path) -> &'static str {
4
+ match path.extension().and_then(|e| e.to_str()).unwrap_or("") {
5
+ "123" => "application/vnd.lotus-1-2-3",
6
+ "323" => "text/h323",
7
+ "3dml" => "text/vnd.in3d.3dml",
8
+ "3ds" => "image/x-3ds",
9
+ "3g2" => "video/3gpp2",
10
+ "3gp" => "video/3gpp",
11
+ "3gp2" => "video/3gpp2",
12
+ "3gpp" => "video/3gpp",
13
+ "7z" => "application/x-7z-compressed",
14
+ "aa" => "audio/audible",
15
+ "aab" => "application/x-authorware-bin",
16
+ "aac" => "audio/aac",
17
+ "aaf" => "application/octet-stream",
18
+ "aam" => "application/x-authorware-map",
19
+ "aas" => "application/x-authorware-seg",
20
+ "aax" => "audio/vnd.audible.aax",
21
+ "abw" => "application/x-abiword",
22
+ "ac" => "application/pkix-attr-cert",
23
+ "ac3" => "audio/ac3",
24
+ "aca" => "application/octet-stream",
25
+ "acc" => "application/vnd.americandynamics.acc",
26
+ "accda" => "application/msaccess.addin",
27
+ "accdb" => "application/msaccess",
28
+ "accdc" => "application/msaccess.cab",
29
+ "accde" => "application/msaccess",
30
+ "accdr" => "application/msaccess.runtime",
31
+ "accdt" => "application/msaccess",
32
+ "accdw" => "application/msaccess.webapplication",
33
+ "accft" => "application/msaccess.ftemplate",
34
+ "ace" => "application/x-ace-compressed",
35
+ "acu" => "application/vnd.acucobol",
36
+ "acutc" => "application/vnd.acucorp",
37
+ "acx" => "application/internet-property-stream",
38
+ "addin" => "text/xml",
39
+ "ade" => "application/msaccess",
40
+ "adobebridge" => "application/x-bridge-url",
41
+ "adp" => "application/msaccess",
42
+ "adt" => "audio/vnd.dlna.adts",
43
+ "adts" => "audio/aac",
44
+ "aep" => "application/vnd.audiograph",
45
+ "afm" => "application/octet-stream",
46
+ "afp" => "application/vnd.ibm.modcap",
47
+ "ahead" => "application/vnd.ahead.space",
48
+ "ai" => "application/postscript",
49
+ "aif" => "audio/aiff",
50
+ "aifc" => "audio/aiff",
51
+ "aiff" => "audio/aiff",
52
+ "air" => "application/vnd.adobe.air-application-installer-package+zip",
53
+ "ait" => "application/vnd.dvb.ait",
54
+ "amc" => "application/mpeg",
55
+ "ami" => "application/vnd.amiga.ami",
56
+ "anx" => "application/annodex",
57
+ "apk" => "application/vnd.android.package-archive",
58
+ "apng" => "image/apng",
59
+ "appcache" => "text/cache-manifest",
60
+ "application" => "application/x-ms-application",
61
+ "apr" => "application/vnd.lotus-approach",
62
+ "arc" => "application/x-freearc",
63
+ "arj" => "application/x-arj",
64
+ "art" => "image/x-jg",
65
+ "arw" => "image/x-sony-arw",
66
+ "asa" => "application/xml",
67
+ "asax" => "application/xml",
68
+ "asc" => "application/pgp-signature",
69
+ "ascx" => "application/xml",
70
+ "asd" => "application/octet-stream",
71
+ "asf" => "video/x-ms-asf",
72
+ "ashx" => "application/xml",
73
+ "asi" => "application/octet-stream",
74
+ "asm" => "text/plain",
75
+ "asmx" => "application/xml",
76
+ "aso" => "application/vnd.accpac.simply.aso",
77
+ "aspx" => "application/xml",
78
+ "asr" => "video/x-ms-asf",
79
+ "asx" => "video/x-ms-asf",
80
+ "atc" => "application/vnd.acucorp",
81
+ "atom" => "application/atom+xml",
82
+ "atomcat" => "application/atomcat+xml",
83
+ "atomsvc" => "application/atomsvc+xml",
84
+ "atx" => "application/vnd.antix.game-component",
85
+ "au" => "audio/basic",
86
+ "avi" => "video/x-msvideo",
87
+ "avif" => "image/avif",
88
+ "avifs" => "image/avif-sequence",
89
+ "aw" => "application/applixware",
90
+ "axa" => "audio/annodex",
91
+ "axs" => "application/olescript",
92
+ "axv" => "video/annodex",
93
+ "azf" => "application/vnd.airzip.filesecure.azf",
94
+ "azs" => "application/vnd.airzip.filesecure.azs",
95
+ "azw" => "application/vnd.amazon.ebook",
96
+ "bas" => "text/plain",
97
+ "bat" => "application/x-msdownload",
98
+ "bcpio" => "application/x-bcpio",
99
+ "bdf" => "application/x-font-bdf",
100
+ "bdm" => "application/vnd.syncml.dm+wbxml",
101
+ "bdoc" => "application/bdoc",
102
+ "bed" => "application/vnd.realvnc.bed",
103
+ "bh2" => "application/vnd.fujitsu.oasysprs",
104
+ "bin" => "application/octet-stream",
105
+ "blb" => "application/x-blorb",
106
+ "blorb" => "application/x-blorb",
107
+ "bmi" => "application/vnd.bmi",
108
+ "bmp" => "image/bmp",
109
+ "book" => "application/vnd.framemaker",
110
+ "box" => "application/vnd.previewsystems.box",
111
+ "boz" => "application/x-bzip2",
112
+ "bpk" => "application/octet-stream",
113
+ "btif" => "image/prs.btif",
114
+ "buffer" => "application/octet-stream",
115
+ "bz" => "application/x-bzip",
116
+ "bz2" => "application/x-bzip2",
117
+ "c" => "text/plain",
118
+ "c11amc" => "application/vnd.cluetrust.cartomobile-config",
119
+ "c11amz" => "application/vnd.cluetrust.cartomobile-config-pkg",
120
+ "c4d" => "application/vnd.clonk.c4group",
121
+ "c4f" => "application/vnd.clonk.c4group",
122
+ "c4g" => "application/vnd.clonk.c4group",
123
+ "c4p" => "application/vnd.clonk.c4group",
124
+ "c4u" => "application/vnd.clonk.c4group",
125
+ "cab" => "application/octet-stream",
126
+ "caf" => "audio/x-caf",
127
+ "calx" => "application/vnd.ms-office.calx",
128
+ "cap" => "application/vnd.tcpdump.pcap",
129
+ "car" => "application/vnd.curl.car",
130
+ "cat" => "application/vnd.ms-pki.seccat",
131
+ "cb7" => "application/x-cbr",
132
+ "cba" => "application/x-cbr",
133
+ "cbr" => "application/x-cbr",
134
+ "cbt" => "application/x-cbr",
135
+ "cbz" => "application/x-cbr",
136
+ "cc" => "text/plain",
137
+ "cco" => "application/x-cocoa",
138
+ "cct" => "application/x-director",
139
+ "ccxml" => "application/ccxml+xml",
140
+ "cd" => "text/plain",
141
+ "cdbcmsg" => "application/vnd.contact.cmsg",
142
+ "cdda" => "audio/aiff",
143
+ "cdf" => "application/x-cdf",
144
+ "cdkey" => "application/vnd.mediastation.cdkey",
145
+ "cdmia" => "application/cdmi-capability",
146
+ "cdmic" => "application/cdmi-container",
147
+ "cdmid" => "application/cdmi-domain",
148
+ "cdmio" => "application/cdmi-object",
149
+ "cdmiq" => "application/cdmi-queue",
150
+ "cdx" => "chemical/x-cdx",
151
+ "cdxml" => "application/vnd.chemdraw+xml",
152
+ "cdy" => "application/vnd.cinderella",
153
+ "cer" => "application/x-x509-ca-cert",
154
+ "cfg" => "text/plain",
155
+ "cfs" => "application/x-cfs-compressed",
156
+ "cgm" => "image/cgm",
157
+ "chat" => "application/x-chat",
158
+ "chm" => "application/vnd.ms-htmlhelp",
159
+ "chrt" => "application/vnd.kde.kchart",
160
+ "cif" => "chemical/x-cif",
161
+ "cii" => "application/vnd.anser-web-certificate-issue-initiation",
162
+ "cil" => "application/vnd.ms-artgalry",
163
+ "cla" => "application/vnd.claymore",
164
+ "class" => "application/x-java-applet",
165
+ "clkk" => "application/vnd.crick.clicker.keyboard",
166
+ "clkp" => "application/vnd.crick.clicker.palette",
167
+ "clkt" => "application/vnd.crick.clicker.template",
168
+ "clkw" => "application/vnd.crick.clicker.wordbank",
169
+ "clkx" => "application/vnd.crick.clicker",
170
+ "clp" => "application/x-msclip",
171
+ "cmc" => "application/vnd.cosmocaller",
172
+ "cmd" => "text/plain",
173
+ "cmdf" => "chemical/x-cmdf",
174
+ "cml" => "chemical/x-cml",
175
+ "cmp" => "application/vnd.yellowriver-custom-menu",
176
+ "cmx" => "image/x-cmx",
177
+ "cnf" => "text/plain",
178
+ "cod" => "image/cis-cod",
179
+ "coffee" => "text/coffeescript",
180
+ "com" => "application/x-msdownload",
181
+ "conf" => "text/plain",
182
+ "config" => "application/xml",
183
+ "contact" => "text/x-ms-contact",
184
+ "coverage" => "application/xml",
185
+ "cpio" => "application/x-cpio",
186
+ "cpp" => "text/plain",
187
+ "cpt" => "application/mac-compactpro",
188
+ "cr2" => "image/x-canon-cr2",
189
+ "cr3" => "image/x-canon-cr3",
190
+ "crd" => "application/x-mscardfile",
191
+ "crl" => "application/pkix-crl",
192
+ "crt" => "application/x-x509-ca-cert",
193
+ "crw" => "image/x-canon-crw",
194
+ "crx" => "application/x-chrome-extension",
195
+ "cryptonote" => "application/vnd.rig.cryptonote",
196
+ "cs" => "text/plain",
197
+ "csdproj" => "text/plain",
198
+ "csh" => "application/x-csh",
199
+ "csl" => "application/vnd.citationstyles.style+xml",
200
+ "csml" => "chemical/x-csml",
201
+ "csp" => "application/vnd.commonspace",
202
+ "csproj" => "text/plain",
203
+ "css" => "text/css",
204
+ "cst" => "application/x-director",
205
+ "csv" => "text/csv",
206
+ "cu" => "application/cu-seeme",
207
+ "cur" => "application/octet-stream",
208
+ "curl" => "text/vnd.curl",
209
+ "cww" => "application/prs.cww",
210
+ "cxt" => "application/x-director",
211
+ "cxx" => "text/plain",
212
+ "dae" => "model/vnd.collada+xml",
213
+ "daf" => "application/vnd.mobius.daf",
214
+ "dart" => "application/vnd.dart",
215
+ "dat" => "application/octet-stream",
216
+ "dataless" => "application/vnd.fdsn.seed",
217
+ "datasource" => "application/xml",
218
+ "davmount" => "application/davmount+xml",
219
+ "dbk" => "application/docbook+xml",
220
+ "dbproj" => "text/plain",
221
+ "dcr" => "application/x-director",
222
+ "dcurl" => "text/vnd.curl.dcurl",
223
+ "dd2" => "application/vnd.oma.dd2+xml",
224
+ "ddd" => "application/vnd.fujixerox.ddd",
225
+ "deb" => "application/octet-stream",
226
+ "def" => "text/plain",
227
+ "deploy" => "application/octet-stream",
228
+ "der" => "application/x-x509-ca-cert",
229
+ "dfac" => "application/vnd.dreamfactory",
230
+ "dgc" => "application/x-dgc-compressed",
231
+ "dgml" => "application/xml",
232
+ "dib" => "image/bmp",
233
+ "dic" => "text/x-c",
234
+ "dif" => "video/x-dv",
235
+ "dir" => "application/x-director",
236
+ "dir_list" => "text/html",
237
+ "dir_list_json" => "application/json",
238
+ "dis" => "application/vnd.mobius.dis",
239
+ "disco" => "text/xml",
240
+ "disposition-notification" => "message/disposition-notification",
241
+ "dist" => "application/octet-stream",
242
+ "distz" => "application/octet-stream",
243
+ "divx" => "video/divx",
244
+ "djv" => "image/vnd.djvu",
245
+ "djvu" => "image/vnd.djvu",
246
+ "dll" => "application/x-msdownload",
247
+ "dlm" => "text/dlm",
248
+ "dmg" => "application/octet-stream",
249
+ "dmp" => "application/vnd.tcpdump.pcap",
250
+ "dms" => "application/octet-stream",
251
+ "dna" => "application/vnd.dna",
252
+ "dng" => "image/x-adobe-dng",
253
+ "doc" => "application/msword",
254
+ "docm" => "application/vnd.ms-word.document.macroEnabled.12",
255
+ "docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
256
+ "dot" => "application/msword",
257
+ "dotm" => "application/vnd.ms-word.template.macroEnabled.12",
258
+ "dotx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
259
+ "dp" => "application/vnd.osgi.dp",
260
+ "dpg" => "application/vnd.dpgraph",
261
+ "dra" => "audio/vnd.dra",
262
+ "dsc" => "text/prs.lines.tag",
263
+ "dsp" => "application/octet-stream",
264
+ "dssc" => "application/dssc+der",
265
+ "dsw" => "text/plain",
266
+ "dtb" => "application/x-dtbook+xml",
267
+ "dtd" => "text/xml",
268
+ "dts" => "audio/vnd.dts",
269
+ "dtsconfig" => "text/xml",
270
+ "dtshd" => "audio/vnd.dts.hd",
271
+ "dump" => "application/octet-stream",
272
+ "dv" => "video/x-dv",
273
+ "dvb" => "video/vnd.dvb.file",
274
+ "dvi" => "application/x-dvi",
275
+ "dwf" => "drawing/x-dwf",
276
+ "dwg" => "application/acad",
277
+ "dwp" => "application/octet-stream",
278
+ "dxf" => "application/x-dxf",
279
+ "dxp" => "application/vnd.spotfire.dxp",
280
+ "dxr" => "application/x-director",
281
+ "ear" => "application/java-archive",
282
+ "ecelp4800" => "audio/vnd.nuera.ecelp4800",
283
+ "ecelp7470" => "audio/vnd.nuera.ecelp7470",
284
+ "ecelp9600" => "audio/vnd.nuera.ecelp9600",
285
+ "ecma" => "text/javascript",
286
+ "edm" => "application/vnd.novadigm.edm",
287
+ "edx" => "application/vnd.novadigm.edx",
288
+ "efif" => "application/vnd.picsel",
289
+ "ei6" => "application/vnd.pg.osasli",
290
+ "elc" => "application/octet-stream",
291
+ "emf" => "application/x-msmetafile",
292
+ "eml" => "message/rfc822",
293
+ "emma" => "application/emma+xml",
294
+ "emz" => "application/octet-stream",
295
+ "eol" => "audio/vnd.digital-winds",
296
+ "eot" => "application/vnd.ms-fontobject",
297
+ "eps" => "application/postscript",
298
+ "epub" => "application/epub+zip",
299
+ "erf" => "application/x-endace-erf",
300
+ "es" => "text/javascript",
301
+ "es3" => "application/vnd.eszigno3+xml",
302
+ "esa" => "application/vnd.osgi.subsystem",
303
+ "esf" => "application/vnd.epson.esf",
304
+ "et3" => "application/vnd.eszigno3+xml",
305
+ "etl" => "application/etl",
306
+ "etx" => "text/x-setext",
307
+ "eva" => "application/x-eva",
308
+ "evy" => "application/envoy",
309
+ "exe" => "application/octet-stream",
310
+ "exi" => "application/exi",
311
+ "ext" => "application/vnd.novadigm.ext",
312
+ "ez" => "application/andrew-inset",
313
+ "ez2" => "application/vnd.ezpix-album",
314
+ "ez3" => "application/vnd.ezpix-package",
315
+ "f" => "text/x-fortran",
316
+ "f4v" => "video/x-f4v",
317
+ "f77" => "text/x-fortran",
318
+ "f90" => "text/x-fortran",
319
+ "fbs" => "image/vnd.fastbidsheet",
320
+ "fcdt" => "application/vnd.adobe.formscentral.fcdt",
321
+ "fcs" => "application/vnd.isac.fcs",
322
+ "fdf" => "application/vnd.fdf",
323
+ "fe_launch" => "application/vnd.denovo.fcselayout-link",
324
+ "feature" => "text/x-gherkin",
325
+ "fg5" => "application/vnd.fujitsu.oasysgp",
326
+ "fgd" => "application/x-director",
327
+ "fh" => "image/x-freehand",
328
+ "fh4" => "image/x-freehand",
329
+ "fh5" => "image/x-freehand",
330
+ "fh7" => "image/x-freehand",
331
+ "fhc" => "image/x-freehand",
332
+ "fif" => "application/fractals",
333
+ "fig" => "application/x-xfig",
334
+ "filters" => "application/xml",
335
+ "fla" => "application/octet-stream",
336
+ "flac" => "audio/flac",
337
+ "fli" => "video/x-fli",
338
+ "flo" => "application/vnd.micrografx.flo",
339
+ "flr" => "x-world/x-vrml",
340
+ "flv" => "video/x-flv",
341
+ "flw" => "application/vnd.kde.kivio",
342
+ "flx" => "text/vnd.fmi.flexstor",
343
+ "fly" => "text/vnd.fly",
344
+ "fm" => "application/vnd.framemaker",
345
+ "fnc" => "application/vnd.frogans.fnc",
346
+ "for" => "text/x-fortran",
347
+ "fpx" => "image/vnd.fpx",
348
+ "frame" => "application/vnd.framemaker",
349
+ "fsc" => "application/vnd.fsc.weblaunch",
350
+ "fsscript" => "application/fsharp-script",
351
+ "fst" => "image/vnd.fst",
352
+ "fsx" => "application/fsharp-script",
353
+ "ftc" => "application/vnd.fluxtime.clip",
354
+ "fti" => "application/vnd.anser-web-funds-transfer-initiation",
355
+ "fvt" => "video/vnd.fvt",
356
+ "fxp" => "application/vnd.adobe.fxp",
357
+ "fxpl" => "application/vnd.adobe.fxp",
358
+ "fzs" => "application/vnd.fuzzysheet",
359
+ "g2w" => "application/vnd.geoplan",
360
+ "g3" => "image/g3fax",
361
+ "g3w" => "application/vnd.geospace",
362
+ "gac" => "application/vnd.groove-account",
363
+ "gam" => "application/x-tads",
364
+ "gbr" => "application/rpki-ghostbusters",
365
+ "gca" => "application/x-gca-compressed",
366
+ "gdl" => "model/vnd.gdl",
367
+ "gdoc" => "application/vnd.google-apps.document",
368
+ "gemini" => "text/gemini",
369
+ "generictest" => "application/xml",
370
+ "geo" => "application/vnd.dynageo",
371
+ "geojson" => "application/geo+json",
372
+ "gex" => "application/vnd.geometry-explorer",
373
+ "ggb" => "application/vnd.geogebra.file",
374
+ "ggt" => "application/vnd.geogebra.tool",
375
+ "ghf" => "application/vnd.groove-help",
376
+ "gif" => "image/gif",
377
+ "gim" => "application/vnd.groove-identity-message",
378
+ "glb" => "model/gltf-binary",
379
+ "gltf" => "model/gltf+json",
380
+ "gmi" => "text/gemini",
381
+ "gml" => "application/gml+xml",
382
+ "gmx" => "application/vnd.gmx",
383
+ "gnumeric" => "application/x-gnumeric",
384
+ "gph" => "application/vnd.flographit",
385
+ "gpx" => "application/gpx+xml",
386
+ "gqf" => "application/vnd.grafeq",
387
+ "gqs" => "application/vnd.grafeq",
388
+ "gram" => "application/srgs",
389
+ "gramps" => "application/x-gramps-xml",
390
+ "gre" => "application/vnd.geometry-explorer",
391
+ "group" => "text/x-ms-group",
392
+ "grv" => "application/vnd.groove-injector",
393
+ "grxml" => "application/srgs+xml",
394
+ "gsf" => "application/x-font-ghostscript",
395
+ "gsheet" => "application/vnd.google-apps.spreadsheet",
396
+ "gslides" => "application/vnd.google-apps.presentation",
397
+ "gsm" => "audio/x-gsm",
398
+ "gtar" => "application/x-gtar",
399
+ "gtm" => "application/vnd.groove-tool-message",
400
+ "gtw" => "model/vnd.gtw",
401
+ "gv" => "text/vnd.graphviz",
402
+ "gxf" => "application/gxf",
403
+ "gxt" => "application/vnd.geonext",
404
+ "gz" => "application/gzip",
405
+ "h" => "text/plain",
406
+ "h261" => "video/h261",
407
+ "h263" => "video/h263",
408
+ "h264" => "video/h264",
409
+ "hal" => "application/vnd.hal+xml",
410
+ "hbci" => "application/vnd.hbci",
411
+ "hbs" => "text/x-handlebars-template",
412
+ "hdd" => "application/x-virtualbox-hdd",
413
+ "hdf" => "application/x-hdf",
414
+ "hdml" => "text/x-hdml",
415
+ "hdr" => "image/vnd.radiance",
416
+ "heic" => "image/heic",
417
+ "heics" => "image/heic-sequence",
418
+ "heif" => "image/heif",
419
+ "heifs" => "image/heif-sequence",
420
+ "hh" => "text/plain",
421
+ "hhc" => "application/x-oleobject",
422
+ "hhk" => "application/octet-stream",
423
+ "hhp" => "application/octet-stream",
424
+ "hjson" => "application/hjson",
425
+ "hlp" => "application/winhlp",
426
+ "hpgl" => "application/vnd.hp-hpgl",
427
+ "hpid" => "application/vnd.hp-hpid",
428
+ "hpp" => "text/plain",
429
+ "hps" => "application/vnd.hp-hps",
430
+ "hqx" => "application/mac-binhex40",
431
+ "hta" => "application/hta",
432
+ "htc" => "text/x-component",
433
+ "htke" => "application/vnd.kenameaapp",
434
+ "htm" => "text/html",
435
+ "html" => "text/html",
436
+ "htt" => "text/webviewhtml",
437
+ "hvd" => "application/vnd.yamaha.hv-dic",
438
+ "hvp" => "application/vnd.yamaha.hv-voice",
439
+ "hvs" => "application/vnd.yamaha.hv-script",
440
+ "hxa" => "application/xml",
441
+ "hxc" => "application/xml",
442
+ "hxd" => "application/octet-stream",
443
+ "hxe" => "application/xml",
444
+ "hxf" => "application/xml",
445
+ "hxh" => "application/octet-stream",
446
+ "hxi" => "application/octet-stream",
447
+ "hxk" => "application/xml",
448
+ "hxq" => "application/octet-stream",
449
+ "hxr" => "application/octet-stream",
450
+ "hxs" => "application/octet-stream",
451
+ "hxt" => "text/html",
452
+ "hxv" => "application/xml",
453
+ "hxw" => "application/octet-stream",
454
+ "hxx" => "text/plain",
455
+ "i" => "text/plain",
456
+ "i2g" => "application/vnd.intergeo",
457
+ "icc" => "application/vnd.iccprofile",
458
+ "ice" => "x-conference/x-cooltalk",
459
+ "icm" => "application/vnd.iccprofile",
460
+ "ico" => "image/x-icon",
461
+ "ics" => "text/calendar",
462
+ "idl" => "text/plain",
463
+ "ief" => "image/ief",
464
+ "ifb" => "text/calendar",
465
+ "ifm" => "application/vnd.shana.informed.formdata",
466
+ "iges" => "model/iges",
467
+ "igl" => "application/vnd.igloader",
468
+ "igm" => "application/vnd.insors.igm",
469
+ "igs" => "model/iges",
470
+ "igx" => "application/vnd.micrografx.igx",
471
+ "iif" => "application/vnd.shana.informed.interchange",
472
+ "iii" => "application/x-iphone",
473
+ "img" => "application/octet-stream",
474
+ "imp" => "application/vnd.accpac.simply.imp",
475
+ "ims" => "application/vnd.ms-ims",
476
+ "in" => "text/plain",
477
+ "inc" => "text/plain",
478
+ "inf" => "application/octet-stream",
479
+ "ini" => "text/plain",
480
+ "ink" => "application/inkml+xml",
481
+ "inkml" => "application/inkml+xml",
482
+ "inl" => "text/plain",
483
+ "ins" => "application/x-internet-signup",
484
+ "install" => "application/x-install-instructions",
485
+ "iota" => "application/vnd.astraea-software.iota",
486
+ "ipa" => "application/x-itunes-ipa",
487
+ "ipfix" => "application/ipfix",
488
+ "ipg" => "application/x-itunes-ipg",
489
+ "ipk" => "application/vnd.shana.informed.package",
490
+ "ipproj" => "text/plain",
491
+ "ipsw" => "application/x-itunes-ipsw",
492
+ "iqy" => "text/x-ms-iqy",
493
+ "irm" => "application/vnd.ibm.rights-management",
494
+ "irp" => "application/vnd.irepository.package+xml",
495
+ "iso" => "application/octet-stream",
496
+ "isp" => "application/x-internet-signup",
497
+ "ite" => "application/x-itunes-ite",
498
+ "itlp" => "application/x-itunes-itlp",
499
+ "itms" => "application/x-itunes-itms",
500
+ "itp" => "application/vnd.shana.informed.formtemplate",
501
+ "itpc" => "application/x-itunes-itpc",
502
+ "ivf" => "video/x-ivf",
503
+ "ivp" => "application/vnd.immervision-ivp",
504
+ "ivu" => "application/vnd.immervision-ivu",
505
+ "jad" => "text/vnd.sun.j2me.app-descriptor",
506
+ "jade" => "text/jade",
507
+ "jam" => "application/vnd.jam",
508
+ "jar" => "application/java-archive",
509
+ "jardiff" => "application/x-java-archive-diff",
510
+ "java" => "application/octet-stream",
511
+ "jck" => "application/liquidmotion",
512
+ "jcz" => "application/liquidmotion",
513
+ "jfif" => "image/jpeg",
514
+ "jisp" => "application/vnd.jisp",
515
+ "jlt" => "application/vnd.hp-jlyt",
516
+ "jng" => "image/x-jng",
517
+ "jnlp" => "application/x-java-jnlp-file",
518
+ "joda" => "application/vnd.joost.joda-archive",
519
+ "jp2" => "image/jp2",
520
+ "jpb" => "application/octet-stream",
521
+ "jpe" => "image/jpeg",
522
+ "jpeg" => "image/jpeg",
523
+ "jpf" => "image/jpx",
524
+ "jpg" => "image/jpeg",
525
+ "jpg2" => "image/jp2",
526
+ "jpgm" => "video/jpm",
527
+ "jpgv" => "video/jpeg",
528
+ "jpm" => "image/jpm",
529
+ "jpx" => "image/jpx",
530
+ "js" => "text/javascript",
531
+ "jsm" => "text/javascript",
532
+ "json" => "application/json",
533
+ "json5" => "application/json5",
534
+ "jsonld" => "application/ld+json",
535
+ "jsonml" => "application/jsonml+json",
536
+ "jsx" => "text/javascript",
537
+ "jsxbin" => "text/plain",
538
+ "jxl" => "image/jxl",
539
+ "k25" => "image/x-kodak-k25",
540
+ "kar" => "audio/midi",
541
+ "karbon" => "application/vnd.kde.karbon",
542
+ "kdc" => "image/x-kodak-kdc",
543
+ "kfo" => "application/vnd.kde.kformula",
544
+ "kia" => "application/vnd.kidspiration",
545
+ "kml" => "application/vnd.google-earth.kml+xml",
546
+ "kmz" => "application/vnd.google-earth.kmz",
547
+ "kne" => "application/vnd.kinar",
548
+ "knp" => "application/vnd.kinar",
549
+ "kon" => "application/vnd.kde.kontour",
550
+ "kpr" => "application/vnd.kde.kpresenter",
551
+ "kpt" => "application/vnd.kde.kpresenter",
552
+ "kpxx" => "application/vnd.ds-keypoint",
553
+ "ksp" => "application/vnd.kde.kspread",
554
+ "ktr" => "application/vnd.kahootz",
555
+ "ktx" => "image/ktx",
556
+ "ktz" => "application/vnd.kahootz",
557
+ "kwd" => "application/vnd.kde.kword",
558
+ "kwt" => "application/vnd.kde.kword",
559
+ "lasxml" => "application/vnd.las.las+xml",
560
+ "latex" => "application/x-latex",
561
+ "lbd" => "application/vnd.llamagraphics.life-balance.desktop",
562
+ "lbe" => "application/vnd.llamagraphics.life-balance.exchange+xml",
563
+ "les" => "application/vnd.hhe.lesson-player",
564
+ "less" => "text/less",
565
+ "lha" => "application/x-lzh-compressed",
566
+ "library-ms" => "application/windows-library+xml",
567
+ "link66" => "application/vnd.route66.link66+xml",
568
+ "list" => "text/plain",
569
+ "list3820" => "application/vnd.ibm.modcap",
570
+ "listafp" => "application/vnd.ibm.modcap",
571
+ "lit" => "application/x-ms-reader",
572
+ "litcoffee" => "text/coffeescript",
573
+ "lnk" => "application/x-ms-shortcut",
574
+ "loadtest" => "application/xml",
575
+ "log" => "text/plain",
576
+ "lostxml" => "application/lost+xml",
577
+ "lpk" => "application/octet-stream",
578
+ "lrf" => "application/octet-stream",
579
+ "lrm" => "application/vnd.ms-lrm",
580
+ "lsf" => "video/x-la-asf",
581
+ "lst" => "text/plain",
582
+ "lsx" => "video/x-la-asf",
583
+ "ltf" => "application/vnd.frogans.ltf",
584
+ "lua" => "text/x-lua",
585
+ "luac" => "application/x-lua-bytecode",
586
+ "lvp" => "audio/vnd.lucent.voice",
587
+ "lwp" => "application/vnd.lotus-wordpro",
588
+ "lzh" => "application/octet-stream",
589
+ "m13" => "application/x-msmediaview",
590
+ "m14" => "application/x-msmediaview",
591
+ "m1v" => "video/mpeg",
592
+ "m21" => "application/mp21",
593
+ "m2a" => "audio/mpeg",
594
+ "m2t" => "video/vnd.dlna.mpeg-tts",
595
+ "m2ts" => "video/vnd.dlna.mpeg-tts",
596
+ "m2v" => "video/mpeg",
597
+ "m3a" => "audio/mpeg",
598
+ "m3u" => "audio/x-mpegurl",
599
+ "m3u8" => "audio/x-mpegurl",
600
+ "m4a" => "audio/m4a",
601
+ "m4b" => "audio/m4b",
602
+ "m4p" => "audio/m4p",
603
+ "m4r" => "audio/x-m4r",
604
+ "m4u" => "video/vnd.mpegurl",
605
+ "m4v" => "video/x-m4v",
606
+ "ma" => "application/mathematica",
607
+ "mac" => "image/x-macpaint",
608
+ "mads" => "application/mads+xml",
609
+ "mag" => "application/vnd.ecowin.chart",
610
+ "mak" => "text/plain",
611
+ "maker" => "application/vnd.framemaker",
612
+ "man" => "application/x-troff-man",
613
+ "manifest" => "application/x-ms-manifest",
614
+ "map" => "text/plain",
615
+ "mar" => "application/octet-stream",
616
+ "markdown" => "text/markdown",
617
+ "master" => "application/xml",
618
+ "mathml" => "application/mathml+xml",
619
+ "mb" => "application/mathematica",
620
+ "mbk" => "application/vnd.mobius.mbk",
621
+ "mbox" => "application/mbox",
622
+ "mc1" => "application/vnd.medcalcdata",
623
+ "mcd" => "application/vnd.mcd",
624
+ "mcurl" => "text/vnd.curl.mcurl",
625
+ "md" => "text/markdown",
626
+ "mda" => "application/msaccess",
627
+ "mdb" => "application/x-msaccess",
628
+ "mde" => "application/msaccess",
629
+ "mdi" => "image/vnd.ms-modi",
630
+ "mdp" => "application/octet-stream",
631
+ "me" => "application/x-troff-me",
632
+ "mesh" => "model/mesh",
633
+ "meta4" => "application/metalink4+xml",
634
+ "metalink" => "application/metalink+xml",
635
+ "mets" => "application/mets+xml",
636
+ "mfm" => "application/vnd.mfmp",
637
+ "mfp" => "application/x-shockwave-flash",
638
+ "mft" => "application/rpki-manifest",
639
+ "mgp" => "application/vnd.osgeo.mapguide.package",
640
+ "mgz" => "application/vnd.proteus.magazine",
641
+ "mht" => "message/rfc822",
642
+ "mhtml" => "message/rfc822",
643
+ "mid" => "audio/mid",
644
+ "midi" => "audio/mid",
645
+ "mie" => "application/x-mie",
646
+ "mif" => "application/vnd.mif",
647
+ "mime" => "message/rfc822",
648
+ "mix" => "application/octet-stream",
649
+ "mj2" => "video/mj2",
650
+ "mjp2" => "video/mj2",
651
+ "mjs" => "application/javascript",
652
+ "mk" => "text/plain",
653
+ "mk3d" => "video/x-matroska",
654
+ "mka" => "audio/x-matroska",
655
+ "mkd" => "text/x-markdown",
656
+ "mks" => "video/x-matroska",
657
+ "mkv" => "video/x-matroska",
658
+ "mlp" => "application/vnd.dolby.mlp",
659
+ "mmd" => "application/vnd.chipnuts.karaoke-mmd",
660
+ "mmf" => "application/x-smaf",
661
+ "mml" => "text/mathml",
662
+ "mmr" => "image/vnd.fujixerox.edmics-mmr",
663
+ "mng" => "video/x-mng",
664
+ "mno" => "text/xml",
665
+ "mny" => "application/x-msmoney",
666
+ "mobi" => "application/x-mobipocket-ebook",
667
+ "mod" => "video/mpeg",
668
+ "mods" => "application/mods+xml",
669
+ "mov" => "video/quicktime",
670
+ "movie" => "video/x-sgi-movie",
671
+ "mp2" => "audio/mpeg",
672
+ "mp21" => "application/mp21",
673
+ "mp2a" => "audio/mpeg",
674
+ "mp2v" => "video/mpeg",
675
+ "mp3" => "audio/mpeg",
676
+ "mp4" => "video/mp4",
677
+ "mp4a" => "audio/mp4",
678
+ "mp4s" => "application/mp4",
679
+ "mp4v" => "video/mp4",
680
+ "mpa" => "video/mpeg",
681
+ "mpc" => "application/vnd.mophun.certificate",
682
+ "mpd" => "application/dash+xml",
683
+ "mpe" => "video/mpeg",
684
+ "mpeg" => "video/mpeg",
685
+ "mpf" => "application/vnd.ms-mediapackage",
686
+ "mpg" => "video/mpeg",
687
+ "mpg4" => "video/mp4",
688
+ "mpga" => "audio/mpeg",
689
+ "mpkg" => "application/vnd.apple.installer+xml",
690
+ "mpm" => "application/vnd.blueice.multipass",
691
+ "mpn" => "application/vnd.mophun.application",
692
+ "mpp" => "application/vnd.ms-project",
693
+ "mpt" => "application/vnd.ms-project",
694
+ "mpv2" => "video/mpeg",
695
+ "mpy" => "application/vnd.ibm.minipay",
696
+ "mqv" => "video/quicktime",
697
+ "mqy" => "application/vnd.mobius.mqy",
698
+ "mrc" => "application/marc",
699
+ "mrcx" => "application/marcxml+xml",
700
+ "mrw" => "image/x-minolta-mrw",
701
+ "ms" => "application/x-troff-ms",
702
+ "mscml" => "application/mediaservercontrol+xml",
703
+ "mseed" => "application/vnd.fdsn.mseed",
704
+ "mseq" => "application/vnd.mseq",
705
+ "msf" => "application/vnd.epson.msf",
706
+ "msg" => "application/vnd.ms-outlook",
707
+ "msh" => "model/mesh",
708
+ "msi" => "application/octet-stream",
709
+ "msl" => "application/vnd.mobius.msl",
710
+ "msm" => "application/octet-stream",
711
+ "mso" => "application/octet-stream",
712
+ "msp" => "application/octet-stream",
713
+ "msty" => "application/vnd.muvee.style",
714
+ "mts" => "video/vnd.dlna.mpeg-tts",
715
+ "mtx" => "application/xml",
716
+ "mus" => "application/vnd.musician",
717
+ "musicxml" => "application/vnd.recordare.musicxml+xml",
718
+ "mvb" => "application/x-msmediaview",
719
+ "mvc" => "application/x-miva-compiled",
720
+ "mwf" => "application/vnd.mfer",
721
+ "mxf" => "application/mxf",
722
+ "mxl" => "application/vnd.recordare.musicxml",
723
+ "mxml" => "application/xv+xml",
724
+ "mxp" => "application/x-mmxp",
725
+ "mxs" => "application/vnd.triscape.mxs",
726
+ "mxu" => "video/vnd.mpegurl",
727
+ "n-gage" => "application/vnd.nokia.n-gage.symbian.install",
728
+ "n3" => "text/n3",
729
+ "nb" => "application/mathematica",
730
+ "nbp" => "application/vnd.wolfram.player",
731
+ "nc" => "application/x-netcdf",
732
+ "ncx" => "application/x-dtbncx+xml",
733
+ "nef" => "image/x-nikon-nef",
734
+ "nfo" => "text/x-nfo",
735
+ "ngdat" => "application/vnd.nokia.n-gage.data",
736
+ "nitf" => "application/vnd.nitf",
737
+ "nlu" => "application/vnd.neurolanguage.nlu",
738
+ "nml" => "application/vnd.enliven",
739
+ "nnd" => "application/vnd.noblenet-directory",
740
+ "nns" => "application/vnd.noblenet-sealer",
741
+ "nnw" => "application/vnd.noblenet-web",
742
+ "npx" => "image/vnd.net-fpx",
743
+ "nq" => "application/n-quads",
744
+ "nrw" => "image/x-nikon-nrw",
745
+ "nsc" => "video/x-ms-asf",
746
+ "nsf" => "application/vnd.lotus-notes",
747
+ "nt" => "application/n-triples",
748
+ "ntf" => "application/vnd.nitf",
749
+ "nws" => "message/rfc822",
750
+ "nzb" => "application/x-nzb",
751
+ "oa2" => "application/vnd.fujitsu.oasys2",
752
+ "oa3" => "application/vnd.fujitsu.oasys3",
753
+ "oas" => "application/vnd.fujitsu.oasys",
754
+ "obd" => "application/x-msbinder",
755
+ "obj" => "application/x-tgif",
756
+ "ocx" => "application/octet-stream",
757
+ "oda" => "application/oda",
758
+ "odb" => "application/vnd.oasis.opendocument.database",
759
+ "odc" => "application/vnd.oasis.opendocument.chart",
760
+ "odf" => "application/vnd.oasis.opendocument.formula",
761
+ "odft" => "application/vnd.oasis.opendocument.formula-template",
762
+ "odg" => "application/vnd.oasis.opendocument.graphics",
763
+ "odh" => "text/plain",
764
+ "odi" => "application/vnd.oasis.opendocument.image",
765
+ "odl" => "text/plain",
766
+ "odm" => "application/vnd.oasis.opendocument.text-master",
767
+ "odp" => "application/vnd.oasis.opendocument.presentation",
768
+ "ods" => "application/vnd.oasis.opendocument.spreadsheet",
769
+ "odt" => "application/vnd.oasis.opendocument.text",
770
+ "oga" => "audio/ogg",
771
+ "ogg" => "audio/ogg",
772
+ "ogv" => "video/ogg",
773
+ "ogx" => "application/ogg",
774
+ "omdoc" => "application/omdoc+xml",
775
+ "one" => "application/onenote",
776
+ "onea" => "application/onenote",
777
+ "onepkg" => "application/onenote",
778
+ "onetmp" => "application/onenote",
779
+ "onetoc" => "application/onenote",
780
+ "onetoc2" => "application/onenote",
781
+ "opf" => "application/oebps-package+xml",
782
+ "opml" => "text/x-opml",
783
+ "oprc" => "application/vnd.palm",
784
+ "opus" => "audio/ogg",
785
+ "orderedtest" => "application/xml",
786
+ "orf" => "image/x-olympus-orf",
787
+ "org" => "application/vnd.lotus-organizer",
788
+ "osdx" => "application/opensearchdescription+xml",
789
+ "osf" => "application/vnd.yamaha.openscoreformat",
790
+ "osfpvg" => "application/vnd.yamaha.openscoreformat.osfpvg+xml",
791
+ "otc" => "application/vnd.oasis.opendocument.chart-template",
792
+ "otf" => "application/font-sfnt",
793
+ "otg" => "application/vnd.oasis.opendocument.graphics-template",
794
+ "oth" => "application/vnd.oasis.opendocument.text-web",
795
+ "oti" => "application/vnd.oasis.opendocument.image-template",
796
+ "otp" => "application/vnd.oasis.opendocument.presentation-template",
797
+ "ots" => "application/vnd.oasis.opendocument.spreadsheet-template",
798
+ "ott" => "application/vnd.oasis.opendocument.text-template",
799
+ "ova" => "application/x-virtualbox-ova",
800
+ "ovf" => "application/x-virtualbox-ovf",
801
+ "oxps" => "application/oxps",
802
+ "oxt" => "application/vnd.openofficeorg.extension",
803
+ "p" => "text/x-pascal",
804
+ "p10" => "application/pkcs10",
805
+ "p12" => "application/x-pkcs12",
806
+ "p7b" => "application/x-pkcs7-certificates",
807
+ "p7c" => "application/pkcs7-mime",
808
+ "p7m" => "application/pkcs7-mime",
809
+ "p7r" => "application/x-pkcs7-certreqresp",
810
+ "p7s" => "application/pkcs7-signature",
811
+ "p8" => "application/pkcs8",
812
+ "pac" => "application/x-ns-proxy-autoconfig",
813
+ "parquet" => "application/vnd.apache.parquet",
814
+ "pas" => "text/x-pascal",
815
+ "paw" => "application/vnd.pawaafile",
816
+ "pbd" => "application/vnd.powerbuilder6",
817
+ "pbm" => "image/x-portable-bitmap",
818
+ "pcap" => "application/vnd.tcpdump.pcap",
819
+ "pcast" => "application/x-podcast",
820
+ "pcf" => "application/x-font-pcf",
821
+ "pcl" => "application/vnd.hp-pcl",
822
+ "pclxl" => "application/vnd.hp-pclxl",
823
+ "pct" => "image/pict",
824
+ "pcurl" => "application/vnd.curl.pcurl",
825
+ "pcx" => "application/octet-stream",
826
+ "pcz" => "application/octet-stream",
827
+ "pdb" => "application/vnd.palm",
828
+ "pde" => "text/x-processing",
829
+ "pdf" => "application/pdf",
830
+ "pef" => "image/x-pentax-pef",
831
+ "pem" => "application/x-x509-ca-cert",
832
+ "pfa" => "application/x-font-type1",
833
+ "pfb" => "application/octet-stream",
834
+ "pfm" => "application/octet-stream",
835
+ "pfr" => "application/font-tdpfr",
836
+ "pfx" => "application/x-pkcs12",
837
+ "pgm" => "image/x-portable-graymap",
838
+ "pgn" => "application/x-chess-pgn",
839
+ "pgp" => "application/pgp-encrypted",
840
+ "php" => "application/x-httpd-php",
841
+ "pic" => "image/pict",
842
+ "pict" => "image/pict",
843
+ "pkg" => "application/octet-stream",
844
+ "pkgdef" => "text/plain",
845
+ "pkgundef" => "text/plain",
846
+ "pki" => "application/pkixcmp",
847
+ "pkipath" => "application/pkix-pkipath",
848
+ "pko" => "application/vnd.ms-pki.pko",
849
+ "pkpass" => "application/vnd.apple.pkpass",
850
+ "pl" => "application/x-perl",
851
+ "plb" => "application/vnd.3gpp.pic-bw-large",
852
+ "plc" => "application/vnd.mobius.plc",
853
+ "plf" => "application/vnd.pocketlearn",
854
+ "pls" => "audio/scpls",
855
+ "pm" => "application/x-perl",
856
+ "pma" => "application/x-perfmon",
857
+ "pmc" => "application/x-perfmon",
858
+ "pml" => "application/x-perfmon",
859
+ "pmr" => "application/x-perfmon",
860
+ "pmw" => "application/x-perfmon",
861
+ "png" => "image/png",
862
+ "pnm" => "image/x-portable-anymap",
863
+ "pnt" => "image/x-macpaint",
864
+ "pntg" => "image/x-macpaint",
865
+ "pnz" => "image/png",
866
+ "portpkg" => "application/vnd.macports.portpkg",
867
+ "pot" => "application/vnd.ms-powerpoint",
868
+ "potm" => "application/vnd.ms-powerpoint.template.macroEnabled.12",
869
+ "potx" => "application/vnd.openxmlformats-officedocument.presentationml.template",
870
+ "ppa" => "application/vnd.ms-powerpoint",
871
+ "ppam" => "application/vnd.ms-powerpoint.addin.macroEnabled.12",
872
+ "ppd" => "application/vnd.cups-ppd",
873
+ "ppm" => "image/x-portable-pixmap",
874
+ "pps" => "application/vnd.ms-powerpoint",
875
+ "ppsm" => "application/vnd.ms-powerpoint.slideshow.macroEnabled.12",
876
+ "ppsx" => "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
877
+ "ppt" => "application/vnd.ms-powerpoint",
878
+ "pptm" => "application/vnd.ms-powerpoint.presentation.macroEnabled.12",
879
+ "pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation",
880
+ "pqa" => "application/vnd.palm",
881
+ "prc" => "application/x-mobipocket-ebook",
882
+ "pre" => "application/vnd.lotus-freelance",
883
+ "prf" => "application/pics-rules",
884
+ "prm" => "application/octet-stream",
885
+ "prx" => "application/octet-stream",
886
+ "ps" => "application/postscript",
887
+ "psb" => "application/vnd.3gpp.pic-bw-small",
888
+ "psc1" => "application/PowerShell",
889
+ "psd" => "application/octet-stream",
890
+ "psess" => "application/xml",
891
+ "psf" => "application/x-font-linux-psf",
892
+ "pskcxml" => "application/pskc+xml",
893
+ "psm" => "application/octet-stream",
894
+ "psp" => "application/octet-stream",
895
+ "pst" => "application/vnd.ms-outlook",
896
+ "ptid" => "application/vnd.pvi.ptid1",
897
+ "pub" => "application/x-mspublisher",
898
+ "pvb" => "application/vnd.3gpp.pic-bw-var",
899
+ "pwn" => "application/vnd.3m.post-it-notes",
900
+ "pwz" => "application/vnd.ms-powerpoint",
901
+ "py" => "text/plain",
902
+ "pya" => "audio/vnd.ms-playready.media.pya",
903
+ "pyv" => "video/vnd.ms-playready.media.pyv",
904
+ "qam" => "application/vnd.epson.quickanime",
905
+ "qbo" => "application/vnd.intu.qbo",
906
+ "qfx" => "application/vnd.intu.qfx",
907
+ "qht" => "text/x-html-insertion",
908
+ "qhtm" => "text/x-html-insertion",
909
+ "qps" => "application/vnd.publishare-delta-tree",
910
+ "qt" => "video/quicktime",
911
+ "qti" => "image/x-quicktime",
912
+ "qtif" => "image/x-quicktime",
913
+ "qtl" => "application/x-quicktimeplayer",
914
+ "qwd" => "application/vnd.quark.quarkxpress",
915
+ "qwt" => "application/vnd.quark.quarkxpress",
916
+ "qxb" => "application/vnd.quark.quarkxpress",
917
+ "qxd" => "application/octet-stream",
918
+ "qxl" => "application/vnd.quark.quarkxpress",
919
+ "qxt" => "application/vnd.quark.quarkxpress",
920
+ "ra" => "audio/x-pn-realaudio",
921
+ "raf" => "image/x-fuji-raf",
922
+ "ram" => "audio/x-pn-realaudio",
923
+ "raml" => "application/raml+yaml",
924
+ "rar" => "application/x-rar-compressed",
925
+ "ras" => "image/x-cmu-raster",
926
+ "rat" => "application/rat-file",
927
+ "raw" => "image/x-panasonic-rw",
928
+ "rb" => "text/plain",
929
+ "rc" => "text/plain",
930
+ "rc2" => "text/plain",
931
+ "rcprofile" => "application/vnd.ipunplugged.rcprofile",
932
+ "rct" => "text/plain",
933
+ "rdf" => "application/rdf+xml",
934
+ "rdlc" => "application/xml",
935
+ "rdz" => "application/vnd.data-vision.rdz",
936
+ "reg" => "text/plain",
937
+ "rep" => "application/vnd.businessobjects",
938
+ "res" => "application/x-dtbresource+xml",
939
+ "resx" => "application/xml",
940
+ "rf" => "image/vnd.rn-realflash",
941
+ "rgb" => "image/x-rgb",
942
+ "rgs" => "text/plain",
943
+ "rif" => "application/reginfo+xml",
944
+ "rip" => "audio/vnd.rip",
945
+ "ris" => "application/x-research-info-systems",
946
+ "rl" => "application/resource-lists+xml",
947
+ "rlc" => "image/vnd.fujixerox.edmics-rlc",
948
+ "rld" => "application/resource-lists-diff+xml",
949
+ "rm" => "application/vnd.rn-realmedia",
950
+ "rmi" => "audio/mid",
951
+ "rmp" => "application/vnd.rn-rn_music_package",
952
+ "rms" => "application/vnd.jcp.javame.midlet-rms",
953
+ "rmvb" => "application/vnd.rn-realmedia-vbr",
954
+ "rnc" => "application/relax-ng-compact-syntax",
955
+ "rng" => "application/xml",
956
+ "roa" => "application/rpki-roa",
957
+ "roff" => "application/x-troff",
958
+ "rp9" => "application/vnd.cloanto.rp9",
959
+ "rpm" => "audio/x-pn-realaudio-plugin",
960
+ "rpss" => "application/vnd.nokia.radio-presets",
961
+ "rpst" => "application/vnd.nokia.radio-preset",
962
+ "rq" => "application/sparql-query",
963
+ "rqy" => "text/x-ms-rqy",
964
+ "rs" => "text/x-rust",
965
+ "rsd" => "application/rsd+xml",
966
+ "rss" => "application/rss+xml",
967
+ "rtf" => "application/rtf",
968
+ "rtx" => "text/richtext",
969
+ "ruleset" => "application/xml",
970
+ "run" => "application/x-makeself",
971
+ "rvt" => "application/octet-stream",
972
+ "rw2" => "image/x-panasonic-rw2",
973
+ "rwl" => "image/x-panasonic-rw2",
974
+ "s" => "text/plain",
975
+ "s3m" => "audio/s3m",
976
+ "saf" => "application/vnd.yamaha.smaf-audio",
977
+ "safariextz" => "application/x-safari-safariextz",
978
+ "sass" => "text/x-sass",
979
+ "sbml" => "application/sbml+xml",
980
+ "sc" => "application/vnd.ibm.secure-container",
981
+ "scd" => "application/x-msschedule",
982
+ "scm" => "application/vnd.lotus-screencam",
983
+ "scq" => "application/scvp-cv-request",
984
+ "scr" => "text/plain",
985
+ "scs" => "application/scvp-cv-response",
986
+ "scss" => "text/x-scss",
987
+ "sct" => "text/scriptlet",
988
+ "scurl" => "text/vnd.curl.scurl",
989
+ "sd2" => "audio/x-sd2",
990
+ "sda" => "application/vnd.stardivision.draw",
991
+ "sdc" => "application/vnd.stardivision.calc",
992
+ "sdd" => "application/vnd.stardivision.impress",
993
+ "sdkd" => "application/vnd.solent.sdkm+xml",
994
+ "sdkm" => "application/vnd.solent.sdkm+xml",
995
+ "sdp" => "application/sdp",
996
+ "sdw" => "application/vnd.stardivision.writer",
997
+ "sea" => "application/octet-stream",
998
+ "searchconnector-ms" => "application/windows-search-connector+xml",
999
+ "see" => "application/vnd.seemail",
1000
+ "seed" => "application/vnd.fdsn.seed",
1001
+ "sema" => "application/vnd.sema",
1002
+ "semd" => "application/vnd.semd",
1003
+ "semf" => "application/vnd.semf",
1004
+ "ser" => "application/java-serialized-object",
1005
+ "setpay" => "application/set-payment-initiation",
1006
+ "setreg" => "application/set-registration-initiation",
1007
+ "settings" => "application/xml",
1008
+ "sfd-hdstx" => "application/vnd.hydrostatix.sof-data",
1009
+ "sfs" => "application/vnd.spotfire.sfs",
1010
+ "sfv" => "text/x-sfv",
1011
+ "sgi" => "image/sgi",
1012
+ "sgimb" => "application/x-sgimb",
1013
+ "sgl" => "application/vnd.stardivision.writer-global",
1014
+ "sgm" => "text/sgml",
1015
+ "sgml" => "text/sgml",
1016
+ "sh" => "application/x-sh",
1017
+ "shar" => "application/x-shar",
1018
+ "shex" => "text/shex",
1019
+ "shf" => "application/shf+xml",
1020
+ "shtml" => "text/html",
1021
+ "sid" => "image/x-mrsid-image",
1022
+ "sig" => "application/pgp-signature",
1023
+ "sil" => "audio/silk",
1024
+ "silo" => "model/mesh",
1025
+ "sis" => "application/vnd.symbian.install",
1026
+ "sisx" => "application/vnd.symbian.install",
1027
+ "sit" => "application/x-stuffit",
1028
+ "sitemap" => "application/xml",
1029
+ "sitx" => "application/x-stuffitx",
1030
+ "skd" => "application/vnd.koan",
1031
+ "skin" => "application/xml",
1032
+ "skm" => "application/vnd.koan",
1033
+ "skp" => "application/x-koan",
1034
+ "skt" => "application/vnd.koan",
1035
+ "sldm" => "application/vnd.ms-powerpoint.slide.macroEnabled.12",
1036
+ "sldx" => "application/vnd.openxmlformats-officedocument.presentationml.slide",
1037
+ "slim" => "text/slim",
1038
+ "slk" => "application/vnd.ms-excel",
1039
+ "slm" => "text/slim",
1040
+ "sln" => "text/plain",
1041
+ "slt" => "application/vnd.epson.salt",
1042
+ "slupkg-ms" => "application/x-ms-license",
1043
+ "sm" => "application/vnd.stepmania.stepchart",
1044
+ "smd" => "audio/x-smd",
1045
+ "smf" => "application/vnd.stardivision.math",
1046
+ "smi" => "application/octet-stream",
1047
+ "smil" => "application/smil+xml",
1048
+ "smv" => "video/x-smv",
1049
+ "smx" => "audio/x-smd",
1050
+ "smz" => "audio/x-smd",
1051
+ "smzip" => "application/vnd.stepmania.package",
1052
+ "snd" => "audio/basic",
1053
+ "snf" => "application/x-font-snf",
1054
+ "snippet" => "application/xml",
1055
+ "snp" => "application/octet-stream",
1056
+ "so" => "application/octet-stream",
1057
+ "sol" => "text/plain",
1058
+ "sor" => "text/plain",
1059
+ "spc" => "application/x-pkcs7-certificates",
1060
+ "spf" => "application/vnd.yamaha.smaf-phrase",
1061
+ "spl" => "application/futuresplash",
1062
+ "spot" => "text/vnd.in3d.spot",
1063
+ "spp" => "application/scvp-vp-response",
1064
+ "spq" => "application/scvp-vp-request",
1065
+ "spx" => "audio/ogg",
1066
+ "sql" => "application/x-sql",
1067
+ "sr2" => "image/x-sony-sr2",
1068
+ "src" => "application/x-wais-source",
1069
+ "srf" => "text/plain",
1070
+ "srt" => "application/x-subrip",
1071
+ "sru" => "application/sru+xml",
1072
+ "srx" => "application/sparql-results+xml",
1073
+ "ssdl" => "application/ssdl+xml",
1074
+ "sse" => "application/vnd.kodak-descriptor",
1075
+ "ssf" => "application/vnd.epson.ssf",
1076
+ "ssisdeploymentmanifest" => "text/xml",
1077
+ "ssm" => "application/streamingmedia",
1078
+ "ssml" => "application/ssml+xml",
1079
+ "sst" => "application/vnd.ms-pki.certstore",
1080
+ "st" => "application/vnd.sailingtracker.track",
1081
+ "stc" => "application/vnd.sun.xml.calc.template",
1082
+ "std" => "application/vnd.sun.xml.draw.template",
1083
+ "step" => "application/step",
1084
+ "stf" => "application/vnd.wt.stf",
1085
+ "sti" => "application/vnd.sun.xml.impress.template",
1086
+ "stk" => "application/hyperstudio",
1087
+ "stl" => "application/vnd.ms-pki.stl",
1088
+ "stp" => "application/step",
1089
+ "str" => "application/vnd.pg.format",
1090
+ "stw" => "application/vnd.sun.xml.writer.template",
1091
+ "styl" => "text/stylus",
1092
+ "stylus" => "text/stylus",
1093
+ "sub" => "text/vnd.dvb.subtitle",
1094
+ "sus" => "application/vnd.sus-calendar",
1095
+ "susp" => "application/vnd.sus-calendar",
1096
+ "sv4cpio" => "application/x-sv4cpio",
1097
+ "sv4crc" => "application/x-sv4crc",
1098
+ "svc" => "application/xml",
1099
+ "svd" => "application/vnd.svd",
1100
+ "svg" => "image/svg+xml",
1101
+ "svgz" => "image/svg+xml",
1102
+ "swa" => "application/x-director",
1103
+ "swf" => "application/x-shockwave-flash",
1104
+ "swi" => "application/vnd.aristanetworks.swi",
1105
+ "sxc" => "application/vnd.sun.xml.calc",
1106
+ "sxd" => "application/vnd.sun.xml.draw",
1107
+ "sxg" => "application/vnd.sun.xml.writer.global",
1108
+ "sxi" => "application/vnd.sun.xml.impress",
1109
+ "sxm" => "application/vnd.sun.xml.math",
1110
+ "sxw" => "application/vnd.sun.xml.writer",
1111
+ "t" => "application/x-troff",
1112
+ "t3" => "application/x-t3vm-image",
1113
+ "taglet" => "application/vnd.mynfc",
1114
+ "tao" => "application/vnd.tao.intent-module-archive",
1115
+ "tar" => "application/x-tar",
1116
+ "tcap" => "application/vnd.3gpp2.tcap",
1117
+ "tcl" => "application/x-tcl",
1118
+ "teacher" => "application/vnd.smart.teacher",
1119
+ "tei" => "application/tei+xml",
1120
+ "teicorpus" => "application/tei+xml",
1121
+ "testrunconfig" => "application/xml",
1122
+ "testsettings" => "application/xml",
1123
+ "tex" => "application/x-tex",
1124
+ "texi" => "application/x-texinfo",
1125
+ "texinfo" => "application/x-texinfo",
1126
+ "text" => "text/plain",
1127
+ "tfi" => "application/thraud+xml",
1128
+ "tfm" => "application/x-tex-tfm",
1129
+ "tga" => "image/x-tga",
1130
+ "tgz" => "application/x-compressed",
1131
+ "thmx" => "application/vnd.ms-officetheme",
1132
+ "thn" => "application/octet-stream",
1133
+ "tif" => "image/tiff",
1134
+ "tiff" => "image/tiff",
1135
+ "tk" => "application/x-tcl",
1136
+ "tlh" => "text/plain",
1137
+ "tli" => "text/plain",
1138
+ "tmo" => "application/vnd.tmobile-livetv",
1139
+ "toc" => "application/octet-stream",
1140
+ "toml" => "text/x-toml",
1141
+ "torrent" => "application/x-bittorrent",
1142
+ "tpl" => "application/vnd.groove-tool-template",
1143
+ "tpt" => "application/vnd.trid.tpt",
1144
+ "tr" => "application/x-troff",
1145
+ "tra" => "application/vnd.trueapp",
1146
+ "trig" => "application/trig",
1147
+ "trm" => "application/x-msterminal",
1148
+ "trx" => "application/xml",
1149
+ "ts" => "video/vnd.dlna.mpeg-tts",
1150
+ "tsd" => "application/timestamped-data",
1151
+ "tsv" => "text/tab-separated-values",
1152
+ "ttc" => "font/collection",
1153
+ "ttf" => "font/ttf",
1154
+ "ttl" => "text/turtle",
1155
+ "tts" => "video/vnd.dlna.mpeg-tts",
1156
+ "twd" => "application/vnd.simtech-mindmapper",
1157
+ "twds" => "application/vnd.simtech-mindmapper",
1158
+ "txd" => "application/vnd.genomatix.tuxedo",
1159
+ "txf" => "application/vnd.mobius.txf",
1160
+ "txt" => "text/plain",
1161
+ "u32" => "application/octet-stream",
1162
+ "u8dsn" => "message/global-delivery-status",
1163
+ "u8hdr" => "message/global-headers",
1164
+ "u8mdn" => "message/global-disposition-notification",
1165
+ "u8msg" => "message/global",
1166
+ "udeb" => "application/x-debian-package",
1167
+ "ufd" => "application/vnd.ufdl",
1168
+ "ufdl" => "application/vnd.ufdl",
1169
+ "uls" => "text/iuls",
1170
+ "ulx" => "application/x-glulx",
1171
+ "umj" => "application/vnd.umajin",
1172
+ "unityweb" => "application/vnd.unity",
1173
+ "uoml" => "application/vnd.uoml+xml",
1174
+ "uri" => "text/uri-list",
1175
+ "uris" => "text/uri-list",
1176
+ "urls" => "text/uri-list",
1177
+ "user" => "text/plain",
1178
+ "ustar" => "application/x-ustar",
1179
+ "utz" => "application/vnd.uiq.theme",
1180
+ "uu" => "text/x-uuencode",
1181
+ "uva" => "audio/vnd.dece.audio",
1182
+ "uvd" => "application/vnd.dece.data",
1183
+ "uvf" => "application/vnd.dece.data",
1184
+ "uvg" => "image/vnd.dece.graphic",
1185
+ "uvh" => "video/vnd.dece.hd",
1186
+ "uvi" => "image/vnd.dece.graphic",
1187
+ "uvm" => "video/vnd.dece.mobile",
1188
+ "uvp" => "video/vnd.dece.pd",
1189
+ "uvs" => "video/vnd.dece.sd",
1190
+ "uvt" => "application/vnd.dece.ttml+xml",
1191
+ "uvu" => "video/vnd.uvvu.mp4",
1192
+ "uvv" => "video/vnd.dece.video",
1193
+ "uvva" => "audio/vnd.dece.audio",
1194
+ "uvvd" => "application/vnd.dece.data",
1195
+ "uvvf" => "application/vnd.dece.data",
1196
+ "uvvg" => "image/vnd.dece.graphic",
1197
+ "uvvh" => "video/vnd.dece.hd",
1198
+ "uvvi" => "image/vnd.dece.graphic",
1199
+ "uvvm" => "video/vnd.dece.mobile",
1200
+ "uvvp" => "video/vnd.dece.pd",
1201
+ "uvvs" => "video/vnd.dece.sd",
1202
+ "uvvt" => "application/vnd.dece.ttml+xml",
1203
+ "uvvu" => "video/vnd.uvvu.mp4",
1204
+ "uvvv" => "video/vnd.dece.video",
1205
+ "uvvx" => "application/vnd.dece.unspecified",
1206
+ "uvvz" => "application/vnd.dece.zip",
1207
+ "uvx" => "application/vnd.dece.unspecified",
1208
+ "uvz" => "application/vnd.dece.zip",
1209
+ "vb" => "text/plain",
1210
+ "vbdproj" => "text/plain",
1211
+ "vbk" => "video/mpeg",
1212
+ "vbox" => "application/x-virtualbox-vbox",
1213
+ "vbox-extpack" => "application/x-virtualbox-vbox-extpack",
1214
+ "vbproj" => "text/plain",
1215
+ "vbs" => "text/vbscript",
1216
+ "vcard" => "text/vcard",
1217
+ "vcd" => "application/x-cdlink",
1218
+ "vcf" => "text/x-vcard",
1219
+ "vcg" => "application/vnd.groove-vcard",
1220
+ "vcproj" => "application/xml",
1221
+ "vcs" => "text/plain",
1222
+ "vcx" => "application/vnd.vcx",
1223
+ "vcxproj" => "application/xml",
1224
+ "vddproj" => "text/plain",
1225
+ "vdi" => "application/x-virtualbox-vdi",
1226
+ "vdp" => "text/plain",
1227
+ "vdproj" => "text/plain",
1228
+ "vdx" => "application/vnd.ms-visio.viewer",
1229
+ "vhd" => "application/x-virtualbox-vhd",
1230
+ "vis" => "application/vnd.visionary",
1231
+ "viv" => "video/vnd.vivo",
1232
+ "vmdk" => "application/x-virtualbox-vmdk",
1233
+ "vml" => "text/xml",
1234
+ "vob" => "video/x-ms-vob",
1235
+ "vor" => "application/vnd.stardivision.writer",
1236
+ "vox" => "application/x-authorware-bin",
1237
+ "vrml" => "model/vrml",
1238
+ "vscontent" => "application/xml",
1239
+ "vsct" => "text/xml",
1240
+ "vsd" => "application/vnd.visio",
1241
+ "vsf" => "application/vnd.vsf",
1242
+ "vsi" => "application/ms-vsi",
1243
+ "vsix" => "application/vsix",
1244
+ "vsixlangpack" => "text/xml",
1245
+ "vsixmanifest" => "text/xml",
1246
+ "vsmdi" => "application/xml",
1247
+ "vspscc" => "text/plain",
1248
+ "vss" => "application/vnd.visio",
1249
+ "vsscc" => "text/plain",
1250
+ "vssettings" => "text/xml",
1251
+ "vssscc" => "text/plain",
1252
+ "vst" => "application/vnd.visio",
1253
+ "vstemplate" => "text/xml",
1254
+ "vsto" => "application/x-ms-vsto",
1255
+ "vsw" => "application/vnd.visio",
1256
+ "vsx" => "application/vnd.visio",
1257
+ "vtt" => "text/vtt",
1258
+ "vtu" => "model/vnd.vtu",
1259
+ "vtx" => "application/vnd.visio",
1260
+ "vxml" => "application/voicexml+xml",
1261
+ "w3d" => "application/x-director",
1262
+ "wad" => "application/x-doom",
1263
+ "wadl" => "application/vnd.sun.wadl+xml",
1264
+ "war" => "application/java-archive",
1265
+ "wasm" => "application/wasm",
1266
+ "wav" => "audio/wav",
1267
+ "wave" => "audio/wav",
1268
+ "wax" => "audio/x-ms-wax",
1269
+ "wbk" => "application/msword",
1270
+ "wbmp" => "image/vnd.wap.wbmp",
1271
+ "wbs" => "application/vnd.criticaltools.wbs+xml",
1272
+ "wbxml" => "application/vnd.wap.wbxml",
1273
+ "wcm" => "application/vnd.ms-works",
1274
+ "wdb" => "application/vnd.ms-works",
1275
+ "wdp" => "image/vnd.ms-photo",
1276
+ "weba" => "audio/webm",
1277
+ "webapp" => "application/x-web-app-manifest+json",
1278
+ "webarchive" => "application/x-safari-webarchive",
1279
+ "webm" => "video/webm",
1280
+ "webmanifest" => "application/manifest+json",
1281
+ "webp" => "image/webp",
1282
+ "webtest" => "application/xml",
1283
+ "wg" => "application/vnd.pmi.widget",
1284
+ "wgt" => "application/widget",
1285
+ "wiq" => "application/xml",
1286
+ "wiz" => "application/msword",
1287
+ "wks" => "application/vnd.ms-works",
1288
+ "wlmp" => "application/wlmoviemaker",
1289
+ "wlpginstall" => "application/x-wlpg-detect",
1290
+ "wlpginstall3" => "application/x-wlpg3-detect",
1291
+ "wm" => "video/x-ms-wm",
1292
+ "wma" => "audio/x-ms-wma",
1293
+ "wmd" => "application/x-ms-wmd",
1294
+ "wmf" => "application/x-msmetafile",
1295
+ "wml" => "text/vnd.wap.wml",
1296
+ "wmlc" => "application/vnd.wap.wmlc",
1297
+ "wmls" => "text/vnd.wap.wmlscript",
1298
+ "wmlsc" => "application/vnd.wap.wmlscriptc",
1299
+ "wmp" => "video/x-ms-wmp",
1300
+ "wmv" => "video/x-ms-wmv",
1301
+ "wmx" => "video/x-ms-wmx",
1302
+ "wmz" => "application/x-ms-wmz",
1303
+ "woff" => "application/font-woff",
1304
+ "woff2" => "font/woff2",
1305
+ "wpd" => "application/vnd.wordperfect",
1306
+ "wpl" => "application/vnd.ms-wpl",
1307
+ "wps" => "application/vnd.ms-works",
1308
+ "wqd" => "application/vnd.wqd",
1309
+ "wri" => "application/x-mswrite",
1310
+ "wrl" => "x-world/x-vrml",
1311
+ "wrz" => "x-world/x-vrml",
1312
+ "wsc" => "text/scriptlet",
1313
+ "wsdl" => "text/xml",
1314
+ "wspolicy" => "application/wspolicy+xml",
1315
+ "wtb" => "application/vnd.webturbo",
1316
+ "wvx" => "video/x-ms-wvx",
1317
+ "x" => "application/directx",
1318
+ "x32" => "application/x-authorware-bin",
1319
+ "x3d" => "model/x3d+xml",
1320
+ "x3db" => "model/x3d+binary",
1321
+ "x3dbz" => "model/x3d+binary",
1322
+ "x3dv" => "model/x3d+vrml",
1323
+ "x3dvz" => "model/x3d+vrml",
1324
+ "x3dz" => "model/x3d+xml",
1325
+ "x3f" => "image/x-sigma-x3f",
1326
+ "xaf" => "x-world/x-vrml",
1327
+ "xaml" => "application/xaml+xml",
1328
+ "xap" => "application/x-silverlight-app",
1329
+ "xar" => "application/vnd.xara",
1330
+ "xbap" => "application/x-ms-xbap",
1331
+ "xbd" => "application/vnd.fujixerox.docuworks.binder",
1332
+ "xbm" => "image/x-xbitmap",
1333
+ "xdf" => "application/xcap-diff+xml",
1334
+ "xdm" => "application/vnd.syncml.dm+xml",
1335
+ "xdp" => "application/vnd.adobe.xdp+xml",
1336
+ "xdr" => "text/plain",
1337
+ "xdssc" => "application/dssc+xml",
1338
+ "xdw" => "application/vnd.fujixerox.docuworks",
1339
+ "xenc" => "application/xenc+xml",
1340
+ "xer" => "application/patch-ops-error+xml",
1341
+ "xfdf" => "application/vnd.adobe.xfdf",
1342
+ "xfdl" => "application/vnd.xfdl",
1343
+ "xht" => "application/xhtml+xml",
1344
+ "xhtml" => "application/xhtml+xml",
1345
+ "xhvml" => "application/xv+xml",
1346
+ "xif" => "image/vnd.xiff",
1347
+ "xla" => "application/vnd.ms-excel",
1348
+ "xlam" => "application/vnd.ms-excel.addin.macroEnabled.12",
1349
+ "xlc" => "application/vnd.ms-excel",
1350
+ "xld" => "application/vnd.ms-excel",
1351
+ "xlf" => "application/x-xliff+xml",
1352
+ "xlk" => "application/vnd.ms-excel",
1353
+ "xll" => "application/vnd.ms-excel",
1354
+ "xlm" => "application/vnd.ms-excel",
1355
+ "xls" => "application/vnd.ms-excel",
1356
+ "xlsb" => "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
1357
+ "xlsm" => "application/vnd.ms-excel.sheet.macroEnabled.12",
1358
+ "xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
1359
+ "xlt" => "application/vnd.ms-excel",
1360
+ "xltm" => "application/vnd.ms-excel.template.macroEnabled.12",
1361
+ "xltx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
1362
+ "xlw" => "application/vnd.ms-excel",
1363
+ "xm" => "audio/xm",
1364
+ "xml" => "text/xml",
1365
+ "xmp" => "application/octet-stream",
1366
+ "xmta" => "application/xml",
1367
+ "xo" => "application/vnd.olpc-sugar",
1368
+ "xof" => "x-world/x-vrml",
1369
+ "xoml" => "text/plain",
1370
+ "xop" => "application/xop+xml",
1371
+ "xpi" => "application/x-xpinstall",
1372
+ "xpl" => "application/xproc+xml",
1373
+ "xpm" => "image/x-xpixmap",
1374
+ "xpr" => "application/vnd.is-xpr",
1375
+ "xps" => "application/vnd.ms-xpsdocument",
1376
+ "xpw" => "application/vnd.intercon.formnet",
1377
+ "xpx" => "application/vnd.intercon.formnet",
1378
+ "xrm-ms" => "text/xml",
1379
+ "xsc" => "application/xml",
1380
+ "xsd" => "text/xml",
1381
+ "xsf" => "text/xml",
1382
+ "xsl" => "text/xml",
1383
+ "xslt" => "text/xml",
1384
+ "xsm" => "application/vnd.syncml+xml",
1385
+ "xsn" => "application/octet-stream",
1386
+ "xspf" => "application/xspf+xml",
1387
+ "xss" => "application/xml",
1388
+ "xtp" => "application/octet-stream",
1389
+ "xul" => "application/vnd.mozilla.xul+xml",
1390
+ "xvm" => "application/xv+xml",
1391
+ "xvml" => "application/xv+xml",
1392
+ "xwd" => "image/x-xwindowdump",
1393
+ "xyz" => "chemical/x-xyz",
1394
+ "xz" => "application/x-xz",
1395
+ "yaml" => "text/x-yaml",
1396
+ "yang" => "application/yang",
1397
+ "yin" => "application/yin+xml",
1398
+ "yml" => "text/x-yaml",
1399
+ "ymp" => "text/x-suse-ymp",
1400
+ "z" => "application/x-compress",
1401
+ "z1" => "application/x-zmachine",
1402
+ "z2" => "application/x-zmachine",
1403
+ "z3" => "application/x-zmachine",
1404
+ "z4" => "application/x-zmachine",
1405
+ "z5" => "application/x-zmachine",
1406
+ "z6" => "application/x-zmachine",
1407
+ "z7" => "application/x-zmachine",
1408
+ "z8" => "application/x-zmachine",
1409
+ "zaz" => "application/vnd.zzazz.deck+xml",
1410
+ "zip" => "application/zip",
1411
+ "zir" => "application/vnd.zul",
1412
+ "zirz" => "application/vnd.zul",
1413
+ "zmm" => "application/vnd.handheld-entertainment+xml",
1414
+ _ => "application/octet-stream",
1415
+ }
1416
+ }