mirror of
https://github.com/c-cube/nanoev.git
synced 2025-12-06 11:15:48 -05:00
19 lines
11 KiB
HTML
19 lines
11 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Dir (tiny_httpd.Tiny_httpd_unix.Dir)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.0.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">Index</a> » <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_unix</a> » Dir</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_unix.Dir</span></code></h1><p>Serving static content from directories</p><p>This module provides the same functionality as the "http_of_dir" tool. It exposes a directory (and its subdirectories), with the optional ability to delete or upload files.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.11</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-dir_behavior"><a href="#type-dir_behavior" class="anchor"></a><code><span><span class="keyword">type</span> dir_behavior</span><span> = </span></code><ol><li id="type-dir_behavior.Index" class="def variant constructor anchored"><a href="#type-dir_behavior.Index" class="anchor"></a><code><span>| </span><span><span class="constructor">Index</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Redirect to index.html if present, else fails.</p><span class="comment-delim">*)</span></div></li><li id="type-dir_behavior.Lists" class="def variant constructor anchored"><a href="#type-dir_behavior.Lists" class="anchor"></a><code><span>| </span><span><span class="constructor">Lists</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Lists content of directory. Be careful of security implications.</p><span class="comment-delim">*)</span></div></li><li id="type-dir_behavior.Index_or_lists" class="def variant constructor anchored"><a href="#type-dir_behavior.Index_or_lists" class="anchor"></a><code><span>| </span><span><span class="constructor">Index_or_lists</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Redirect to index.html if present and lists content otherwise. This is useful for tilde ("~") directories and other per-user behavior, but be mindful of security implications</p><span class="comment-delim">*)</span></div></li><li id="type-dir_behavior.Forbidden" class="def variant constructor anchored"><a href="#type-dir_behavior.Forbidden" class="anchor"></a><code><span>| </span><span><span class="constructor">Forbidden</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Forbid access to directory. This is suited for serving assets, for example.</p><span class="comment-delim">*)</span></div></li></ol></div><div class="spec-doc"><p>behavior of static directory.</p><p>This controls what happens when the user requests the path to a directory rather than a file.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-hidden"><a href="#type-hidden" class="anchor"></a><code><span><span class="keyword">type</span> hidden</span></code></div><div class="spec-doc"><p>Type used to prevent users from building a config directly. Use <a href="#val-default_config"><code>default_config</code></a> or <a href="#val-config"><code>config</code></a> instead.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-config"><a href="#type-config" class="anchor"></a><code><span><span class="keyword">type</span> config</span><span> = </span><span>{</span></code><ol><li id="type-config.download" class="def record field anchored"><a href="#type-config.download" class="anchor"></a><code><span><span class="keyword">mutable</span> download : bool;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Is downloading files allowed?</p><span class="comment-delim">*)</span></div></li><li id="type-config.dir_behavior" class="def record field anchored"><a href="#type-config.dir_behavior" class="anchor"></a><code><span><span class="keyword">mutable</span> dir_behavior : <a href="#type-dir_behavior">dir_behavior</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Behavior when serving a directory and not a file</p><span class="comment-delim">*)</span></div></li><li id="type-config.delete" class="def record field anchored"><a href="#type-config.delete" class="anchor"></a><code><span><span class="keyword">mutable</span> delete : bool;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Is deleting a file allowed? (with method DELETE)</p><span class="comment-delim">*)</span></div></li><li id="type-config.upload" class="def record field anchored"><a href="#type-config.upload" class="anchor"></a><code><span><span class="keyword">mutable</span> upload : bool;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Is uploading a file allowed? (with method PUT)</p><span class="comment-delim">*)</span></div></li><li id="type-config.max_upload_size" class="def record field anchored"><a href="#type-config.max_upload_size" class="anchor"></a><code><span><span class="keyword">mutable</span> max_upload_size : int;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>If <a href="#type-config.upload"><code>upload</code></a> is true, this is the maximum size in bytes for uploaded files.</p><span class="comment-delim">*)</span></div></li><li id="type-config._rest" class="def record field anchored"><a href="#type-config._rest" class="anchor"></a><code><span>_rest : <a href="#type-hidden">hidden</a>;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Just ignore this field.</p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>configuration for static file handlers. This might get more fields over time.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-default_config"><a href="#val-default_config" class="anchor"></a><code><span><span class="keyword">val</span> default_config : <span>unit <span class="arrow">-></span></span> <a href="#type-config">config</a></span></code></div><div class="spec-doc"><p>default configuration: <code> { download=true ; dir_behavior=Forbidden ; delete=false ; upload=false ; max_upload_size = 10 * 1024 * 1024 }</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-config"><a href="#val-config" class="anchor"></a><code><span><span class="keyword">val</span> config :
|
||
<span><span class="optlabel">?download</span>:bool <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?dir_behavior</span>:<a href="#type-dir_behavior">dir_behavior</a> <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?delete</span>:bool <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?upload</span>:bool <span class="arrow">-></span></span>
|
||
<span><span class="optlabel">?max_upload_size</span>:int <span class="arrow">-></span></span>
|
||
<span>unit <span class="arrow">-></span></span>
|
||
<a href="#type-config">config</a></span></code></div><div class="spec-doc"><p>Build a config from <a href="#val-default_config"><code>default_config</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_dir_path"><a href="#val-add_dir_path" class="anchor"></a><code><span><span class="keyword">val</span> add_dir_path :
|
||
<span><span class="label">config</span>:<a href="#type-config">config</a> <span class="arrow">-></span></span>
|
||
<span><span class="label">dir</span>:string <span class="arrow">-></span></span>
|
||
<span><span class="label">prefix</span>:string <span class="arrow">-></span></span>
|
||
<span><a href="../../Tiny_httpd_core/Server/index.html#type-t">Tiny_httpd_core.Server.t</a> <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p><code>add_dirpath ~config ~dir ~prefix server</code> adds route handle to the <code>server</code> to serve static files in <code>dir</code> when url starts with <code>prefix</code>, using the given configuration <code>config</code>.</p></div></div><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-VFS"><a href="#module-type-VFS" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-VFS/index.html">VFS</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Virtual file system.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-vfs_of_dir"><a href="#val-vfs_of_dir" class="anchor"></a><code><span><span class="keyword">val</span> vfs_of_dir : <span>string <span class="arrow">-></span></span> <span>(<span class="keyword">module</span> <a href="module-type-VFS/index.html">VFS</a>)</span></span></code></div><div class="spec-doc"><p><code>vfs_of_dir dir</code> makes a virtual file system that reads from the disk.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_vfs"><a href="#val-add_vfs" class="anchor"></a><code><span><span class="keyword">val</span> add_vfs :
|
||
<span><span class="label">config</span>:<a href="#type-config">config</a> <span class="arrow">-></span></span>
|
||
<span><span class="label">vfs</span>:<span>(<span class="keyword">module</span> <a href="module-type-VFS/index.html">VFS</a>)</span> <span class="arrow">-></span></span>
|
||
<span><span class="label">prefix</span>:string <span class="arrow">-></span></span>
|
||
<span><a href="../../Tiny_httpd_core/Server/index.html#type-t">Tiny_httpd_core.Server.t</a> <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p>Similar to <a href="#val-add_dir_path"><code>add_dir_path</code></a> but using a virtual file system instead.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Embedded_fs"><a href="#module-Embedded_fs" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Embedded_fs/index.html">Embedded_fs</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>An embedded file system, as a list of files with (relative) paths. This is useful in combination with the "tiny-httpd-mkfs" tool, which embeds the files it's given into a OCaml module.</p></div></div></div></body></html>
|