weborf - Minimal webserver
Weborf is a minimal webserver. Also has a limited support for
webdav. This manual page documents Weborf's command-line parameters.
Weborf is released under the GNU General Public License version
3.
- -b, --basedir
- Must be followed by a valid directory. Weborf will use this directory as
root directory, and won't send files located in parent dirs. But it is
still possible for server-side scripts to read contents located anywhere
on the filesystem. Links are also a workaround to exit from the base
directory.
- -a, --auth
- Must be followed by a unix socket listened by a program who will handle
authentication. See the website for more details.
- -c, --cgi
- Must be followed by a list (separated with commas and without spaces) of
CGI formats and the binary to execute that format. For example:
.php,/usr/bin/php-cgi,.sh,/usr/bin/sh-cgi In /etc/weborf.conf there is a
'cgi' directive, corresponding to this option. It is used when launching
weborf as SystemV daemon.
- -C, --cache
- Must be followed by a directory that will be used to store cached files.
To flush the cache (empty that directory) you must send SIGUSR2 to the
process. It is advised to flush the cache on reboot (manually or with
kill) because some items might be invalid after a reboot but weborf would
not know that.
- -T, --inetd
- Must be specified when using weborf with inetd or xinetd. It will be still
necessary to specify the used port, to pass the correct value to the CGI
scripts. The -u directive will be ignored. Daemon -d mode should not be
used.
- -t, --tar
- If used, instead of sending directory listing when requesting a directory,
weborf will send a tar.gz file with the content of that directory. It is
used mainly to share files and preserving their permissions. It cannot be
used together with https.
- -x, --noexec
- When used, weborf will send scripts as if they were normal files instead
of executing them and sending their output.
- -m, --mime
- When used, weborf will send the Content-Type header. It is strongly
advised to use it when using weborf as production server because some
browsers rely on this field. This value will not affect the CGI pages.
- -i, --ip
- Must be followed by a valid IP address (v6 or v4, depending on how weborf
was compiled. Run weborf -h to know it), and weborf will accept only
connections directed to that specific IP. If the IP address provided isn't
used by a network device on the host, weborf will terminate. By default
weborf listens to all IP addresses on the local host.
- -k, --caps
- Shows some compile-time options in a machine-readable format.
- -p, --port
- Must be followed by a valid port number (between 1 and 65535), and weborf
will listen to incoming connection on the specified port. If the port is
already used weborf will terminate. To use low port numbers (less than
1024) it is necessary to execute the process as root. Thus it isn't a good
idea to run a webserver with root privileges, so it is possible to specify
another user.
- -S, --cert
- Path to the SSL certificate. Enables https. Requires a key to be passed as
well.
- -K, --key
- Path to the SSL key. Enables https. Requires a certificate to be passed as
well.
- -V, --virtual
- Enables weborf to use virtualhosts. The basedir supplied with -b will be
the default one (will be used if the requested host is unknown). Every
virtualhost must be in the form host[:port]=basedir. The port must be
specified if the port used is different than 80. And the basedir must end
with a /. To separate many virtualhosts, use a comma, and avoid spaces. To
make weborf use different virtualhosts on different ports, it will be
necessary to launch many weborf's processes.
- -I, --index
- Must be followed by a list (separated with commas and without spaces) of
index files. Weborf will try to load an index file following the order
they're listed, and if none is found it will list the content of the
directory. In /etc/weborf.conf there is an 'indexes' directive,
corresponding to this option. It is used when launching weborf as SystemV
daemon.
- -u, --uid
- Must be followed by a valid uid, different from 0. Weborf will use this
user to do his work, but will bind to the network port with the previous
user. This mechanism is meant to let users execute it as root and use port
80, and then let it run without root privileges.
- -g, --gid
- Must be followed by a valid gid, different from 0. Weborf will use this
user to do his work, but will bind to the network port before changing.
- -d
- Runs weborf as a daemon. It will not terminate when its father process
terminates, and it will leave the shell free to receive commands.
Weborf is able to send dynamically generated pages using php-cgi
(if installed). When a filename ends with ".php", weborf will use
php to execute this file before sending it to the client. The -c switch will
override the default behavior. It is also possible to create scritps or
binaries in other languages, just read rfc3875 to know how to handle
parameters.
- 0
- Normal termination occurred after a signal, a daemonization or a print
version and exit or so on...
- 1
- Basedir is not a directory
- 2
- Invalid IP address
- 3
- Port already in use
- 4
- Invalid port number
- 5
- Authentication socket doesn't exist or is not a unix socket
- 6
- Too many indexes provided as parameter to -I or to -c. Increasing
MAXINDEXCOUNT in the file options.h and recompiling can solve the problem.
But providing a reasonable amount of index file names would be a better
solution.
- 7
- Unable to allocate memory
- 9
- Unable to change UID
- 10
- Error with cache directory
- 19
- Invalid parameters on command line
- SIGUSR1
- Prints the internal status of the socket's queue and threads on the
standard output
http://ltworf.github.io/weborf/
Salvo "LtWorf" Tomaselli <tiposchi@tiscali.it>
Salvo Rinaldi <salvin@anche.no>