net.http.file #
net.http.file
file.serve serves static files from its configured folder. Requests may access that folder and its descendants after resolving the requested path. Paths outside the folder return HTTP 403, including sibling folders with a shared name prefix and symlinks whose targets are outside the served folder. Symlinks that resolve inside the folder remain accessible. The same containment check applies to the configured index file for directory requests.
fn serve #
fn serve(params StaticServeParams)
serve will start a static files web server.
The most common usage is the following: v -e 'import net.http.file; file.serve()' will listen for http requests on port 4001 by default, and serve all the files in the current folder.
Another example: v -e 'import net.http.file; file.serve(folder: "/tmp")' will serve all files inside the /tmp folder.
Another example: v -e 'import net.http.file; file.serve(folder: "~/Projects", on: ":5002")' will expose all the files inside the ~/Projects folder, on http://localhost:5002/ .
struct Entity #
struct Entity {
os.FileInfo
path string
mod_time time.Time
url string
fname string
}
struct StaticServeParams #
struct StaticServeParams {
pub mut:
folder string = $d('http_folder', '.') // The folder, that will be used as a base for serving all static resources; If it was /tmp, then: http://localhost:4001/x.txt => /tmp/x.txt . Customize with `-d http_folder=vlib/_docs`.
index_file string = $d('http_index_file', 'index.html') // A request for http://localhost:4001/ will map to `index.html`, if that file is present.
auto_index bool = $d('http_auto_index', true) // when an index_file is *not* present, a request for http://localhost:4001/ will list automatically all files in the folder.
on string = $d('http_on', 'localhost:4001') // on which address:port to listen for http requests.
filter_myexe bool = true // whether to filter the name of the static file executable from the automatic folder listings for / . Useful with `v -e 'import net.http.file; file.serve()'`
workers int = runtime.nr_jobs() // how many worker threads to use for serving the responses, by default it is limited to the number of available cores; can be controlled with setting VJOBS
shutdown_after time.Duration = time.infinite // after this time has passed, the webserver will gracefully shutdown on its own
}