webfs is a simple http server for mostly static content. You can use it to serve the content of a ftp server via http for example.
It is also nice to export some files the quick way by starting a http server in a few seconds, without editing some config file first.
It uses sendfile() and knows how to use sendfile on linux and FreeBSD. Adding other systems should'nt be difficuilt.
There is some sendfile emulation code which uses read()+write() and a userland bounce buffer, this allows to compile and use webfs on systems without sendfile() too.
Recent versions also got limited CGI support (GET requests only) and optional SSL support.
Here are some key features of "webfs":
· single process: select() + non-blocking I/O.
· trimmed to use as few system calls as possible per request.
· use sendfile to avoid copying data to userspace.
· optional thread support. Every thread has its own select loop then (compile time option, off by default, edit the Makefile to turn it on).
· automatically generates directory listings when asked for a directory (check for index.html available as option), caches the listings.
· no config file, just a few switches. Try "webfsd -h" for a list, check the man page for a more indepth description.
· Uses /etc/mime.types to map file extentions to mime/types.
· Uses normal unix access rights, it will deliver every regular file it is able to open for reading. If you want it to serve public-readable files only, make sure it runs as nobody/nogroup.
· supports keep-alive and pipelined requests.
· serves byte ranges.
· supports virtual hosts.
· supports ipv6.
· optional logging in common log file format.
· optional error logging (to syslog / stderr).
· limited CGI support (GET requests only).
· optional SSL support.
What's New in This Release:
· large file support.
· s/sprintf/snprintf/ in some places.
· changed timestamp handling, webfs doesn't attempt to parse them any more but does a strcmp of rfc1123 dates.
· access log uses local time not GMT now.
· some ssl/cgi cleanups.
· misc fixes.